home

Documentation for RPVote 0.95

RPVote comes with no warranty. It may not work. See the notice at the bottom of this document.

This manual is divided into two sections. Section 1 briefly introduces Ranked Pairs voting, and why you might want to use this program. Section 2 tells you how to operate the program.

What is RPVote?

Background

Often, organizations hold votes to make decisions. The simplest way, if for each person to vote for one option, the option with the most votes wins. However, there are problems related to this method, so it is sometimes suggested that voters should be allowed to enter a complete ranking of candidates, showing their second and third preference and so on.

It isn't obvious how these kinds of votes should be tabulated, however. Lots of methods have been suggested. In 1785, the Marquis de Condorcet suggested that if you consider the candidates two at a time, by looking at the rankings, you can determine which is preferred by more people to which. If one candidate is preferred by a majority two each other candidate in these comparisons, then he suggested that candidate should win. It is called the Condorcet winner, after him.

Unfortunately, as Condorcet pointed out, such a candidate need not exist. It is possible that each candidate has at least one defeat by one of these pairs (candidates considered two at a time). So, many people have suggested using a method that find the Condorcet winner if it exists, but finds a winner even if Condorcet's method gives no result.

Ranked Pairs

In 1987, Nicolaus Tideman invented one such method, which he called Ranked Pairs. "Pairs" because it uses the head-to-head (pairwise) comparisons of candidates. "Ranked" because these pairs are prioritized in case they conflict. Remember, each pair represents a majority preference of one candidate to another. Each of these majorities has a margin of victory. This margin is used to prioritize the pairs. For convenience, I will call a pair with a greater margin stronger than a pair with a lesser margin.

Ranked Pairs gives the ranking of the candidates that always reflects the majority preference between any two options, except in order to reflect greater majority preferences.

By "reflects" I mean that the final ranking between the particular pair of candidates agrees with the majority choice.

This method is related in: (B. T. Zavist & T.Tideman, "Complete independence of clones in the ranked pairs rule", Social choice and welfare, vol 6, 167-173, 1989)

I also describe and advocate the method at: http://www.fortunecity.com/meltingpot/harrow/124/path

If you have provide a tie-breaking ranking (as described below), RP is guaranteed to give a complete ranking as a result. If you don't, RPVote plugs on anyway, but may not give a complete ranking.

Favouring Status Quo

One interesting feature of this program, is that you can specify an SQ (Status Quo), and give it an advantage. You can make it harder to defeat than a simple majority, by specifying a minimum margin. I give more details of this procedure (which is my own, not Tideman and Zavist's), on the web site I mention above. It's in the details section.

When you do set an SQ and minimum margin, the program alters the table of margins of victory. Where the SQ has a loss or victory below this margin, it is reset as a victory of the SQ over the other candidate by the minimum margin - 1/2. So, to lose, the SQ has to be defeated by at least one candidate by the minimum margin.

Program Operation

To use the program, you use the menu (under the "File" heading) and select "Open Ballot File". The program lets you select an input file to open, and an output file for the result of the election.

The input file should be prepared already. It must be a "text" file. That means that you should either use a text editor, or be careful to save or export the document in plain text format if you are using a word processor.

Input File

The input file gives the list of ballots, and other information required by the program. Before anything else, you must give labels for the candidates. It is usually convenient to assign each option a letter of the alphabet. For example:

-cands A B C

All the commands (as opposed to ballots) start with a hyphen, as shown. You can have multiple commands on a line, but the "-cands" command must come first. The above command declares that there will be three candidates, labeled A, B, and C.

You may also want a tie-breaking ranking (as described in the first section). Just list the candidates in the appropriate order. You must list all the candidates if you provide a tie-breaker.

-tie C B A

To specify a status quo, and a minimum margin, use the "-sq" command.

-sq A 4

The margin defaults to 1 if none is specified.

You can also have comments. Any text after the "#" symbol is ignored by RPVote.

After you specify all the options you want, you can give ballots. These occur one per line.

Ballots

Here is an example ballot line.

dir A B= C > D E # comments allowed

An "=" declares that two candidates are ranked as equal by the voter. In other words, they don't express a preference between the two. If no equal sign is present, candidates are assumed to be listed in descending preference. You may use a ">" sign to express this, but one is not required. Any candidates not listed are ranked as equal to one another, but lesser than all listed candidates.

Output

First, the program gives some basic information, like the number of votes cast, and some of the options you selected.

Next, the program prints off tables. The first table gives the number of ballots in which the candidate corresponding to the row is ranked over the candidate corresponding to the column.

Then, a new table is given showing only the margins of victories. Where there is a loss, the table shows 0.

If you have specified a status quo, the program then prints the margin table, adjusted for the minimum margin given. Instead of using 1/2, it says "+" to save space. So, if the SQ rule fixes a margin to 7 1/2, this is represented as 7+. Actually, it doesn't matter what the + reprents, as long as it is more than 0 and less than 1.

If you have supplied a tie-breaker ballot, RPVote gives a complete ranking as the result.

It may be that the program can determine some results independent of a tiebreaker, in which case it produces a single output ranking as normal. Otherwise, it produces a table to compare the candidates. A "1" means that the row candidate will be ranked over the column candidate for any tiebreaker. A "0" means it will be ranked below for any tiebreaker. A "?" means that both are possible, or that the algorithm can't tell which is true.

Disclaimer of all warranty

IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.