[EM] Proportional Representation from Ratings Ballots

Brian Olson bql at bolson.org
Thu Nov 5 05:37:12 PST 2009


There's been recent discussion of STV and multi-seat methods, and  
wanted to chime in again with my contribution.

I have a pet election method which I think is the greatest thing ever  
and I call it "Instant Runoff Normalized Ratings". It shows favorably  
in opinion-space diagrams*, simulated expected utility, and strategic  
voting resistance. (* It has runoff discontinuities, but they're much  
smaller than IRV due to using ratings, floating point math, and  
looking at the whole ballot at once instead of just first-choice-votes.)

IRNR can be extended to proportional elections, and the algorithm goes  
like this:

0. Ballots accept ratings >=0 for all choices. Each choice gets a  
global 'weight' of 1.0
1. Sum up normalized weighted ratings ballots. Normalized means that  
ratings for choices a,b,c,d scaled so that sqrt(a^2 + b^2 + c^2 + d^2)  
== 1. Before normalization, each rating is multiplied by the global  
weight for the choice.
2. If some choices sum up over the quota, decrease the global weight  
for them such that they would sum up equal to the quota. Goto 1.
3. If not enough choices sum up equal to the quota, disqualify lowest  
sum choice. Set their weight to 0.0. (No vote will go to them but be  
redistributed at normalization to voter's other preferences.) Goto 1.

Eventually there will be enough winning choices with sum >= quota,  
seats filled, election done.

If I vote highly for a choice that gets double the needed quota, about  
half of my vote is consumed by that choice and the other half can go  
to my other choices.

I have some opinion-space diagrams of this that I need to post. I  
think they compare favorably STV. Expected utility simulation should  
be forthcoming too, but I may need to do more to extend my simulation  
code for multi-seat methods to get that finished.

I think it's a good method that will give good results. On the down  
side, it's kinda complicated, especially some of the implementation  
details of computing with floating point numbers and allowing for some  
small epsilon of roundoff error.

You can see it implemented here in C++
http://code.google.com/p/voteutil/source/browse/sim_one_seat/IRNRP.cpp




More information about the Election-Methods mailing list