Looking back at the system I proposed, although it's quite simple to me, I understand that it's probably too complex to explain to voters. So, here's two compromise fixes, which make it simpler without sacrificing too much quality.<div>
<br></div><div>1. Use "unique votes" (that is, divide ballot weights by the number of uneliminated candidates they approve) instead of also keeping track of "total votes". This will mean more eliminations before anyone gets to a Droop quota, but in general it will not have too great an impact on results.</div>
<div><br></div><div>2. Instead of reweighting ballots to "use up" a Droop quota, simply randomly draw and eliminate a Droop quota of ballots. The results are probabilistically the same, and there's less math involved. If you want to reduce the chance of random aberrations, you can rerun the election until the same full slate has won twice (or indeed, N more times than any other full slate).</div>
<div><br></div><div>So, here's the simpler procedure:</div><div><br></div><div>While there are more uneliminated candidates than empty seats:</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div>Divide each ballot by the number of uneliminated candidates it approves</div><div>If there are any candidates with more than a Droop quota:</div></blockquote><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div>Elect the one with the highest score (previously "unique ballots")</div><div>Discard a Droop quota of randomly-chosen ballots which approve the elected candidate, starting with the ones delegated to that candidate</div>
<div>Assign that candidates pre-declared approvals on any undiscarded delegated ballots for that candidate</div></blockquote>Otherwise:<br></blockquote><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">Eliminate the candidate with the lowest score<br><meta http-equiv="content-type" content="text/html; charset=utf-8">Assign that candidates pre-declared approvals on any delegated ballots for that candidate<br>
</blockquote></blockquote>Elect all remaining candidates to fill the seats.<div><br></div><div><br></div><div>....</div><div><br></div><div>Strategically, delegating is not the same as approving the same list. Delegated ballots are at a disadvantage because they are discarded first; but they are at an advantage because they are not divided when deciding whom to eliminate. I'd say on the whole, there is no clear incentive whether to delegate or not, so most voters will just make this decision "honestly" based on whether they agree with their favorite candidate's predeclared approvals.</div>
<div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><br></blockquote>
</blockquote><div><div><br><div class="gmail_quote">2011/7/21 Jameson Quinn <span dir="ltr"><<a href="mailto:jameson.quinn@gmail.com">jameson.quinn@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
The intent is to make a proportional version of SODA, which preserves SODA's principal advantages. These are, as I see them: (1) ballot simplicity, (2) relative counting simplicity, (3) good results, and (4) acceptability from the point of view of an existing plurality-winner politician.<div>
<br></div><div>The resulting system will not reduce to SODA in the single-winner case, although it will come close. The tactical concerns in an "order of play" system are too different between mulit- and single-winner. For instance, single-winner has no free-rider strategy.</div>
<div><br></div><div>So here's the base system. As with SODA, ballots are approval-style, with bullet votes counting as delegated to the candidate for further use. The Droop quota is used and reweighting is "quota-style".</div>
<div><br></div><div>Unlike SODA, candidates pre-declare, not a delegation ranking, but an approval-style ballot for delegation. One can imagine that many candidates would simply approve all "nominated" members of their party.</div>
<div><br></div><div>The election proceeds by first electing candidates with a Droop quota and re-assigning overvotes, from most "total votes" on down; then eliminating candidates and transferring, from least "unique votes" up, electing any candidates who attain a Droop quota during the transfers; and finally, electing all un-eliminated candidates when there are only enough to fill the remaining seats. The pseudocode is at the end of this message; and it's simpler than it looks at first glance. Basically, it defines "total votes" and "unique votes", and implements the procedure I just explained in one (compound) sentence.</div>
<div><br></div><div>This system, I believe, satisfies my first three criteria for a good PR-SODA. To make it satisfy the fourth — acceptability from the point of view of an existing plurality-winner politician — I would simply redesign the ballots by district. All candidates from the district where the ballot is cast would be listed first, in large type; all candidates from the closest two other districts (by some simple metric - it doesn't matter) would be listed later, in smaller type; and all other candidates would be available only as write-ins.</div>
<div><br></div><div>Why would this be acceptable to existing politicians? Well, if you assume "no changes to voting patterns", and a state gerrymandered "fairly" such that results are already two-party proportional, it would give the same results as districted FPTP. That is, if all voters vote for one of two "nominated" major-party candidates from their district, and all candidates approve the one "nominated" candidate per district from their party, then this system is just a proportional adjustment to FPTP.</div>
<div><br></div><div>It would be important, in this system, that both main parties and third parties would allow "fusion" main-party candidates. If not, a fringe party could "spoil" the election of too many sympathetic major-party candidates, and thus counterproductively push the major party (although not the legislature) away from their position. This is a matter of intraparty rules, not election rules, but I think it could be worked out satisfactorily.</div>
<div><br></div><div>JQ</div><div><br></div><div>ps. Here's the pseudocode I promised:</div><div><br></div><div>subroutine recalculate totals:</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>for each candidate:</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>total votes T(C) <- sum(ballots approving candidate * ballot weight)</div><div>delegated votes D(C) <- sum(ballots delegating to candidate * ballot weight)</div>
<div>unique votes U(C) <- sum(ballots approving candidate * ballot weight / number of uneliminated candidates approved on the ballot)</div></blockquote></blockquote>subroutine elect C and reweight ballots:<blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>add C to elected candidates, remove C from uneliminated candidates, reduce remaining seats by 1</div></blockquote><div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>for each ballot B which was delegated to C:</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>ballot now approves of all candidates approved by C</div>ballot weight W(B) <- W(B) * min(0, (D(C)-d)/D(C)) [that is, use up delegated votes first]</blockquote>for each ballot B approving but not delegating to C:<br>
</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">ballot weight W(B) <- W(B) * min(0, (T(C) - max(0, d-D(C)))/T(C)) [that is, use up the remainder of the Droop quota which wasn't used up in delegated votes]<br>
</blockquote></blockquote>subroutine eliminate C:<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>remove C from set of uneliminated candidates</div></blockquote><div>
<blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:40px;border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:none;border-width:initial;border-color:initial;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px">
<div>for each ballot B which was delegated to C:</div></blockquote><blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:40px;border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:none;border-width:initial;border-color:initial;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px">
<blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:40px;border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:none;border-width:initial;border-color:initial;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px">
<div>ballot now approves of all candidates approved by C</div></blockquote></blockquote><div><br><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<br></blockquote></blockquote>Main procedure:<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>Droop Quota d <- V / (N+1) [this is really the non-integer whatstheirname quota, but whatever]</div>
<div>All ballots start with weight W(B) <- 1</div><div>uneliminated canidates <- all candidates</div><div>recalculate totals</div><div><div>while there are more uneliminated candidates than remaining seats:</div></div>
</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div>
<div>while there are any candidates with T(C) > D:</div></div></div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>elect candidate with highest T(C) and reweight ballots</div></blockquote></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">recalculate totals<br>
</blockquote>eliminate candidate with lowest U(C)<br></blockquote>elect all uneliminated candidates<br><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<br><br><br></blockquote></blockquote></blockquote><div><div><br></div></div></div></div></div>
</blockquote></div><br></div></div></div>