Climate clubs and side-payments
Model was written in NetLogo 5.0.4
•
Viewed 513 times
•
Downloaded 32 times
•
Run 0 times
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
Comments and Questions
Click to Run Model
globals [patch-data countries donors new-volunteers new-bribees new-exits weightedavgnd-gain gross-bribe enthusiast-left] patches-own [enthusiast member benefit payoff emissions emissions-r gdp gdp-r nd-gain vulnerability mdc population WTA WTB WTB/WTA WTB-WTA bribe] to setup ca reset-ticks resize-world 0 14 0 9 use-data set countries patches with [emissions-r > 0] ; ignores the patches with negative emissions, and empty patches. ask patches with [emissions-r <= 0][set pcolor white] set-enthusiasm ask countries [ set gdp gdp-r / sum [gdp-r] of countries ; these are adjusted values so that they sum to one. gdp-r sums to .98 due to missing data set emissions emissions-r / sum [emissions-r] of countries ] who-pays set-damage-costs ask countries with [enthusiast = 1][ set member 1 set pcolor green ] ask countries with [enthusiast = 0] [ set member 0 ] end to use-data file-open "Output_GCP.txt" ; THIS DATA FILE MUST BE STORED IN THE SAME FOLDER AS THE MODEL set patch-data [] while [not file-at-end?] [ set patch-data sentence patch-data (list (list file-read file-read file-read file-read file-read file-read file-read)) ] file-close foreach patch-data [ask patch first ? item 1 ? [set plabel item 2 ? set emissions-r item 3 ? set gdp-r item 4 ? set nd-gain item 5 ? set population item 6 ?]] end to set-damage-costs ifelse vulnerability-index = true [ set weightedavgnd-gain (sum [nd-gain * (gdp / mean [gdp] of countries)] of countries) / count countries ; this calculates the nd-gain avg weighted by gdp for use below ask countries[ ; this calculates vulnerability and mdc so that global damages sum to globalMDC. based on above avg nd-gain which is weighed by gdp set vulnerability (nd-gain + (vulnerability-weight - 1) * (nd-gain - weightedavgnd-gain)) / weightedavgnd-gain set mdc globalMDC * vulnerability ] ][ ask countries [ set mdc globalMDC ] ] end to who-pays ; determinse whether only enthusiasts or all members can contribute to side-payments ifelse only-enthusiasts-pay = false[ set donors countries ][ set donors countries with [enthusiast = 1] ] end to go ; THE OVERARCHING PROCEDURE. BELOW ARE SUB-PROCEDURES. tick if count countries with [member = 0] > 0 [ join-or-leave ; this loops until no more volunteers want to join (volunteering is rare in this model) ] if new-volunteers = 0 and count countries with [member = 1] > 0 and side-payment = true [ ; each negotiation stage is a tick. side payments will only be offered when no more states want to join voluntarily side-payments ] if new-volunteers = 0 and new-bribees = 0 [ ; once no more countries can be bribed into the club, enthusiasts consider leaving enthusiasts-leave ] ask countries [ calculate-payoff ] end to join-or-leave ; This procedure checks whether anyone has incentive for unilater action (rarely the case) set new-volunteers 0 ; this is a counter to determine when to enter next stage ask countries with [member = 0][ calculate-benefit ] ask max-one-of countries with [member = 0][benefit - 1][ if benefit > 1[ ; measured in % of gdp set member 1 set pcolor blue set new-volunteers new-volunteers + 1 ] ] end to side-payments ;This is the side-payment procecure set new-bribees 0 if count countries with [member = 0 ] = 0 [stop] ask countries with [member = 0][ ; it is repeated for every non-member in random order calculate-benefit set WTA (1 - benefit) * gdp ; WTA is compensation needed to join, measured in aboslute terms (% of ggp) calculate-WTB ; this calls a sub-procedure that calculates each potential donor's benefit if a given non-member joins. ifelse equity = false[ ; the procedure differs depending on whether the "equity" option is chosen set WTB/WTA sum [WTB * gdp] of donors with [member = 1] / WTA ; ratio between club WTB and entrant WTA. can be moved to ask max-one-of to speed up the model set WTB-WTA sum [WTB * gdp] of donors with [member = 1] - WTA ; difference between WTA and club WTB, measured in % of ggp ][ set WTB/WTA sum [WTB * gdp] of donors with [member = 1 and (gdp / population) > [gdp / population] of myself] / WTA set WTB-WTA sum [WTB * gdp] of donors with [member = 1 and (gdp / population) > [gdp / population] of myself] - WTA ] ] ask donors [set WTB 0] ; reset needed for technical reasons ask max-one-of countries with [member = 0] [WTB-WTA][ ; the entrant giving the largest net benefits enters first if WTB/WTA > 1 [ ; it will only enter if both it and the club can benefit from it. this could be expressed in terms of WTB-WTA too. calculate-WTB ifelse equity = false [ ; the procedure differs depending on whether the "equity" option is chosen ask donors with [member = 1][ set bribe bribe - WTB * gdp / [WTB/WTA] of myself ; donors share the cost according to their benefit from expansion (See Barrett 2001) ] ; "bribe" is negative for those who pay. It measures accumulated bribes, in absolute terms (% of GGP) ][ let members-richer-than-entrant donors with [member = 1 and (gdp / population) > [gdp / population] of myself] ; if "equity" is on, only the members richer than the entrant share the cost ask members-richer-than-entrant[ set bribe bribe - WTB * gdp / [WTB/WTA] of myself ] ; end most likely entrant asks members ] set member 1 set pcolor orange set bribe bribe + WTA ; "bribe" is negative for those who pay. It measures accumulated bribes, in absolute terms (% of GGP) print WTA * 755.9 ; to convert from % of GGP to US$, multiply by 755.9, as GGP 2013 in current US$ was 75.59 trillion (worldbank.org) set gross-bribe gross-bribe + WTA * 755.9 ; this is a checker set new-bribees new-bribees + 1 ] ] ; end if pareto improvements are possible ask countries with [bribe < 0] ; actors who make net side-payments have their names displayed in black [set plabel-color 0] end to enthusiasts-leave ask countries with [enthusiast = 1][ calculate-payoff if payoff < (- mdc) [ ; payoff in the non cooperative outcome set member 0 set pcolor grey set enthusiast 0 set enthusiast-left 1 ; enthusiasts leave the club ] ] ask countries with [pcolor = orange][ calculate-benefit if benefit < 1 [ set pcolor red ; those who require continous bribes are red ] ] if enthusiast-left = 1 [ ; if enthusiasts leave, those who no longer benefit, leave too. New negotiations will start if there are remaining enthusiasts. ask countries with [member = 1 and enthusiast = 0] [ calculate-benefit if benefit < 1 [ set member 0 set pcolor black ] ] set enthusiast-left 0 ask countries [set bribe 0] ; bribe is reset to allow new negotiations to start. ] end to calculate-benefit ; benefit is measured in % of gdp set benefit mdc * emissions end to calculate-WTB ; WTB is measured in % of gdp, so must often be multiplied by gdp when used ask donors with [member = 1][ ; the potential entrant asks members set WTB mdc * [emissions] of myself ] end to calculate-payoff ; measured in % of gdp. Payoff is normalized to be (- Damage cost) in the BAU, and (-Club fee) if all countries are club members. ifelse member = 1[ set payoff (- 1) - mdc * (sum [emissions] of countries with [member = 0]) + bribe / gdp][ ; payoff for members set payoff (- mdc) * sum [emissions] of countries with [member = 0] ; payoff for non-members ] end to set-enthusiasm ask patches with [plabel = "China"][set enthusiast china-enthusiast] ask patches with [plabel = "United States"][set enthusiast usa-enthusiast] ask patches with [plabel = "European Union"][set enthusiast eu-enthusiast] ask patches with [plabel = "Russian Federation"][set enthusiast russia-enthusiast] ask patches with [plabel = "India"][set enthusiast india-enthusiast] ask patches with [plabel = "Brazil"][set enthusiast brazil-enthusiast] ask patches with [plabel = "Japan"][set enthusiast japan-enthusiast] ask patches with [plabel = "Indonesia"][set enthusiast indonesia-enthusiast] ask patches with [plabel = "Australia"][set enthusiast australia-enthusiast] ask patches with [plabel = "Iran, Islamic Rep."][set enthusiast iran-enthusiast] ask patches with [plabel = "Canada"][set enthusiast canada-enthusiast] ask patches with [plabel = "Mexico"][set enthusiast mexico-enthusiast] ask patches with [plabel = "Korea, Rep."][set enthusiast korea-enthusiast] ask patches with [plabel = "South Africa"][set enthusiast sa-enthusiast] end
There is only one version of this model, created over 9 years ago by Author Author.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
Climate clubs and side-payments.png | preview | Preview for 'Climate clubs and side-payments' | over 9 years ago, by Author Author | Download |
Output_GCP.txt | data | Input data that must be saved in the same folder as the model. | over 9 years ago, by Author Author | Download |
This model does not have any ancestors.
This model does not have any descendants.
Author Author
Please note:
The file named "Output_GCP.txt" must be stored in the same folder as the model. It contains input data. The file can be downloaded under the "Files" tab.
Posted over 9 years ago