Ultimatum Game - survival with offer level equal to level of rejection in agents

No preview image

1 collaborator

Rng_avatar Ronald Paul Ng (Author)

Tags

fairness - sense of fairness and survival 

"if fairness is the reason to offer a certain amount, then that amount should also be fair as the point below which to reject the offerr"

Tagged by Ronald Paul Ng over 5 years ago

Visible to everyone | Changeable by the author
Model was written in NetLogo 6.0.2 • Viewed 305 times • Downloaded 21 times • Run 0 times
Download the 'Ultimatum Game - survival with offer level equal to level of rejection in agents' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

To see whether agents which are seeded to play with random strategies in the Ultimate Game would produce results that are similar to field ovservatons, ie the average percentage of the pie that the Initiators would give is around 40%-45%, and the rejection rate of around 20% of the time (Levin 2006)

HOW IT WORKS

1000 agents will be created on setup. Each agent will be given randomly a strategy. When it is is the role of the Initiator, how much out of a hundred will if offer, and when it is the Responder, a level below which, the offer is rejected.

On setup, both offer% and rejection% are seeded by a random number function between 0 and 99, inclusive, by the code random 100.

There is a third turtle-own variable called "wealth". If the offer% by a turtle is accepted, the "wealth" is updated with "wealth" plus (100 - offer%), and the responder's "wealth" is updated with "wealth" plus offer% from the initiator. Wealth is initialised to 50 at the start, the reason for this will be made clear in the next paragraph.

Wealth is used up in order to maintain life of the agent at each round. The amount could be varied depending on the carrying-capacity of the "world". At each round, because 100 could be added to the wealth of each agent/turtle pair with each successful transaction, on average, that means with each successful transaction, 50 is added to each. For that reason, a base number of 50 is used. The final amount is adjusted by the ratio of number-of-agent/turtle divide by the carrying-capacity. If there are X number of agents, and the carrying capacity is Y, the amount deducted at each round is 50 * X / Y, therefore when X > Y, more than 50 will be deducted each time, and if X < Y, less than 50 will be deducted. The initial value of wealth being seeded with 50 is to allow some agents to survive at least the first round.

It was mentioned that the agent/turtle could could reproduce, which in the language of NetLogo is "to hatch". After an offspring is hatched, it usually has all the variables and the values of the variables of the agent/turtle from which it is hatched. The newly hatched agent/turtle does not inherit the wealth of the parent. It is given a starting wealth of 50, just like the starting wealth of all the agents/turtles at the beginning of the game. The level of offer% and rejection% will be influenced by its parent. The offer% of the newly hatche agent/turtle is determined by (offer% of the parent plus random 100) divided by 2. Similarly the rejection% is (rejection% of the parent plus random 100) divide by 2.

In this version, there are two breeds of agents/turtles. One breed, "offer%!=rejection%s", or nicknamed "different", have levels of offer% and rejection% seeded differently at setup. Another breed "offer%=rejection%" or nicknamed "same" at setup, the values of offer% and rejection% are set the same. Many a times, when a human subject is asked wby he would give 40% to 50% of his pie to the other person would reply "that feels fair". However, when they act as responders, the number, asrepresented by rejection%, below which they would reject the offer is less than what they would offer. So "fairness" is not a consideration. Having a breed of agents/turtles where the offer% is the same as rejection% will test the hypothesis that agents/turtles with offer%=rejection% will not survive in an evolutionary enviornment.

HOW TO USE IT

Use the slider to fix the starting population of agents and use the slider "carrying-capacity" to fix the carrying capacity. Then press go and watch the population chart, the mean wealth chart, the mean offer% and mean rejection%

THINGS TO NOTICE

If you let the model run, initialising the number of agents to a number less than the carrying capacity, there will be an initial dip in the population number, that number then rises and reachs an equilibrium. The mean wealth will also rise and reach an equilibrium. THe mean offer% might drop a bit and the mean rejection% will drop. The numbers are roughly in line with field findings. When the model has reached an equilibrium if you lower the carrying capacity, the population will drop and so will the rejection% number drops. Does this mean the agents have evolved to be more hungry and willing to accept even low offer? Now increase the carrying capacity to a very big number, you will notice that the rejection% number will rise, and of course so will the population number rise. Does that mean when good times are here, the agents have evolved to be more picky?

