comment: >> Press "F2" for the user-friendly interface << :comment base year 2004 scenario years 2007 2010 ## ## Define dimensions & mapping between dimensions ## dim actor 'Environment Ministry' 'Rest of Government' 'Advocacy Groups' 'Industry' ditto 'Command and Control' 'Market Incentive' 'Laissez-Faire': dim position '' dim position_dup '' var pos_ident{position, position_dup} ditto 'Command and Control': pos_ident{position='', position_dup=''} = 1 ditto 'Market Incentive': pos_ident{position='', position_dup=''} = 1 ditto 'Laissez-Faire': pos_ident{position='', position_dup=''} = 1 ## ## Define initial characteristics of actors ## # Capacity: power to enforce one's preferences # Salience: How important the issue is to the actor # Satisfaction: How much satisfaction the actor gains if the position is adopted # 0: very unsatisfied # 5: neutral # 10: very satisfied var Satisfaction{actor, position} Capacity{actor} Salience{actor} ditto actor="Environment Ministry": Capacity.0{''}= <0.5> Satisfaction.0{'' position = "Command and Control"}= <10> Satisfaction.0{'' position = "Market Incentive"}= <5> Satisfaction.0{'' position = "Laissez-Faire"}= <0> ditto actor="Rest of Government": Capacity.0{''}= <1.0> Satisfaction.0{'' position = "Command and Control"}= <0> Satisfaction.0{'' position = "Market Incentive"}= <7> Satisfaction.0{'' position = "Laissez-Faire"}= <10> ditto actor="Advocacy Groups": Capacity.0{''}= <0.1> Satisfaction.0{'' position = "Command and Control"}= <10> Satisfaction.0{'' position = "Market Incentive"}= <0> Satisfaction.0{'' position = "Laissez-Faire"}= <0> ditto actor="Industry": Capacity.0{''}= <0.4> Satisfaction.0{'' position = "Command and Control"}= <0> Satisfaction.0{'' position = "Market Incentive"}= <0> Satisfaction.0{'' position = "Laissez-Faire"}= <10> # Let satisfaction & capacity remain at their base-year values byv Satisfaction byv Capacity # Salience changes over time var bySalience{actor} finSalience{actor} ditto actor='Environment Ministry': bySalience.0{''} = <0.6> #SLIDER -group "Environment Ministry" -min 0 -max 1 -increment 0.1 -labeltext "Initial Salience" -labelwidth 15 -labelanchor w -orient horizontal finSalience.0{''} = <0.6> #SLIDER -group "Environment Ministry" -min 0 -max 1 -increment 0.1 -labeltext "Final Salience" -labelwidth 15 -labelanchor w -orient horizontal ditto actor='Rest of Government': bySalience.0{''} = <0.2> #SLIDER -group "Rest of Government" -min 0 -max 1 -increment 0.1 -labeltext "Initial Salience" -labelwidth 15 -labelanchor w -orient horizontal finSalience.0{''} = <0.6> #SLIDER -group "Rest of Government" -min 0 -max 1 -increment 0.1 -labeltext "Final Salience" -labelwidth 15 -labelanchor w -orient horizontal ditto actor='Advocacy Groups': bySalience.0{''} = <1.0> #SLIDER -group "Advocacy Groups" -min 0 -max 1 -increment 0.1 -labeltext "Initial Salience" -labelwidth 15 -labelanchor w -orient horizontal finSalience.0{''} = <1.0> #SLIDER -group "Advocacy Groups" -min 0 -max 1 -increment 0.1 -labeltext "Final Salience" -labelwidth 15 -labelanchor w -orient horizontal ditto actor='Industry': bySalience.0{''} = <0.4> #SLIDER -group "Industry" -min 0 -max 1 -increment 0.1 -labeltext "Initial Salience" -labelwidth 15 -labelanchor w -orient horizontal finSalience.0{''} = <0.8> #SLIDER -group "Industry" -min 0 -max 1 -increment 0.1 -labeltext "Final Salience" -labelwidth 15 -labelanchor w -orient horizontal # Interpolate between the base-year and final values for Salience byv bySalience byv finSalience :: bySalience + (finSalience - bySalience) * (y - y0)/(y.fin - y.0) -> Salience # Make a copy of the "Satisfaction" variable var Satisfaction_dup{actor, position_dup} :: Satisfaction * pos_ident -> Satisfaction_dup # Sum over actors to get the pairwise balance of votes var Vote{position, position_dup} :: Capacity * Salience * (Satisfaction - Satisfaction_dup) -> Vote # Find the Condorcet winner (who wins in all pairwise groups) # At the end of the loop, Winner = 1 for the Condorcet winner var Winner{position} # Initialize to 1 for all years Winner = 1 foreach position_dup: :: step(Vote{position_dup = ?}) * Winner -> Winner :foreach report Winner as "Condorcet Winner"