[EM] Simulation of political identity space in voting
Brian Olson
bolson at bolson.org
Tue Dec 12 12:41:55 PST 2006
On Dec 12, 2006, at 9:55 AM, raphfrk at netscape.net wrote:
> From: bql at bolson.org
> > Mostly I've independently verified the results, but I've added my
> > favorite pet method, Instant Runoff Normalized Ratings (IRNR) into
> > the mix.
>
> When you say you average results, does that mean you mix the colour ?
Yes. If the elections at one pixel don't all go the same way the
colors of the winning choices are mixed proportionally to their
number of wins.
> How do your voters vote ?
>
> I assume it is something like:
>
> Utility = 1/distance ?
Yup. I've now added that to the page.
> Max Social Utility: pick candidate with highest utilty
highest total global utility, yes
> Pick One: Pick nearest
>
> IRV: Pick in order of distance
>
> IRNR: Pick in order of distance (do you have link to count rules?)
Being a ratings method, it's based on the 1/r utility.
http://bolson.org/voting/methods.html#IRNR
> Condorcet: Pick in order of distance
>
> Rating Summation: Rating = utility ? (Range)
> Are votes capped, if not then won't that give same as max utility ?
Yeah, given that everyone's voting honestly it's effectively the same
summation as finding the global utility. But it's separately
implemented code. I think it's worth running as a check.
> Borda: Pick in order of distance
>
> > This method is great because it makes behaviors of the election
> > method readily apparent visually. I used to claim that IRNR would be
> > free of IRV's oddities because IRNR considered the whole ballot and
> > used continuous ratings. Someone here cleverly found a counter case,
> > but graphically it jumps out of the picture that IRNR does have
> > irregularities. On the plus side, they're much smaller than IRV's
> > problems. :-)
>
> What would be cool would be if you re-ran the sims with strategic
> voting.
Simulating polling and what voters do about that is hard and I
haven't settled on a method that seems entirely right to me. Some of
what you say will probably be like what it should be.
> Plurality -- run poll and then everyone votes for one of the top 2 in
> the poll. I am not sure this is accurate though.
>
> What about
> 2 candidates are selected as the favourites (same 2 for entire run)
>
> Take a poll
> Pick favourite of the top 2 unless,
> the utility of both the top 2 is less than X, then pick favourite
>
> In election
> Vote for your favourite of the top 2 candidates in the poll
>
> This models the benefit of being one of the main party nominees.
>
> Another option is to keep rerunning the election until the winner
> is stable ... but that might be cyclic.
>
> IRV -- run poll and rank favourite of top 2 first and least
> favourite of
> top 2 last, rest honest. Not sure if that is actually what is
> strategic
>
> IRNR: Not sure
>
> Condorcet:
>
> Range/Rating Summation:
> - Rate favorite at max and least favourite at win and linear
> interpolate rest
> - Use approval strategy (give max to favorite of top 2 and min to
> other of top 2)
>
> Borda:
>
> > I understand that most of you aren't computer scientists and
> quick to
> > program up new tests, but I'm excited about this testing right now
> > and if you'll just implement your favorite election method in _some_
> > language, C, C++, java, javascript, perl, python, heck I'll even
> > accept PHP, LISP or FORTRAN, I'll translate it and fit it into the
> > test harness.
> >
>
> There aren't probably that many functions.
>
> You need 1 that converts a candidate/utility list to a vote and 1
> that converts a list of votes into a result.
>
> This allows people to code voting strategies (by changing the utility
> to vote function).
>
> In theory the vote would be defined by the person who submits the
> voting method.
This is the key part of the C++ interface for implementing a new
election method in my simulation framework.
/* use these */
class Voter {
public:
float getPref( int candidateIndex );
};
class VoterArray {
public:
Voter& operator[]( int voterIndex );
};
/* Implement a subclass of this */
class VotingSystem {
public:
virtual void init( const char** envp );
/* return winner in winnerArray[0], second place in [1], and so on */
virtual void runElection( int* winnerArary, const VoterArray& they );
virtual ~VotingSystem();
};
Details here:
http://bolson.org/voting/sim_one_seat/Voter.h
http://bolson.org/voting/sim_one_seat/VotingSystem.h
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.electorama.com/pipermail/election-methods-electorama.com/attachments/20061212/8c73f86d/attachment-0003.htm>
More information about the Election-Methods
mailing list