All current forms of party list proportional representation have each voter cast a vote for a single party. I say this is inadequate since a small party can be eliminated and hence denied any representation (this is particularly relevant if the legislature has a threshold). However, votes for a party that doesn't have sufficient support to win any seats in the legislature are simply wasted. Thus I propose an alternative method.<div>
<br></div><div>Each voter votes for as many parties as they wish in a defined order. My vote might be democrat>green>libertarian>republican or something like that.</div><div><br></div><div>Anyway, first we calculate each party's "weight". Weight is calculated simply by counting the number of times the party appears on a voter's ballot in any position (this should be reminiscent of approval voting). Each party also has a status "hopeful", "elected", or "disqualified".</div>
<div><br></div><div>Next, pick your favorite allocation method. D'Hondt, Sainte-Laguë, Largest Remainder, anything else you can think of, with or without a threshold.</div><div><br></div><div>We then use this allocation method to determine each party's mandate if everyone voted for their first preference. If every hopeful party has at least one seat, then all the hopeful parties are declared elected. If at least one hopeful party has no seats at all, the party with the lowest weight is disqualified, its votes are redistributed, and the allocation is done again with the new list of hopeful parties.</div>
<div><br></div><div>This method has some advantages over traditional systems. People would not be motivated to betray their favorite party for fear that it will lack enough support to win any seats in the legislature and hence their vote would be wasted. This method can also be slightly modified into a cardinal method, with a voter's first choice being defined as the highest rated party on their ballot remaining and weight being calculated by the arithmetic mean of a party's rating à la Range Voting. This class of voting method is probably compatible with MMP, but I haven't yet worked out the details of how that would work.</div>