How to incorporate STAR's runoff into a cardinal PR method?

Using STAR in a PR method seems guaranteed to require parties to run at least one more candidate than the number of seats they’re expected to win. In a 5-seat district, where Party A is the minority party and expects to win 2 seats, it should have 3 candidates, so that for the final seat, Party B, the majority party, doesn’t steal that seat in the runoff.

One way to counter this might be to weight the runoff towards the ballots that are less satisfied i.e. a ballot that is only 1/5 points satisfied should have more of a vote in the runoff than a ballot that is 4/5 points satisfied. Taken to the extreme, this would just end up being Score Voting, so maybe a compromise can be found. But is it even desirable to have a runoff in PR?

This is one earlier attempt:

but it seems too complex to be viable. Maybe I’m just not understanding it though.

Also, would including a runoff make the PR method more viable? An appeal to majority rule is powerful, but complexity is a factor.

In fact, one way to do a STAR-slightly PR method would be to just run STAR multiple times, but each time, the votes in the runoff are reweighted using the Hare Quota. So for example, in a 5-seat district, the majority wins the runoff for the first seat, and then all majority ballots lose 20% of their runoff vote power. Repeat for each seat. It’s not PR, but it allows for some minority influence over the seats won by the majority.

I am biased against STAR because it is not clone-resistant.

I have been looking at PR methods for a while. Back in 2011 I considered a quota-based range reweighted voting, but found it unsatisfactory.

Recently I have adapted my Approval Sorted Margins code into a Ranked Score Sorted Margins algorithm, and applied it to Droop proportional Quota-based Range Reweighted Voting.

In other words, an initial ranking is seeded using total score sums from highest to lowest, then any pairs that are out of order pairwise are considered, and the pair with the smallest score margin is reversed. This scan is repeated until no pairs in the ranking are out of order pairwise.

After a winner is found, a Droop quota is removed from the ballot weights, by reweighting each ballot giving the winner a rating “r” with the factor

F = 1 - (r/Maxscore) * (Quota / (ScoreSum/Maxscore))

If the (ScoreSum/Maxscore) is less than a quota, a backup score is used by successively raising ratings lower than max to max until the winner’s score exceeds the quota or runs out of ratings (and F == 0). In practice, one doesn’t have to do this until the very last seat in factional elections.

When (ScoreSum/Maxscore) is greater than the Quota, the method is monotonic.

The RSSM method ensures clone-resistance, so a minority party with 2 quotas of votes will be able to get 2 seats with only 2 candidates.

See https://github.com/dodecatheon/approval-sorted-margins for code. The PR code is rssmqrv.py.

The rssmqrv.py code will do another iteration to find a runner-up if the final seat does not have a full quota. For an example with clones, try

rssmqrv.py -vvv -i examples/new_sample.csv

For a 9-seat multiwinner example, try

rssmqrv.py -vv -m 9 -i examples/june2011.csv