;Title: How dynamic representation affects policy change and stability ;Version v1.00 ;Theoretical model by Dr. Simon T. Franzmann (Heinrich-Heine University, Düsseldorf) and Johannes Schmitt (Heinrich-Heine University, Düsseldorf) ;Code by Johannes Schmitt ;Contact: Johannes.Schmitt@hhu.de ;NetLogo Version: 5.1.0 globals [ ;Exogeneous competition structure max-ticks ;number of maximal iterations party-range ;determines the starting range between parties number-of-parties ;determines the number of parties number-of-voters ;determines the number of voters voter-modal ;determines the voter distribution: 1 = unimodal / 2 = bimodal sd-of-voter-distribution ;determines the standard deviation of voters’ (bimodal or unimodal) normal distribution starting-policy ;determines the initial status quo on the ideological dimension ;Endogeneous coalition bargaining coalition-type ;; 0 = wing coalition / 1 = center coalition number-of-coalition-parties number-of-opposition-parties number-of-oppositional-veto-players ;Exogeneous Voter decision-making evaluation-of-change ;determines voter’s evaluation bonus for each party, when policy changes in an iteration coalition-bonus ;determines the bonus evaluation of coalition parties by voters (see Info). evaluation-of-stability ;determines the level of negative evaluation in the case of policy stability threshold-of-penalizing ;a voter will only penalize parties in the case of policy stability, if his distance to status quo is higher than the threshold-of-penalizing? penalizing-all-veto-players ;determines whether or not all veto player receive a malus due to stability (false: only coalition parties or true: coalition parties and oppositional veto players) nonvoter-distance ;termine whether or not a voter will participate in elections. If the distance to the closest party is higher than the nonvoter-distance?, the voter will not participate time-factor ;determines the time-weight. At the end of an evaluation, the voters’ evaluation of each party is multiplied by time-factor ;Exogeneous Party decision-making vseeking-weight ;determines the proportion of vote-seeking weight in parties’ calculi. On the contrary: policy-seeking weight = 1 – vote-seeking weight. pseeking-weight ;see vseeking-weight ;Iteration-variables actual-policy-x ;actual status quo nonvoter-ratio ; ratio of non-voters policy-change ;policy changes (0: no / 1: yes) old-policy-i ;old status quo new-policy-i ;new status quo ;Parties' states ;"-v" vote-share // "-p" ideological position // "-c" coalition party 0: no 1: yes // "-ov" oppositional veto player 0: no 1: yes ;"p1" party 1 (turtle 0) // "p2" party 2 (turtle 1) .... etc. p1-v p1-p p1-c p1-ov p2-v p2-p p2-c p2-ov p3-v p3-p p3-c p3-ov p4-v p4-p p4-c p4-ov p5-v p5-p p5-c p5-ov p6-v p6-p p6-c p6-ov p7-v p7-p p7-c p7-ov p8-v p8-p p8-c p8-ov ;"willingness-to-change_p" sum of policy positions which party x would support in parliament agreement (max. 20, min 0) ;"willingness-to-compromise-vote_p" sum of policy positions which party x would support in parliament agreement even though vote-seeking calculus worsens (max. 20, min 0) ;"willingness-to-compromise-policy_p" sum of policy positions which party x would support in parliament agreement even though policy-seeking calculus worsens (max. 20, min 0) ;"p1" party 1 (turtle 0) // "p2" party 2 (turtle 1) .... etc. willingness-to-change_p1 willingness-to-compromise-vote_p1 willingness-to-compromise-policy_p1 willingness-to-change_p2 willingness-to-compromise-vote_p2 willingness-to-compromise-policy_p2 willingness-to-change_p3 willingness-to-compromise-vote_p3 willingness-to-compromise-policy_p3 willingness-to-change_p4 willingness-to-compromise-vote_p4 willingness-to-compromise-policy_p4 willingness-to-change_p5 willingness-to-compromise-vote_p5 willingness-to-compromise-policy_p5 willingness-to-change_p6 willingness-to-compromise-vote_p6 willingness-to-compromise-policy_p6 willingness-to-change_p7 willingness-to-compromise-vote_p7 willingness-to-compromise-policy_p7 willingness-to-change_p8 willingness-to-compromise-vote_p8 willingness-to-compromise-policy_p8 ;Overall Output number-of-change ;sum of changes within a simulation run ;Functionals seed-of-run ;random-seed visual ;1: show the visual elements / all other values: do not show ] ;definition of two actor types: breed [parties party] breed [voters voter] parties-own [ decision ;0 = disagree to policy change / 1 = agree to policy change coalition ;0 = no coalition party / 1: coalition party oppositional-veto-player ;0 = no oppositional veto player / 1 = oppositional veto player willingness-to-change ;(see above) willingness-to-compromise-vote ;(see above) willingness-to-compromise-policy ;(see above) vote-share ;vote share - opionion poll vote-share-election ;vote share - last election ] voters-own [ pref-party ;voter's prefered party parties-evaluation ;voter's evaluation of each party - list variable ] to setup ;initiates a new simulation run based on the input parameters clear-all set visual 1 ;set visual 0 to save computational resources if visual = 1 [ask patches [set pcolor white]] ifelse user? [user-setup][random-setup] ;manuel or random setup ini-party-system reset-ticks tick end to go ;starts the loop of iterations. if User? = false [if max-ticks < ticks [stop]] coalition-agenda-setting choose-pref-party if visual = 1 [show-all-visuals] if time-factor < 1 [ask voters [forget]] save-data tick end to coalition-agenda-setting ;coalition parties try to find a new status quo if visual = 1 [ask patches with [pycor >= 3][set pcolor white]] let l (list) ask parties with [coalition = 1][set l lput xcor l] let new-policy -999 let i -10 ask parties [ set willingness-to-change 0 set willingness-to-compromise-vote 0 set willingness-to-compromise-policy 0 ] repeat 21 [ ;coalition parties negotiate all policy positions... if i != actual-policy-x [ ;...with the expectation of status quo let i-bool true ask parties with [coalition = 1 or oppositional-veto-player = 1][if decide-about-new-policy i = false [set i-bool false]] if i-bool = true [ ifelse abs (new-policy - mean l) > abs (i - mean l)[set new-policy i][set i-bool false] ] ask parties with [coalition = 0 and oppositional-veto-player = 0][ let temp decide-about-new-policy i if i-bool = true [set decision temp] ] ] set i i + 1 ] ifelse new-policy != -999 [ ;result when there is a policy change... set old-policy-i actual-policy-x set new-policy-i new-policy set policy-change 1 ask parties with [coalition = 1 or oppositional-veto-player = 1][set decision 1] if evaluation-of-change > 0 [ask voters [evaluation-of-new-policy new-policy]] set actual-policy-x new-policy ] [ ;result when there is no policy change... set old-policy-i -999 set new-policy-i -999 set policy-change 0 if evaluation-of-stability > 0 [ask voters [evaluation-no-decision]] ] end to-report decide-about-new-policy [#new-policy] ;function for parties to decide about a potential policy change (#new-policy = new policy position on the ideological dimension) let calculus decision-calculus #new-policy ;calculus function ifelse calculus > 0.5 [report true][report false] end to-report decision-calculus [#new-policy] ;calculus function (see above to decide-about-new-policy) let v1 0 let v2 0 ifelse (evaluation-of-stability = 0) [set v1 vote-share][set v1 supposed-voteshare-impact -999] ;supposed vote-share when party do not agree ifelse (evaluation-of-change = 0) [set v2 vote-share][set v2 supposed-voteshare-impact #new-policy] ;supposed vote-share when party agree let p1 1 - (abs(actual-policy-x - xcor) / 21) ;standardized distance to status quo when policy does not change let p2 1 - (abs(#new-policy - xcor) / 21) ;standardized distance to status quo when policy changes let calculus-1 p1 * pseeking-weight + v1 * vseeking-weight ;utility in case of disagreement let calculus-2 p2 * pseeking-weight + v2 * vseeking-weight ;utility in case of agreement let reporter 0 if (calculus-1 + calculus-2) != 0 [set reporter calculus-2 / (calculus-1 + calculus-2)] if reporter > 0.5 and visual = 1 [ask patches with [pxcor = #new-policy and pycor = ([who] of myself + 3)][set pcolor [color] of myself]] if reporter > 0.5 and p1 > p2 [set willingness-to-compromise-policy willingness-to-compromise-policy + 1] if reporter > 0.5 and v1 > v2 [set willingness-to-compromise-vote willingness-to-compromise-vote + 1] if reporter > 0.5 [set willingness-to-change willingness-to-change + 1] report reporter end to-report supposed-voteshare-impact [#new-policy];reports the vote-share of a specific party on the basis of hypothetical assumptions let x (list) let b (list) let i 0 ifelse #new-policy != -999 [ repeat count parties [ ifelse evaluation-of-change > 0 [ ifelse [coalition] of party i = 1 and party i != self [set b lput (evaluation-of-change + coalition-bonus) b] [ ifelse party i = self [set b lput (evaluation-of-change + ([coalition] of party i) * coalition-bonus) b] [set b lput 0 b] ] ] [set b lput 0 b] set i i + 1 ] ] [ repeat count parties [ ifelse ([coalition] of party i = 1) or ([oppositional-veto-player] of party i = 1 and penalizing-all-veto-players = true) [set b lput (-1 * evaluation-of-stability) b] [set b lput 0 b] set i i + 1 ] ] let my-voters count voters with [hypothetical-min-distance-party b #new-policy = myself] let non-voters count voters with [hypothetical-min-distance-party b #new-policy = -999] ifelse (number-of-voters - non-voters) != 0 [report (my-voters / (number-of-voters - non-voters))][report 0] end to-report hypothetical-min-distance-party [#evaluation #new-policy] ;reports the party with the minimal distance to a specific voter on the basis of hypothetical assumptions (see above supposed-votershare-impact) let p min-one-of parties [evaluated-hypothetical-distance self #evaluation myself #new-policy] let dis-p evaluated-hypothetical-distance p #evaluation self #new-policy ifelse dis-p > nonvoter-distance [set p -999][if is-agent? pref-party = true [if (dis-p = evaluated-hypothetical-distance pref-party #evaluation self #new-policy) [set p pref-party]]] report p end to-report evaluated-hypothetical-distance [#party #evaluation #voter #new-policy] ;reports the distance of a specific party to a specific voter on the basis of hypothetical assumptions (see above hypothetical-min-distance-party) let evaluation (item [who] of #party #evaluation) if (abs([xcor] of #voter - actual-policy-x) < abs([xcor] of #voter - #new-policy)) [set evaluation evaluation * -1] report abs([xcor] of #voter - [xcor] of #party) - ((item ([who] of #party) [parties-evaluation] of #voter) + (item [who] of #party #evaluation)) end to evaluation-no-decision ;ask a voter to evaluate all parties in the case of policy stability let i 0 repeat count parties [ if ([coalition] of party i = 1) or ([oppositional-veto-player] of party i = 1 and penalizing-all-veto-players = true) [ let sign 1 if abs(xcor - actual-policy-x) < threshold-of-penalizing [set sign 0] let new-value (item i parties-evaluation + ((-1 * evaluation-of-stability) * sign)) set parties-evaluation replace-item i parties-evaluation new-value ] set i i + 1 ] end to evaluation-of-new-policy [#new-policy] ;ask a voter to evaluate all parties in the case of policy change let i 0 repeat count parties [ if [decision] of party i != -999 [ let sign 0 ifelse abs(xcor - actual-policy-x) >= abs(xcor - #new-policy) [set sign 1][set sign -1] if ([decision] of party i) = false [set sign sign * -1] let new-value (item i parties-evaluation + ((evaluation-of-change + (coalition-bonus * [coalition] of party i))) * sign) set parties-evaluation replace-item i parties-evaluation new-value ] set i i + 1 ] end to forget ;function of time-weighting (see time-factor in the description) let i 0 repeat number-of-parties [ set parties-evaluation replace-item i parties-evaluation ((item i parties-evaluation) * time-factor) set i i + 1 ] let l (list) set l parties-evaluation end to choose-pref-party ;ask the voters to choose the actual preferred party (opinion poll) ask voters [set pref-party min-distance-party] let nonvoters count voters with [pref-party = -999] set nonvoter-ratio nonvoters / number-of-voters if (number-of-voters - nonvoters) != 0 [ask parties [set vote-share count voters with [pref-party = myself] / (number-of-voters - nonvoters)]] end to-report min-distance-party ;reports the party with the minimal distance to a specific voter let p min-one-of parties [evaluated-distance self myself] let dis-p evaluated-distance p self ifelse dis-p > nonvoter-distance [set p -999][if is-agent? pref-party [if (dis-p = evaluated-distance pref-party self) [set p pref-party]]] report p end to-report evaluated-distance [#party #voter] ;reports the distance of a specific party to a specific voter report abs([xcor] of #voter - [xcor] of #party) - item ([who] of #party) [parties-evaluation] of #voter end to user-setup ;the manuel setup of the model on the basis of the GUI (see Interface) set starting-policy initial-policy? set evaluation-of-stability evaluation-of-stability? set threshold-of-penalizing threshold-of-penalizing? set penalizing-all-veto-players penalizing-all-veto-players? set vseeking-weight vote-seeking-weight? set pseeking-weight 1 - vseeking-weight set evaluation-of-change evaluation-of-change? set time-factor time-factor? set coalition-bonus coalition-bonus? let party-n number-of-parties? set party-range party-range? create-competition-scenario party-n party-range create-voter-distribution sd-of-voter-distribution? number-of-voters? voter-modal? 0 0 set nonvoter-distance nonvoter-distance? end to random-setup ;the random setup of the model set max-ticks 40 set number-of-voters 1000 set number-of-parties 2 + random 7 set party-range number-of-parties + random (21 - number-of-parties) set voter-modal 1 + random 2 set sd-of-voter-distribution normal-rnd-value 45 5 0 30 60 ifelse random 2 = 1 [set evaluation-of-change 0][set evaluation-of-change normal-rnd-value 0.75 0.25 2 0.1 1.4] ifelse random 2 = 1 or evaluation-of-change = 0[set coalition-bonus 0][set coalition-bonus normal-rnd-value 0.75 0.25 2 0.1 1.4] set time-factor normal-rnd-value 0.9 0.05 2 0.8 0.99 ifelse random 2 = 1 [set evaluation-of-stability 0][set evaluation-of-stability normal-rnd-value 0.75 0.25 2 0.1 1.4] set threshold-of-penalizing normal-rnd-value 0.75 0.25 2 0.1 1.4 ifelse random 2 = 1 or evaluation-of-stability = 0 [set penalizing-all-veto-players false][set penalizing-all-veto-players true] set nonvoter-distance normal-rnd-value 5 1 2 2 8 ifelse random 3 = 1 [set pseeking-weight 1][ifelse random 2 = 1 [set pseeking-weight 0][set pseeking-weight (1 + random 9) / 10]] set vseeking-weight 1 - pseeking-weight set seed-of-run new-seed random-seed seed-of-run create-competition-scenario number-of-parties party-range create-voter-distribution sd-of-voter-distribution number-of-voters voter-modal 0 0 end to create-competition-scenario [#party-n #party-range] ;creates parties on the basis of input parameters (#party-n = number of parties and #party-range = range of party system) let plus #party-range / #party-n let start (plus / 2) let i #party-n repeat round (#party-n / 2) [ if i > 0 [create-parties 1 [set xcor 0 - start] set i i - 1] if i > 0 [create-parties 1 [set xcor 0 + start] set i i - 1] set start start + plus ] end to create-voter-distribution [#sd #n #modal-value #mid #async] ;creates a voter distribution on the basis of distribution's standard deviation (#sd), number of voters (#n), kind of distribution (#modal-value: 1=unimodal, 2=bimodal), distribution's median (#mid) and distribution's synchronicity (#async) let async 1 + #async let j 0 repeat #modal-value [ let i precision (-100 + (j * (precision (201 / #modal-value) 0))) 0 let w 0 let mid (i + precision ((201 / #modal-value) / 2) 0) + #mid repeat precision (201 / #modal-value) 0 [set w w + precision ((normal-distribution i mid #sd) * #n * (1 / #modal-value) * async) 0 set i i + 1] set w (#n * (1 / #modal-value)) / w set i precision (-100 + (j * (precision (201 / #modal-value) 0))) 0 repeat precision (201 / #modal-value) 0 [ if i >= -100 and i <= 100 [ create-voters precision ((normal-distribution i mid #sd) * #n * w * (1 / #modal-value)) 0 [setxy (i / 10) 0] set i i + 1 set async async - (#async / 100) ] ] set j j + 1 ] set number-of-voters count voters end to ini-party-system ;initialise party system on the basis of random or manuel setup set actual-policy-x starting-policy party-setup voter-setup choose-pref-party ask parties [set vote-share-election vote-share] coalition-bargaining ask parties with [coalition = 0][if random 5 = 1 [set oppositional-veto-player 1]] set starting-policy 0 ask parties [ set willingness-to-change 0 set willingness-to-compromise-vote 0 set willingness-to-compromise-policy 0 ] if visual = 1 [show-all-visuals] set number-of-parties count parties set number-of-change 0 end to party-setup ;initialise parties (and their variables) let party-color-list [red blue green yellow brown violet pink gray orange lime magenta cyan turquoise sky] set-default-shape parties "triangle" ask parties [ set decision false set size 2 set color item who party-color-list ] end to voter-setup ;creates voters (and initialise their variables) ask voters [ set color black set shape "person" set size 0.2 set parties-evaluation (list) repeat count parties [set parties-evaluation lput 0 parties-evaluation] ] end to coalition-bargaining let l minimal-winning-coalition ask parties [set coalition 0] ask parties with [member? self l][set coalition 1] end to-report minimal-winning-coalition ;reports the connected, minimal winning coalition with the lowest ideological range let coalition-formed (list) let i 0 ask party 0 [set coalition-formed favored-coalition] repeat count parties - 1 [ set i i + 1 ask party i [ifelse ideological-range-of-coalition favored-coalition < ideological-range-of-coalition coalition-formed [set coalition-formed favored-coalition] [if ideological-range-of-coalition favored-coalition = ideological-range-of-coalition coalition-formed and random 2 = 1 [set coalition-formed favored-coalition]] ] ] report coalition-formed end to-report favored-coalition ;reports the connected, minimal winning coalition of a specific party let coalition-list (list) set coalition-list lput self coalition-list while [sum [vote-share] of parties with [member? self coalition-list] <= 0.5] [ set coalition-list lput min-one-of parties with [member? self coalition-list = false][distance myself] coalition-list ] report coalition-list end to-report ideological-range-of-coalition [#list] ;reports the ideological range of coalition Report max [xcor] of parties with [member? self #list] - min [xcor] of parties with [member? self #list] end to show-all-visuals ;plots visuals (see functions below) show-party-status show-actual-policy end to show-actual-policy ;plots status quo ask patches with [pycor = 2][set pcolor white] ask patches with [pycor = 2 and pxcor = actual-policy-x][set pcolor black] end to show-party-status ;plots the coalition status with parties' shape (see description) ask parties [ set shape "triangle" if oppositional-veto-player = 1[set shape "triangle 2"] if coalition = 1[set shape "circle"] ] end to save-data ;save several measurements (see above variable description) set number-of-change number-of-change + policy-change set p1-v [vote-share] of party 0 set p2-v [vote-share] of party 1 ifelse number-of-parties > 2 [set p3-v [vote-share] of party 2][set p3-v -999] ifelse number-of-parties > 3 [set p4-v [vote-share] of party 3][set p4-v -999] ifelse number-of-parties > 4 [set p5-v [vote-share] of party 4][set p5-v -999] ifelse number-of-parties > 5 [set p6-v [vote-share] of party 5][set p6-v -999] ifelse number-of-parties > 6 [set p7-v [vote-share] of party 6][set p7-v -999] ifelse number-of-parties > 7 [set p8-v [vote-share] of party 7][set p8-v -999] set p1-p [xcor] of party 0 set p2-p [xcor] of party 1 ifelse number-of-parties > 2 [set p3-p [xcor] of party 2][set p3-p -999] ifelse number-of-parties > 3 [set p4-p [xcor] of party 3][set p4-p -999] ifelse number-of-parties > 4 [set p5-p [xcor] of party 4][set p5-p -999] ifelse number-of-parties > 5 [set p6-p [xcor] of party 5][set p6-p -999] ifelse number-of-parties > 6 [set p7-p [xcor] of party 6][set p7-p -999] ifelse number-of-parties > 7 [set p8-p [xcor] of party 7][set p8-p -999] set p1-c [coalition] of party 0 set p2-c [coalition] of party 1 ifelse number-of-parties > 2 [set p3-c [coalition] of party 2][set p3-c -999] ifelse number-of-parties > 3 [set p4-c [coalition] of party 3][set p4-c -999] ifelse number-of-parties > 4 [set p5-c [coalition] of party 4][set p5-c -999] ifelse number-of-parties > 5 [set p6-c [coalition] of party 5][set p6-c -999] ifelse number-of-parties > 6 [set p7-c [coalition] of party 6][set p7-c -999] ifelse number-of-parties > 7 [set p8-c [coalition] of party 7][set p8-c -999] set p1-ov [oppositional-veto-player] of party 0 set p2-ov [oppositional-veto-player] of party 1 ifelse number-of-parties > 2 [set p3-ov [oppositional-veto-player] of party 2][set p3-ov -999] ifelse number-of-parties > 3 [set p4-ov [oppositional-veto-player] of party 3][set p4-ov -999] ifelse number-of-parties > 4 [set p5-ov [oppositional-veto-player] of party 4][set p5-ov -999] ifelse number-of-parties > 5 [set p6-ov [oppositional-veto-player] of party 5][set p6-ov -999] ifelse number-of-parties > 6 [set p7-ov [oppositional-veto-player] of party 6][set p7-ov -999] ifelse number-of-parties > 7 [set p8-ov [oppositional-veto-player] of party 7][set p8-ov -999] ifelse number-of-parties > 0 [set willingness-to-change_p1 [willingness-to-change] of party 0][set willingness-to-change_p1 -999] ifelse number-of-parties > 0 [set willingness-to-compromise-vote_p1 [willingness-to-compromise-vote] of party 0][set willingness-to-compromise-vote_p1 -999] ifelse number-of-parties > 0 [set willingness-to-compromise-policy_p1 [willingness-to-compromise-policy] of party 0][set willingness-to-compromise-policy_p1 -999] ifelse number-of-parties > 1 [set willingness-to-change_p2 [willingness-to-change] of party 1][set willingness-to-change_p2 -999] ifelse number-of-parties > 1 [set willingness-to-compromise-vote_p2 [willingness-to-compromise-vote] of party 1][set willingness-to-compromise-vote_p2 -999] ifelse number-of-parties > 1 [set willingness-to-compromise-policy_p2 [willingness-to-compromise-policy] of party 1][set willingness-to-compromise-policy_p2 -999] ifelse number-of-parties > 2 [set willingness-to-change_p3 [willingness-to-change] of party 2][set willingness-to-change_p3 -999] ifelse number-of-parties > 2 [set willingness-to-compromise-vote_p3 [willingness-to-compromise-vote] of party 2][set willingness-to-compromise-vote_p3 -999] ifelse number-of-parties > 2 [set willingness-to-compromise-policy_p3 [willingness-to-compromise-policy] of party 2][set willingness-to-compromise-policy_p3 -999] ifelse number-of-parties > 3 [set willingness-to-change_p4 [willingness-to-change] of party 3][set willingness-to-change_p4 -999] ifelse number-of-parties > 3 [set willingness-to-compromise-vote_p4 [willingness-to-compromise-vote] of party 3][set willingness-to-compromise-vote_p4 -999] ifelse number-of-parties > 3 [set willingness-to-compromise-policy_p4 [willingness-to-compromise-policy] of party 3][set willingness-to-compromise-policy_p4 -999] ifelse number-of-parties > 4 [set willingness-to-change_p5 [willingness-to-change] of party 4][set willingness-to-change_p5 -999] ifelse number-of-parties > 4 [set willingness-to-compromise-vote_p5 [willingness-to-compromise-vote] of party 4][set willingness-to-compromise-vote_p5 -999] ifelse number-of-parties > 4 [set willingness-to-compromise-policy_p5 [willingness-to-compromise-policy] of party 4][set willingness-to-compromise-policy_p5 -999] ifelse number-of-parties > 5 [set willingness-to-change_p6 [willingness-to-change] of party 5][set willingness-to-change_p6 -999] ifelse number-of-parties > 5 [set willingness-to-compromise-vote_p6 [willingness-to-compromise-vote] of party 5][set willingness-to-compromise-vote_p6 -999] ifelse number-of-parties > 5 [set willingness-to-compromise-policy_p6 [willingness-to-compromise-policy] of party 5][set willingness-to-compromise-policy_p6 -999] ifelse number-of-parties > 6 [set willingness-to-change_p7 [willingness-to-change] of party 6][set willingness-to-change_p7 -999] ifelse number-of-parties > 6 [set willingness-to-compromise-vote_p7 [willingness-to-compromise-vote] of party 6][set willingness-to-compromise-vote_p7 -999] ifelse number-of-parties > 6 [set willingness-to-compromise-policy_p7 [willingness-to-compromise-policy] of party 6][set willingness-to-compromise-policy_p7 -999] ifelse number-of-parties > 7 [set willingness-to-change_p8 [willingness-to-change] of party 7][set willingness-to-change_p8 -999] ifelse number-of-parties > 7 [set willingness-to-compromise-vote_p8 [willingness-to-compromise-vote] of party 7][set willingness-to-compromise-vote_p8 -999] ifelse number-of-parties > 7 [set willingness-to-compromise-policy_p8 [willingness-to-compromise-policy] of party 7][set willingness-to-compromise-policy_p8 -999] if ticks < 2 [set coalition-type measure-coalition-type] if ticks < 2 [set number-of-coalition-parties count parties with [coalition = 1]] if ticks < 2 [set number-of-opposition-parties count parties with [coalition = 0]] if ticks < 2 [set number-of-oppositional-veto-players count parties with [oppositional-veto-player = 1]] end to-report number-is-even [#number] ;reports whether or not #number is even let x #number - ((round ((#number / 2) - 0.5)) * 2) ifelse x = 1 [Report false][Report true] end to-report normal-distribution [#x-value #mean #sd] ;reports the x value (#x-value) of a normal distribution (mean = #mean and standard deviation = #sd) Report ((1 / (#sd * sqrt (2 * pi))) * e ^ (-0.5 * ((#x-value - #mean)/ #sd )^ 2)) end to-report normal-rnd-value [#mean #sd #precision #min #max] ;reports a random value on the basis of an normal distribution with the mean (#mean), standard deviation (#sd), number of decimal places (#precision), the minimum (#min) and the maximum (#max). let bool false let x-value -9999 while [bool = false][ set x-value precision (random-normal #mean #sd) #precision if x-value >= #min and x-value <= #max [set bool true] ] Report x-value end to-report measure-coalition-type ;measures the coalition type; 0 = wing coalition / 1 = center coalition let c-type -999 ifelse count parties with [coalition = 0] > 0 [ let xmin-opposition min [xcor] of parties with [coalition = 0] let xmax-opposition max [xcor] of parties with [coalition = 0] let xmin-coalition min [xcor] of parties with [coalition = 1] let xmax-coalition max [xcor] of parties with [coalition = 1] ifelse xmin-coalition > xmin-opposition and xmax-coalition < xmax-opposition [report 1][report 0] ] [ report -999 ] end @#$#@#$#@ GRAPHICS-WINDOW 449 10 1089 401 10 -1 30.0 1 10 1 1 1 0 0 0 1 -10 10 0 11 0 0 1 ticks 30.0 BUTTON 95 37 159 70 NIL go T 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 32 37 95 70 NIL setup NIL 1 T OBSERVER NIL NIL NIL NIL 1 SWITCH 32 74 158 107 User? User? 1 1 -1000 SLIDER 32 140 238 173 evaluation-of-change? evaluation-of-change? 0 2 0.2 0.1 1 NIL HORIZONTAL SLIDER 249 173 435 206 number-of-parties? number-of-parties? 2 10 6 1 1 NIL HORIZONTAL SLIDER 249 140 435 173 initial-policy? initial-policy? -10 10 0 1 1 NIL HORIZONTAL SLIDER 249 305 434 338 number-of-voters? number-of-voters? 100 10000 1090 1 1 NIL HORIZONTAL SLIDER 249 272 434 305 sd-of-voter-distribution? sd-of-voter-distribution? 5 100 50 1 1 NIL HORIZONTAL SLIDER 249 238 434 271 voter-modal? voter-modal? 1 2 2 1 1 NIL HORIZONTAL SLIDER 249 81 433 114 vote-seeking-weight? vote-seeking-weight? 0 1 0.33 0.01 1 NIL HORIZONTAL MONITOR 249 37 433 82 policy-seeking weight? precision (1 - vote-seeking-weight?) 4 17 1 11 SLIDER 32 174 238 207 coalition-bonus? coalition-bonus? 0 5 0 0.1 1 NIL HORIZONTAL TEXTBOX 251 118 413 140 Initial situation: 20 0.0 1 TEXTBOX 248 10 398 35 Parties: 20 0.0 1 TEXTBOX 37 115 112 137 Voters: 20 0.0 1 SLIDER 32 337 238 370 nonvoter-distance? nonvoter-distance? 0 10 5 0.1 1 NIL HORIZONTAL SLIDER 32 207 238 240 evaluation-of-stability? evaluation-of-stability? 0 2 0.4 0.1 1 NIL HORIZONTAL SLIDER 32 240 238 273 threshold-of-penalizing? threshold-of-penalizing? 0 4 0.5 0.1 1 NIL HORIZONTAL SWITCH 32 272 238 305 penalizing-all-veto-players? penalizing-all-veto-players? 1 1 -1000 SLIDER 249 205 435 238 party-range? party-range? 0 21 14 1 1 NIL HORIZONTAL PLOT 449 400 1089 684 vote-share and non-votes ratio NIL NIL 0.0 10.0 0.0 0.5 true true "" "" PENS "p1" 1.0 0 -2674135 true "" "plot [vote-share] of party 0" "p2" 1.0 0 -13345367 true "" "plot [vote-share] of party 1" "p3" 1.0 0 -10899396 true "" "if number-of-parties > 2 [plot [vote-share] of party 2]" "p4" 1.0 0 -1184463 true "" "if number-of-parties > 3 [plot [vote-share] of party 3]" "p5" 1.0 0 -6459832 true "" "if number-of-parties > 4 [plot [vote-share] of party 4]" "p6" 1.0 0 -8630108 true "" "if number-of-parties > 5 [plot [vote-share] of party 5]" "p7" 1.0 0 -7500403 true "" "if number-of-parties > 6 [plot [vote-share] of party 6]" "p8" 1.0 0 -955883 true "" "if number-of-parties > 7 [plot [vote-share] of party 7]" "non-voters" 1.0 2 -16710653 true "" "plot nonvoter-ratio" SLIDER 32 304 238 337 time-factor? time-factor? 0 1 0.9 0.01 1 NIL HORIZONTAL MONITOR 33 376 441 421 NIL number-of-change 17 1 11 PLOT 33 420 441 685 voter-distribution NIL NIL -10.0 10.0 0.0 10.0 true false "set-histogram-num-bars 100\nset-plot-x-range min-pxcor max-pxcor\nset-plot-y-range 0 (precision (count voters / 300) 0)" "" PENS "default" 1.0 1 -16777216 true "" "histogram [xcor] of voters" TEXTBOX 34 10 184 35 Controls: 20 0.0 1 @#$#@#$#@ #How dynamic representation affects policy change and stability (Simon T. Franzmann and Johannes Schmitt) ## WHAT IS IT? In the tradition of veto player theory, the model explains policy change and stability on the basis of policy-seeking actors and veto points. But in addition to prior approaches, the perspective of party competition is added to the legislative bargaining process. Therefore, parties pursue also vote-seeking goals and voters evaluate the voting behavior of parties in parliament. To make a trade-off between both goals, parties anticipate the consequences on their vote-share. Due to this implemented mechanism of dynamic representation, policy stability and changes arise, when traditional models deduce the opposite result (for details see Franzmann/Schmitt 2015). ###Literature >You can find a detailed description and results in the published article: **Franzmann, Simon and Schmitt, Johannes (2015): How dynamic representation affects policy change and stability, in #Analyse & Kritik#.** _(Please cite this source, if you refer to the model)_ ###Additional theoretical background Downs, A. (1957), An Economic Theory of Democracy, New York Franzmann, S. T. (2011), Competition, Contest, and Cooperation. The Analytical Framework of the Issue-Market, in: Journal of Theoretical Politics 23, 317–343 Ganghof, S./T. Bräuninger (2006), Government Status and Legislative Behaviour: Partisan Veto Players in Australia, Denmark, Finland and Germany, in: Party Politics 12, 521–539 Stimson, J. A./M. B. Mackuen/R. S. Erikson (1995), Dynamic Representation, in: The American Political Science Review 89, 543–565 Strøm, K. (1990), A Behavioral Theory of Competitive Political Parties, in: American Journal of Political Science 34, 565 Tsebelis, G. (2002), Veto Players. How Political Institutions Work, Princeton ## HOW IT WORKS **General Process** - First of all, input parameters determine the starting constellation of party competition and voters' preferences on the ideological dimension (see below description of input parameters). On this basis, the election takes place before the first iteration and parties form the ideological connected, minimal winning coalition with the lowest ideological range. After the coalition formation all opposition parties have a random chance to be an oppositional veto player. Thus, there are exogenous determined starting condition (e.g. number of parties, voter distribution) and endogenous determined starting conditions (e.g. type of coalition, number of oppositional veto players). The starting conditions being set, the general loop starts: First, coalition parties try (or not) to change status quo. Second, voters evaluate parties’ behavior and (maybe) change their voting choice in the opinion poll: ![Run-small.png](file:images\Run-small2.png) Figure 1: Simulation runs legislative period (Franzmann/Schmitt 2015) **Process of evaluation** - Each voter evaluates each party on the basis of his (or her) own policy preference, status quo, parliamentary output (change or stability) and party’s voting behavior: ![Evaluation-small.png](file:images\Evaluation-small2.png) Figure 2: Voter’s evaluation of parties’ legislative behavior (Franzmann/Schmitt 2015) **Policy-change? – yes: ** -Preferred change? Yes, if the distance between voter's ideal point and status quo is lower than before the policy change. -Party approved change? Yes, if the party agreed to the policy change in parliamentary voting. **Policy-change? – no: ** -Status quo is not preferred? Yes, if distance of voter’s ideal point to status quo is higher than the threshold (see below description of input parameter _threshold-of-penalizing?_). -Party is responsible for stability? Yes, if (1) party is part of the coalition or (2) party is an oppositional veto player. But (2) depends on an input parameter (see below description of input parameter _penalizing-all-veto-players?_). ## HOW TO USE IT ###Summary >1: Choose input parameters (manual or random) >2: _setup_ the model >3: _go_ to start iterations >4: evaluate observed output ###Controls **setup** - initiates a new simulation run based on the input parameters (important see below: _User?_). **go** - starts the loop of iterations. **User?** - determines whether or not the input parameters are determined by the user. If _User?_ is off, the parameters are determined randomly. To modify the random procedure (e.g. parameters' range or the probability distribution) use the function _to random-setup_. ###Input parameters **initial-policy?** - determines the initial status quo on the ideological dimension. **number-of-parties?** – determines the number of parties during a simulation run (tested with maximal 8 parties, but there should be theoretically no limit. If you want to run the model with more than 14 parties, the variable “party-color-list” has to be adjusted. In this case, you have to add more colors in the list or remove the array.). **party-range?** - determines the starting range between parties (range = maximum of parties' positions on x-axis - minimum of parties' positions on x-axis; x-axis represents the ideological dimension). **vote-seeking-weight?** - determines the proportion of vote-seeking in parties’ calculi. On the contrary: policy-seeking weight = 1 – vote-seeking weight. **number-of-voters?** - determines the number of voters. This parameter has a crucial impact on model’s performance. Due to a high number of agents in the model, the duration of computation increases significantly (tested with maximal 10,000 voters). **voter-modal?** – determines the voter distribution. Actually there are only two kinds of voter distribution realized: unimodal distribution (1) and bimodal distribution (2). Nevertheless the function can be easily adjusted to more and complex distributions (e.g. asymmetric distribution – function: “to create-voter-distribution”). **sd-of-voter-distribution?** – determines the standard deviation of voters’ (bimodal or unimodal) normal distribution. **evaluation-of-change?** - determines voter’s evaluation bonus for each party, when policy changes in an iteration. **coalition-bonus?** - determines the bonus evaluation of coalition parties by voters (in the case of policy change, not stability!). Thus, opposition parties receive “_evaluation-of-change?_” and coalition parties receive “_evaluation-of-change?_ and _coalition-bonus?_” as bonus (or malus). **evaluation-of-stability?** - determines the level of negative evaluation in the case of policy stability. **threshold-of-penalizing?** - a voter will only penalize parties in the case of policy stability, if his distance to status quo is higher than the _threshold-of-penalizing?_. **penalizing-all-veto-players?** - determines whether or not all veto players receive a malus due to stability (_false_: only coalition parties or _true_: coalition parties and oppositional veto players). **time-factor?** - determines the time-weight. At the end of an evaluation, voters’ evaluation of each party is multiplied by _time-factor?_. **nonvoter-distance?** - determines whether or not a voter will participate in elections. If the distance to the closest party is higher than the _nonvoter-distance?_, the voter will not participate. ###Output **World view** - plots _each party status and position_: circle = coalition party; triangle = opposition party (not filled = oppositional veto player); parties' position on x-axis indicates the ideological position // _status quo_ is plotted by the patch with black color (y = 2; x = status quo); temporary colorful patches indicates the policy position which each party would support in parliament agreement within an iteration (color indiciates the specific party). **Plot "vote-share and non-votes ratio"** - plots the vote-share of each party and the non-voter ratio as time series. **Plot "voter-distribution"** - plots the voter distribution (because the presentation in _world view_ is inadequately). **Plot "number-of-change"** - plots the sum of policy changes within the simulation run. ## CREDITS >(1) the theoretical model is formulated by **[Dr. Simon T. Franzmann](https://www.phil-fak.uni-duesseldorf.de/pw-poguntke/homepage-simon-franzmann/)** (Heinrich-Heine University, Düsseldorf) and **[Johannes Schmitt](http://www.pruf.de/unser-team/wissenschaftliche-mitarbeiterinnen/johannes-schmitt.html)** (Heinrich-Heine University, Düsseldorf) >(2) the model is coded by **[Johannes Schmitt](http://www.pruf.de/unser-team/wissenschaftliche-mitarbeiterinnen/johannes-schmitt.html)** (Heinrich-Heine University, Düsseldorf) >(3) the model is developed as part of the project **[High degree of participation due to a weak opposition? Theoretical and empirical models of the interaction of democratic type, opposition and participation](http://www.pruf.de/en/research-projects/current-research-projects/mechanisms-of-opposition-inclusion-or-polarization.html)** supported by the **[Strategic research fund of the Heinrich-Heine-University](http://www.forschung.uni-duesseldorf.de/en/research-services/strategic-research-funds.html)** ## REFERENCES **Franzmann, Simon and Schmitt, Johannes (2015): How dynamic representation affects policy change and stability, in #Analyse & Kritik#.** (Please cite this source, if you refer to the model) Source code can be downloaded at http://www.pruf.de/perma-links/abm-policy-change-and-stability @#$#@#$#@ default true 0 Polygon -7500403 true true 150 5 40 250 150 205 260 250 airplane true 0 Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15 arrow true 0 Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150 box false 0 Polygon -7500403 true true 150 285 285 225 285 75 150 135 Polygon -7500403 true true 150 135 15 75 150 15 285 75 Polygon -7500403 true true 15 75 15 225 150 285 150 135 Line -16777216 false 150 285 150 135 Line -16777216 false 150 135 15 75 Line -16777216 false 150 135 285 75 bug true 0 Circle -7500403 true true 96 182 108 Circle -7500403 true true 110 127 80 Circle -7500403 true true 110 75 80 Line -7500403 true 150 100 80 30 Line -7500403 true 150 100 220 30 butterfly true 0 Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240 Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240 Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163 Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165 Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225 Circle -16777216 true false 135 90 30 Line -16777216 false 150 105 195 60 Line -16777216 false 150 105 105 60 car false 0 Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180 Circle -16777216 true false 180 180 90 Circle -16777216 true false 30 180 90 Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89 Circle -7500403 true true 47 195 58 Circle -7500403 true true 195 195 58 circle false 0 Circle -7500403 true true 0 0 300 circle 2 false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 cow false 0 Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167 Polygon -7500403 true true 73 210 86 251 62 249 48 208 Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123 cylinder false 0 Circle -7500403 true true 0 0 300 dot false 0 Circle -7500403 true true 90 90 120 face happy false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240 face neutral false 0 Circle -7500403 true true 8 7 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Rectangle -16777216 true false 60 195 240 225 face sad false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183 fish false 0 Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166 Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165 Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60 Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166 Circle -16777216 true false 215 106 30 flag false 0 Rectangle -7500403 true true 60 15 75 300 Polygon -7500403 true true 90 150 270 90 90 30 Line -7500403 true 75 135 90 135 Line -7500403 true 75 45 90 45 flower false 0 Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135 Circle -7500403 true true 85 132 38 Circle -7500403 true true 130 147 38 Circle -7500403 true true 192 85 38 Circle -7500403 true true 85 40 38 Circle -7500403 true true 177 40 38 Circle -7500403 true true 177 132 38 Circle -7500403 true true 70 85 38 Circle -7500403 true true 130 25 38 Circle -7500403 true true 96 51 108 Circle -16777216 true false 113 68 74 Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218 Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240 house false 0 Rectangle -7500403 true true 45 120 255 285 Rectangle -16777216 true false 120 210 180 285 Polygon -7500403 true true 15 120 150 15 285 120 Line -16777216 false 30 120 270 120 leaf false 0 Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195 Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195 line true 0 Line -7500403 true 150 0 150 300 line half true 0 Line -7500403 true 150 0 150 150 pentagon false 0 Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120 person false 0 Circle -7500403 true true 110 5 80 Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90 Rectangle -7500403 true true 127 79 172 94 Polygon -7500403 true true 195 90 240 150 225 180 165 105 Polygon -7500403 true true 105 90 60 150 75 180 135 105 plant false 0 Rectangle -7500403 true true 135 90 165 300 Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285 Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285 Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210 Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135 Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135 Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60 Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90 sheep false 15 Circle -1 true true 203 65 88 Circle -1 true true 70 65 162 Circle -1 true true 150 105 120 Polygon -7500403 true false 218 120 240 165 255 165 278 120 Circle -7500403 true false 214 72 67 Rectangle -1 true true 164 223 179 298 Polygon -1 true true 45 285 30 285 30 240 15 195 45 210 Circle -1 true true 3 83 150 Rectangle -1 true true 65 221 80 296 Polygon -1 true true 195 285 210 285 210 240 240 210 195 210 Polygon -7500403 true false 276 85 285 105 302 99 294 83 Polygon -7500403 true false 219 85 210 105 193 99 201 83 square false 0 Rectangle -7500403 true true 30 30 270 270 square 2 false 0 Rectangle -7500403 true true 30 30 270 270 Rectangle -16777216 true false 60 60 240 240 star false 0 Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108 target false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 Circle -7500403 true true 60 60 180 Circle -16777216 true false 90 90 120 Circle -7500403 true true 120 120 60 tree false 0 Circle -7500403 true true 118 3 94 Rectangle -6459832 true false 120 195 180 300 Circle -7500403 true true 65 21 108 Circle -7500403 true true 116 41 127 Circle -7500403 true true 45 90 120 Circle -7500403 true true 104 74 152 triangle false 0 Polygon -7500403 true true 150 30 15 255 285 255 triangle 2 false 0 Polygon -7500403 true true 150 30 15 255 285 255 Polygon -16777216 true false 151 99 225 223 75 224 truck false 0 Rectangle -7500403 true true 4 45 195 187 Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194 Rectangle -1 true false 195 60 195 105 Polygon -16777216 true false 238 112 252 141 219 141 218 112 Circle -16777216 true false 234 174 42 Rectangle -7500403 true true 181 185 214 194 Circle -16777216 true false 144 174 42 Circle -16777216 true false 24 174 42 Circle -7500403 false true 24 174 42 Circle -7500403 false true 144 174 42 Circle -7500403 false true 234 174 42 turtle true 0 Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210 Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105 Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105 Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87 Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210 Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99 wheel false 0 Circle -7500403 true true 3 3 294 Circle -16777216 true false 30 30 240 Line -7500403 true 150 285 150 15 Line -7500403 true 15 150 285 150 Circle -7500403 true true 120 120 60 Line -7500403 true 216 40 79 269 Line -7500403 true 40 84 269 221 Line -7500403 true 40 216 269 79 Line -7500403 true 84 40 221 269 wolf false 0 Polygon -16777216 true false 253 133 245 131 245 133 Polygon -7500403 true true 2 194 13 197 30 191 38 193 38 205 20 226 20 257 27 265 38 266 40 260 31 253 31 230 60 206 68 198 75 209 66 228 65 243 82 261 84 268 100 267 103 261 77 239 79 231 100 207 98 196 119 201 143 202 160 195 166 210 172 213 173 238 167 251 160 248 154 265 169 264 178 247 186 240 198 260 200 271 217 271 219 262 207 258 195 230 192 198 210 184 227 164 242 144 259 145 284 151 277 141 293 140 299 134 297 127 273 119 270 105 Polygon -7500403 true true -1 195 14 180 36 166 40 153 53 140 82 131 134 133 159 126 188 115 227 108 236 102 238 98 268 86 269 92 281 87 269 103 269 113 x false 0 Polygon -7500403 true true 270 75 225 30 30 225 75 270 Polygon -7500403 true true 30 75 75 30 270 225 225 270 @#$#@#$#@ NetLogo 5.2.1 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ setup go max-ticks party-range number-of-parties number-of-voters voter-modal sd-of-voter-distribution starting-policy coalition-type number-of-coalition-parties number-of-opposition-parties number-of-oppositional-veto-players evaluation-of-change coalition-bonus time-factor evaluation-of-stability threshold-of-penalizing penalizing-all-veto-players nonvoter-distance pseeking-weight vseeking-weight actual-policy-x nonvoter-ratio policy-change old-policy-i new-policy-i number-of-change seed-of-run p1-v p2-v p3-v p4-v p5-v p6-v p7-v p8-v p1-p p2-p p3-p p4-p p5-p p6-p p7-p p8-p p1-c p2-c p3-c p4-c p5-c p6-c p7-c p8-c p1-ov p2-ov p3-ov p4-ov p5-ov p6-ov p7-ov p8-ov willingness-to-change_p1 willingness-to-compromise-vote_p1 willingness-to-compromise-policy_p1 willingness-to-change_p2 willingness-to-compromise-vote_p2 willingness-to-compromise-policy_p2 willingness-to-change_p3 willingness-to-compromise-vote_p3 willingness-to-compromise-policy_p3 willingness-to-change_p4 willingness-to-compromise-vote_p4 willingness-to-compromise-policy_p4 willingness-to-change_p5 willingness-to-compromise-vote_p5 willingness-to-compromise-policy_p5 willingness-to-change_p6 willingness-to-compromise-vote_p6 willingness-to-compromise-policy_p6 willingness-to-change_p7 willingness-to-compromise-vote_p7 willingness-to-compromise-policy_p7 willingness-to-change_p8 willingness-to-compromise-vote_p8 willingness-to-compromise-policy_p8 @#$#@#$#@ @#$#@#$#@ default 0.0 -0.2 1 1.0 0.0 0.0 1 1.0 0.0 0.2 1 1.0 0.0 link direction true 0 Line -7500403 true 150 150 90 180 Line -7500403 true 150 150 210 180 @#$#@#$#@ 0 @#$#@#$#@