Here's another idea for PR: First use MCA ballots (Majority Choice Approval, where favorites and also approved are indicated) to get a distance between pairs of candidates. The distance between two candidates is the number of ballots on which just one of the two is neither favorite nor also approved.
Next do a cluster analysis of the candidates by one of the standard methods that yields a binary tree as output. Initialize a system for labeling each node of the tree by labeling each branch with both the number of candidates that it (the branch) leads to and the total number of "favorites" garnered by all of those candidates. One by one send each "seat" down the tree until it reaches a candidate. At each node a decision must be made. Which of the two branches will get the seat? Send the seat down the branch with the greatest "favorite" label. Then make the following label adjustments: We decrement (i.e. subtract one from) the number of candidates label, and then reduce the number of favorites label by the number of voters a seat is supposed to represent. If this last number is still positive when the candidate number reaches zero, then the remainder is transferred proportionately to the "favorite" totals of the branches of the sub-tree beginning at the other branch. If there is only one seat, then at each node it goes according to the majority in the sub-tree for which that node is the root. If any candidate is majority favorite, then that candidate will win the one seat. If the clusters are arranged along a line without overlapping, then the median voter candidate on that line will get the seat. So the method picks the Condorcet winner for one dimensional issue spaces. ---- Election-Methods mailing list - see http://electorama.com/em for list info