My way Or The Highway

D. Joyce, J. Kennison, N. Thompson
Clark University, March, 2005


Details of the daily agenda for the herd.

Each day is the same for the herd. There are several stages
  1. pair off the animals
  2. assign vitalities to the animals
  3. random births weighted according to the vitalities
  4. random deaths (irrespective of vitalities)
  5. migrations from herd to herd (in the case of Moth, but Mothstats only has one herd)
  6. dissolve pairings involving selfish animals

The state of the herd. The state of the herd at the beginning of each day is determined by a triple of three numbers  (P, Q, S)  where

Pairing off the animals. At the beginning of the day all  P + Q + S  animals will be paired, at least for the day. Since  P  of them are already paired, only  Q+ S  of them need to be assigned partners for this pairing. In this model, it turns out that the only result of the pairing that needs to be recorded is that  P  might go up and  Q  down (by the same even number) as some unpaired altruists become paired with other unpaired altruists. After the pairing,  Q  (that is, the new value of  Q) altruists are temporarily paired with selfish, and  S – Q  selfish animals are temporarily paired with other selfish ones. At the end of the day, all these temporary pairings will dissolve since it is assumed that no animal will remain paired with a selfish one.

How is this random pairing modeled? Here's the code:

    int i = unpaired;   // i and j indicate those yet to pair
    int j = selfish;
    while (i>1)  
      if (Math.random() < (i-1.0)/(i-1+j)) {
        paired +=2;
        unpaired -=2;
        i -=2;
      } else {
        --i; --j;
      }

Here's a paraphrase of the code in words. One at a time, go through each of the unpaired altruists and determine whether to pair it with another unpaired altruist or an unpaired selfish. The variable  i  keeps track of the remaining unpaired altruists and the variable  j  keeps track of the remaining unpaired selfish. Now, excluding the unpaired altruist we're looking at, there are  i – 1  other unpaired altruists while there are  j  unpaired selfish, for  i – 1 + j  other remaining unpaired animals. The probability that the unpaired altruist we're looking at gets paired with another unpaired altruist is  (i – 1)/(i – 1 + j),  and the probability that it gets paired with an unpaired selfish is  j/(i – 1 + j).  In the first case, the number of paired altruists increases by 2, the number of unpaired altruists decreases by 2, and  i  decreases by 2. In the second case,  i  decreases by 1 and  j  decreases by 1.

Assigning vitalities to the animals. Now that the day's pairings are made, the vitality of each animal is set according to the pairings. Every animal is given 10 points to begin with. Then each altruist gives a benefit  b  to its partner but loses cost  c  for itself. Therefore,

Random births weighted according to the vitalities. Next, births occur at random to the animals, but weighted according to the vitalities displayed above. For instance, with the values c = 1 and b = 5, the four numbers above are 14, 9, 15, and 10, respectively. If, for example, there are only two animals, one altruist and one selfish, then the altruist has a vitality of 9 (being temporarily paired with the selfish) and the selfish has a vitality of 15 (being temporarily paired with the altruist). Then the birth probabilities will be weighted 9 to 15, so for a each birth, the probability it will go to the altruist is 9/24 while the probability it will go to the selfish is 15/24.

Now, since there are P altruists paired with altruists, Q altruists temporarily paired with selfish animals, Q selfish animals temporarily paired with altruists, and  S – Q  selfish animals temporarily paired with other selfish animals, the probability that a birth goes to an altruist can be easily computed. The total vitality of the entire herd is

(10 - c + b) (P + Q) + 10 S

while the total vitality of all the altruists is

(10 - c + b) P + (10 - c) Q,

therefore, the probability that a birth goes to an altruist is the quotient. Note that newly born altruists are unpaired.

Random deaths (irrespective of vitalities). After the births have occurred, the deaths occur. Unlike births, this model assumes that the deaths occur randomly, unweighted by vitality. Also, it assumes that the number of deaths equals the number of births so the population of the herd is the same at the beginning of each day. Note that if a partner of a paired altruist dies, then that altruist reverts to unpaired.

Migrations from herd to herd. In the Mothstats model, there is only one herd, so there are no migrations. But in the Moth model, there are a number of herds are arranged in a circle, and periodically, some animals from one herd are exchanged with animals of a neighboring herd. When that happens, any animal who migrates or whose partner migrates becomes unpaired.

Dissolving pairings involving selfish animals. At the end of each day, all the pairings involving selfish are dissolved, justifying the term "temporary pairing" used above.


My way Or The Highway: Introduction


David E. Joyce,
John Kennison,
both of the Department of Mathematics and Computer Science,
and Nicholas Thompson,
of the Frances L. Hiatt School of Psychology.
Clark University
Worcester, MA 01610