Reweighted Range Voting (RRV) – a Proportional Representation voting method that feels like range voting

By Ivan Ryan with some contributions by Bruce R. Gilson.

This exposition by Ivan Ryan is intended to be easier to digest than our other RRV page. Enjoy.

The RRV procedure is

  1. Each voter casts a ballot rating the candidates from 0 to M
  2. Each ballot is given a weight equal to
    weight = C/(C + sum of the scores given to all elected candidates on that ballot)
  3. Sum up all the ballots using those weightings
  4. The candidate with the highest score wins and is declared elected
  5. goto (2) unless all seats are filled

The two parameters M and C are:

M = maximum rating (say 10)
C = determines how proportionality occurs:
     C = M   ⇒ Greatest divisors (d'Hondt, Jefferson) proportionality
     C = M/2 ⇒ Major fractions (Webster, Sainte-Lague) method
The C parameter mainly affects small parties.

Worked Example

As an example, assume there are 3 seats to be filled and 2 parties "A" and "B." I am going to assume C=M (it doesn't make any difference here) and the max rating is M=10. Party A puts forward three candidates A1,A2,A3, while party B runs two: B1 and B2.

I am going to assume that each voter from each party votes the same way:

60 "party A" voters:    40 "party B" voters:
A1: 10                  A1: 0
A2: 9                   A2: 0
A3: 8                   A3: 0
B1: 1                   B1: 10
B2: 0                   B2: 10

The first round is easy, you just add up all the totals:

A1: 600
A2: 540
A3: 480
B1: 460
B2: 400

A1 is the first winner, since he has the most votes.

The weights then need to be recalculated. In practice this would have to be done on a ballot by ballot basis. But since in our example everyone in each party votes the same way, here it only needs to be done once for each party.

Remembering that the formula for the weightings is

weight = C/(C+Sum of ratings given to elected candidates),

we get that

ROUND 2 BALLOT-WEIGHTS:
Party A voters get weight = 10/(10+10) = 0.5
Party B voters get weight = 10/(10+0)  = 1.0 (as they rated A1 as 0)

So round 2 uses these weighted votes:

60 @ 0.5 = 30 "party A" votes:
  A1: 10
  A2: 9
  A3: 8
  B1: 1
  B2: 0

40 @ 1.0 = 40 "party B" votes:
  A1: 0
  A2: 0
  A3: 0
  B1: 10
  B2: 10

We compute the totals (weighted sums) finding:

A2: 270
A3: 240
B1: 430
B2: 400

Observe that the deweighting of party-A voters causes the party-B choice B1 to win the 2nd round. The A's don't "deserve" as much power in the second round since they got their way in the first round. But while RRV can be interpreted as thus obeying "moral principles" it was not designed using morals. The weight formula was designed to make a proportionality theorem work. Any morality of it is merely a side effect of that.

For the third round, the weightings are calculated again using

weight = C/(C+Sum of ratings given to elected candidates),

We get that

ROUND 3 BALLOT WEIGHTS:
Party A voters get  weight = 10/(10+10+1) = 0.476 (as they rated A1 at 10 and B1 at 1)
Party B voters get  weight = 10/(10+10)   = 0.5 (as they rated B1 as 10)

So round 3 uses these weighted votes:

60 @ 0.476 = 28.6 "party A" votes:
  A1: 10
  A2: 9
  A3: 8
  B1: 1
  B2: 0

40 @ 0.5 = 20 "party B" votes
  A1: 0
  A2: 0
  A3: 0
  B1: 10
  B2: 10

The totals are:

A2: 257
A3: 229
B2: 200

So A2 wins the last round.

The final result is then that A1, A2, and B1 win.

This gives proportionality between the two parties. If we had just picked the top three range voting finishers without any reweighting, then we'd have gotten 100% party-A winners, which would have disproportionally denied representation to the 40% of the population who were B-voters.

However, if the voters didn't vote so robotically along party lines, then it would be messier.


Return to main page