Acceptance Threshold 

0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

Offer 0 
10 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
Offer 1 
9 
9 
0 
0 
0 
0 
0 
0 
0 
0 
0 
Offer 2 
8 
8 
8 
0 
0 
0 
0 
0 
0 
0 
0 
Offer 3 
7 
7 
7 
7 
0 
0 
0 
0 
0 
0 
0 
Offer 4 
6 
6 
6 
6 
6 
0 
0 
0 
0 
0 
0 
Offer 5 
5 
5 
5 
5 
5 
5 
0 
0 
0 
0 
0 
Offer 6 
4 
4 
4 
4 
4 
4 
4 
0 
0 
0 
0 
Offer 7 
3 
3 
3 
3 
3 
3 
3 
3 
0 
0 
0 
Offer 8 
2 
2 
2 
2 
2 
2 
2 
2 
2 
0 
0 
Offer 9 
1 
1 
1 
1 
1 
1 
1 
1 
1 
1 
0 
Offer 10 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
Offer 

0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

Accept >= 0 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
Accept >= 1 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
Accept >= 2 
0 
0 
2 
3 
4 
5 
6 
7 
8 
9 
10 
Accept >= 3 
0 
0 
0 
3 
4 
5 
6 
7 
8 
9 
10 
Accept >= 4 
0 
0 
0 
0 
4 
5 
6 
7 
8 
9 
10 
Accept >= 5 
0 
0 
0 
0 
0 
5 
6 
7 
8 
9 
10 
Accept >= 6 
0 
0 
0 
0 
0 
0 
6 
7 
8 
9 
10 
Accept >= 7 
0 
0 
0 
0 
0 
0 
0 
7 
8 
9 
10 
Accept >= 8 
0 
0 
0 
0 
0 
0 
0 
0 
8 
9 
10 
Accept >= 9 
0 
0 
0 
0 
0 
0 
0 
0 
0 
9 
10 
Accept >= 10 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
10 
g = new Game(11);Now define a custom payoff matrix for the ultimatum proposers:
SetGame(g);
proposer_payoffs = new PayoffMatrix(11);and then define a custom payoff matrix for the ultimatum receivers:
for (i=0; i<11; i++) {
for (j=0; j<11; j++) {
if (i >= j)
proposer_payoffs.setPayoff( i, j, 10i );
else
proposer_payoffs.setPayoff( i, j, 0);
}
};
receiver_payoffs = new PayoffMatrix(11);Create a population consisting of 30 individuals partitioned into two groups (subpopulations):
for (i=0; i<11; i++) {
for (j=0; j<11; j++) {
if (i <= j)
receiver_payoffs.setPayoff( i, j, j);
else
receiver_payoffs.setPayoff( i, j, 0);
}
};
The resulting graph should look something like the following:BipartiteGraph(30);
Randomly wire the left subgroup to the right. (The third argument to WireRandomly specifies the maximum number of wires to add to each member on the left.) The interaction neighborhoods of all left subgroup members will consist solely of members of the right subgroup, and vice versa.AddNeighborsTo( InteractionNeighborhood );
The network should look something like the following.WireRandomly( Left, Right, 2);
This will give all individuals a nonempty interaction neighborhood:WireRandomly( Right, Left, 2);
Create the update neighbors for the left and right subgroups. Wiring people in the left subgroup to the left subgroup gives the desired effect: each member of the left subgroup interacts with members of the right subgroup, and each member of the left subgroup updates (changes his strategy) based on the performance of members in the left subgroup.AddNeighborsTo( UpdateNeighborhood );
At this point, the model should look something like the following:WireRandomly( Left, Left, 2);
WireRandomly( Right, Right, 2);
SetPayoffMatrixFor( Left, proposer_payoffs );This command sets the payoff matrix for each member of the left subgroup to proposer_payoffs and the payoff matrix for each member of the right subgroup to receiver_payoffs.
SetPayoffMatrixFor( Right, receiver_payoffs);
(where N is replaced by the desired population size).Binmore( N );