THINGS TO TRY

Try playing around with the population number and the carrying capacity and notice the effect on the offer% and rejection% numbers.

At the moment, the newly hatched agents have their offer% and rejection% modified by random 100, inheriting 50% of the parent's value plus 50% of the random value. Try observe the effect of changing the ratio of inherited value to random value.

EXTENDING THE MODEL

Have a population of agents where the offer% and rejection% are the same and see what happens. Most people in actual UG says they have decided whatever level of offer% as being fair, but when they are the Responders, they have a different level for rejection. If fairness is indeed the driving force, shouldn't offer% and rejection% be the same? Try creating a population where offer% = rejection% and observe the survival of that population of agents.

NETLOGO FEATURES

The change in the mean offer% and rejection% as a result of the changing carrying capacity to actual population numbers is an emergent phenomenon

RELATED MODELS

Scalco, A., Ceshi, A., Sartori, R., and Rubaltelli, E. :Exploring Selfish versus Altruistic Behaviors in Ultimatum Game with an Agent-Based Model. Trends in Pracical Application of Agents, Multi-Agent Systems and Sustainability. The PAAM Collection (Vol. 372, pp 1990206): Springer International Publishing.

CREDITS AND REFERENCES

Güth, W., Schmittberger, R., Schwarze, B.: An experimental analysis of ultimatum bargaining. J. Econ. Behav. Organ. 3, 367-388 (1982)

Levin, J. : Fairness and Reciprocity, June 2006 https://web.stanford.edu/~jdlevin/Econ%20286/Fairness.pdf (last access 17 October, 2019)

Oosterbeek, H., Sloof, R., van de Kuilen, G. : Cultural Differences in Ultimatum Game Experiments: Evidence from a Meta-Analysis. Experimental Economics , 7: 171-188, June 2004.

Henrich J. : Does Culture Matter in Economic Behavior? Ultimatum Game Bargaining Among the Machiguenga of the Peruvian Amazon. The American Economic Review Vol. 973-979. 2000

Program written by Ronald Paul Ng. e-mail: ronaldpaul.ng@gmail.com Address: ICON, 3 Mt. Elizabeth #17-03/04, Singapore 228510

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;; no age
;; children starts with wealth = 50

globals [ same-cycle
          different-cycle
          same-cycle-rejected
          different-cycle-rejected
          same-cycle-rejected%
          different-cycle-rejected%
          cycle-modifyer
        ]

breed [offer%=rejection%s offer%=rejection%]
breed [offer%!=rejection%s offer%!=rejection%]

turtles-own [ wealth
              offer%
              rejection%
              linked?
            ]

to setup
  ca
  create-offer%=rejection%s 500
      [ setxy random-xcor random-ycor
        set color green
        set wealth 50   ;; start off with 50. Each tick will minus 50 adjusted by carrying capacity. When wealth reaches 0, turtle dies
        set offer% random 100
        set rejection% offer%
        set cycle-modifyer 200 ;; allow the model to run 200 cycles, when offer%, rejection% and cycle-rejected% all stabilised.
        set linked? FALSE
      ]
  create-offer%!=rejection%s 500
      [ setxy random-xcor random-ycor
        set color red
        set wealth 50   ;; start off with 50. Each tick will minus 50 adjusted by carrying capacity. When wealth reaches 0, turtle dies
        set offer% random 100
        set rejection% random 100
        set cycle-modifyer 200 ;; allow the model to run 200 cycles, when offer%, rejection% and cycle-rejected% all stabilised.
        set linked? FALSE
      ]
  set same-cycle 0
  set different-cycle 0
  set same-cycle-rejected 0
  set different-cycle-rejected 0
  set same-cycle-rejected 0
  set different-cycle-rejected% 0
  set different-cycle-rejected% 0

  reset-ticks
end 

