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><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><br></div><div>subroutine recalculate totals:</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">

<div>for each candidate:</div><blockquote class="webkit-indent-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 class="webkit-indent-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 class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">

<div>for each ballot B which was delegated to C:</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>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 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;">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 class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div>remove C from set of uneliminated candidates</div></blockquote><div>

<blockquote class="webkit-indent-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 class="webkit-indent-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 class="webkit-indent-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 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>Main procedure:<blockquote class="webkit-indent-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 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>
<div>
<div>while there are any candidates with T(C) > D:</div></div></div></blockquote></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;">

<blockquote class="webkit-indent-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 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;"><blockquote class="webkit-indent-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 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><br><br></blockquote></blockquote></blockquote><div><div><br></div></div></div></div></div>