Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

users can perform multiwinner polls #169

Open
mensch72 opened this issue Jul 8, 2022 · 0 comments
Open

users can perform multiwinner polls #169

mensch72 opened this issue Jul 8, 2022 · 0 comments
Assignees
Labels
angular Probably needs Angular-related skills feature A new feature or enhancement ready to implement Sufficiently detailed to start working on --> place in "Issues" svg Probably needs SVG-related skills typescript Probably needs Typescript-related skills
Milestone

Comments

@mensch72
Copy link
Collaborator

mensch72 commented Jul 8, 2022

in a multiwinner poll with k winners ("allocate k seats"), the tally is performed thus:

  1. compute effective wap: (i) if 0, all eff.waps=0. (ii) if >=k waps are >0 but <k waps are 100, the k largest waps become effectively 100; in case of ties, all with the same wap also become eff. 100. this guarantees that either 0 or >=k options are approved.
  2. the shares are computed as in the other two poll types
  3. if some shares are larger than 1/k, they are limited to 1/k from top to bottom, by transferring excess shares to other options in a process similar to STV, so that everyone's share of 1/N is divided between her k topmost approved options: start with every non-abstaining part. i having si = 1/N share left. process options x from top to bottom. sum up si over all who approve x, giving wx. if wx<=1/k, assign wx to x and set all corresponding si to 0. otherwise, assign 1/k to x and multiply all corresponding si with 1 – 1/k/wx.
  4. then choose a random offset o in [0,1/k] and order options as in poll page, X1,...,Xm. let si be the share of the ith option in this ordering, and Ci = s1 + ... + si be the cumulative share up to the ith option.
  5. then give a seat to option i iff the interval [C(i-1), ci] (which is at most 1/k long) contains one of the k numbers o, o+1/k, o+2/k, ..., o+(k-1)/k. this way option i's probability of being a winner is k*si as desired.
@mensch72 mensch72 added feature A new feature or enhancement ready to implement Sufficiently detailed to start working on --> place in "Issues" typescript Probably needs Typescript-related skills angular Probably needs Angular-related skills svg Probably needs SVG-related skills labels Jul 8, 2022
@mensch72 mensch72 added this to the First Release milestone Jul 8, 2022
@mensch72 mensch72 self-assigned this Jul 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
angular Probably needs Angular-related skills feature A new feature or enhancement ready to implement Sufficiently detailed to start working on --> place in "Issues" svg Probably needs SVG-related skills typescript Probably needs Typescript-related skills
Projects
None yet
Development

No branches or pull requests

1 participant