to go
  link-turtles
  ask turtles [if linked?  [calculate-wealth]] ;; if the initiator's offer is higher than the receiver's rejection threshold
  ask turtles [ set linked? false ]
  clear-links
  ;; each tick, with each pair of agent/turtle, total amount of 100 units are added to the "world", or average of 50 to each,
  ;; in order to simulate evolutionary process, where less successful strategies are weeded out by the "death" or removal of thos
  ;; caarying out those strategy, certain amount of "wealth" has to be removed from each agent/turtle, and since with
  ;; each round, on average 50 is added to each agent/turtle, the base unit 50 is taken off. This is adjusted by the ratio of
  ;; population vs the carrying-capacity of the "world" or the society. When additional "wealth"is added to the system in the form
  ;; of GDP-PC, it is distributed randomly from 0 to the amount as indicated in the slider minus 1 by the command, random GDP-PC.
  ;; For this reason, the amount deducted from each agent/turtle is GDP-PC / 2.
  ask turtles [ set wealth wealth - (50  * count turtles / carrying-capacity)
                reproduce
              ]
  ask turtles [ if wealth <= 0 [die]]
;  if ticks != 0 and ticks mod cycle-modifyer = 0 [ set cycle-modifyer random 500 + 1  ;; this sets the number of ticks before there will be a change in carrying-capacity
;                                   set carrying-capacity ((random 4 + 1 ) * 1000 )    ;; this sets how much the carrying-capacity is changed randomly in thousands
;                                 ]

;  if ticks > 200 [set carrying-capacity ticks] ;; to see effect of gradually increasing the carrying-capacity instead of having big jumps
  if count offer%=rejection%s = 0 [stop]
  if ticks >= 5000 [stop]
  tick
end 

to link-turtles
  ask turtles [if (not linked?) and any? other turtles with [linked? = false]
                    [ create-link-with one-of other turtles with [linked? != true ]
                      set linked? true
                      ask link-neighbors [set linked? true ]

                    ]
  ]
end 

to calculate-wealth
  ifelse breed = offer%!=rejection%s [set different-cycle different-cycle + 1]
                                     [set same-cycle same-cycle + 1]

  let t-offer% offer%
  let t-rejection% rejection%
  let t-wealth wealth
  let l-offer% 0
  let l-rejection% 0
  let l-wealth 0
  ask link-neighbors [ set l-offer% offer%
                       set l-rejection% rejection%
                       set l-wealth wealth]
  ;;print l-offer%
  ;;print [offer%] of link-neighbors
  ;;print l-rejection%
  ;;print [rejection%] of link-neighbors
  ;;print l-wealth
  ;;print [wealth] of link-neighbors
  ifelse t-offer% > l-rejection% [ set wealth wealth + ( 100 - offer%)
                               ask link-neighbors [ set wealth wealth + t-offer% ]
                                ]
                                 [ifelse breed = offer%!=rejection%s [set different-cycle-rejected different-cycle-rejected + 1]
                                                                        [set same-cycle-rejected same-cycle-rejected + 1]]
  if different-cycle != 0 [set different-cycle-rejected% different-cycle-rejected / different-cycle]
  if same-cycle != 0 [set same-cycle-rejected% same-cycle-rejected / same-cycle]
  set linked? false
  ask link-neighbors [set linked? false]
end 

to reproduce
  let wealth-factor (wealth / 100 - 1) * 10 ;; verified. At 100 wealth, there is a 50% probability of reproduction.
                                            ;; 100 is used because each tick the total amount invoved is 100
  let q 1 / (1 + exp (- wealth-factor) )   ;; logistic function for probability of reproduction. Verified
  let p random-float 1
  if p <= q [hatch 1 [ set wealth 50 ;; offspring starts 50, same as all new turtles
                       ifelse breed = offer%=rejection%s [ let r  random 1
                                                          ifelse r = 0 [ set offer%  (offer% + random 100) / 2  ;; this sets offer%, followed by rejection%
                                                                         set rejection% offer%]
                                                                       [ set rejection% (rejection% + random 100) / 2 ;; this sets rejection%, followed by offer%
                                                                         set offer% rejection% ]]
                                                        [ set offer% (offer% + random 100) / 2
                                                          set rejection% (rejection% + random 100 ) / 2 ]
                      ]

                       setxy random-xcor random-ycor ] ;; move away from the parent
end 

There is only one version of this model, created over 5 years ago by Ronald Paul Ng.

Attached files

No files

This model does not have any ancestors.

This model does not have any descendants.