{ From user Lonnie, Model Marginal_Abatement at 25-Jan-2015 7:45:07 PM, encoding="UTF-8" } SoftwareVersion 4.6.0 { System Variables with non-default values: } TypeChecking := 1 Checking := 1 SaveOptions := 2 SaveValues := 0 Model Marginal_Abatement Title: Marginal Abatement Description: How to set up a Marginal Abatement graph.~ ~ This example model demonstrates how you can set up a Marginal Abatement graph in Analytica. There is also an accompanying article at:~ ~ ~ Marginal Abatement~ ~ You want to reduce the amount of energy you use to heat your aging house. The marginal abatement graph can help you understand the cost effectiveness of each possible action. Author: Lonnie Chrisman, Ph.D.~ Lumina Decision Systems Date: Sun, Jan 25, 2015 12:02 PM SaveAuthor: Lonnie SaveDate: Sun, Jan 25, 2015 7:45 PM DiagState: 2,-1,10,495,356,17 WindState: 2,803,177,518,310 FontStyle: Arial,15 FileInfo: 0,Model Marginal_Abatement,2,2,0,0,W:\Testmodels\Marginal Abatement home heating.ana Index Action Title: Action Description: The possible actions for reducing energy usage. Definition: ['Weather stripping','New front door','Increased ceiling insulation','Wall insulation','Subfloor insulation','Smart thermostat','Furnace upgrade','Double paned windows'] NodeLocation: 72,32,1 NodeSize: 48,24 {!40000|Att_PrevIndexValue: ['Weather stripping','New front door','Increased ceiling insulation','Wall insulation','Subfloor insulation','Smart thermostat','Furnace upgrade','Double paned windows']} Variable Marginal_cost_of_red Title: Marginal cost of reduction Units: $ / annual MBTU Description: The net $ cost of saving one unit of energy (1 MBTU) for each action. Definition: Net_cost_of_action / Amount_of_reduction NodeLocation: 304,160,1 NodeSize: 48,32 WindState: 2,404,413,476,224 DefnState: 2,261,414,416,303,0,MIDM ValueState: 2,749,115,791,410,0,MIDM Aliases: Alias Marginal_c1422236203 GraphSetup: {!40000|Att_ContLineStyle Graph_Primary_Valdim:6} ReformVal: [Action,Sorted_action] NumberFormat: 2,D,4,2,0,1,4,0,$,0,"ABBREV",0,,,0,0 Variable Amount_of_reduction Title: Amount of reduction Units: annual MBTU Description: How much each action can be expected to reduce annual energy usage.~ ~ The data here is entirely fictional. If you want to include a marginal abatement graph in your model, your model will need to compute this. If you are dealing with CO2 reductions, this would be the potential CO2 emission reduction in tons per year. Definition: Table(Action)(8,15,10,20,5,5,35,50) NodeLocation: 72,96,1 NodeSize: 48,24 WindState: 2,498,307,476,224 DefnState: 2,746,454,416,303,0,MIDM ValueState: 2,168,171,416,303,1,MIDM Aliases: Alias Amount_of_1422236194 Variable Gross_Cost_of_action Title: Gross cost of action Units: $ Description: Each action here is a one-time action. This is the one-time cost required to execute the corresponding action. Definition: Table(Action)(20,1000,400,4000,2000,250,5500,3000) NodeLocation: 72,160,1 NodeSize: 48,24 WindState: 2,301,345,476,224 DefnState: 2,168,254,416,303,0,MIDM ValueState: 2,519,250,685,399,0,MIDM GraphSetup: {!40000|Att_ContLineStyle Graph_Primary_Valdim:6} ReformVal: [Action,Sorted_action] NumberFormat: 2,D,4,2,0,1,4,0,$,0,"ABBREV",0,,,0,0 Constant NPV_per_MBTU Title: NPV per MBTU Units: $ / MBTU Description: This is used to combine a one-time cost with cost savings that occur year after year. It encodes the value (in dollars) of saving one MBTU every year, this year, next year, and so on. ~ ~ There is no mathematical reason to round this. I've done so because it makes the numbers come out nicely (integers) for the example. Definition: Round(Index T := 0..30 do NPV(10%,$5,T),digits:-1) NodeLocation: 184,56,1 NodeSize: 48,24 WindState: 2,719,65,534,279 Variable Net_cost_of_action Title: Net cost of action Units: $ Description: The net cost of an action is the cost to execute it, less the cost savings as a result of doing it. Definition: Gross_Cost_of_action - Amount_of_reduction * NPV_per_MBTU NodeLocation: 184,160,1 NodeSize: 48,24 WindState: 2,275,457,476,224 ValueState: 2,1139,486,416,303,0,MIDM Module Abatement_graph Title: Abatement graph Description: This module contains the logic involved in setting up the actual marginal abatement graph. Author: Lonnie Chrisman, Ph.D.~ Lumina Decision Systems Date: Sun, Jan 25, 2015 5:42 PM NodeLocation: 72,240,1 NodeSize: 56,24 DiagState: 2,98,229,450,266,19 Variable Cum_reduction Title: Cum reduction Units: annual MBTU Description: The cumulative reduction in energy usage if all the action up to and including the given action is executed. Definition: cumulate(Amount_of_reduction[Action=Sorted_action],Sorted_Action) NodeLocation: 184,200,1 NodeSize: 56,24 WindState: 2,102,83,639,224 ValueState: 2,622,27,364,258,0,MIDM Index Cumulative_reduction Title: Cumulative reduction Units: Annual MBTU Description: This index is here to support the Marginal Abatement graph. To get each action to appear as its own data series, we need to transform the data onto a 2-D array, and we need this index for the second index. Definition: Concat(0,CopyIndex(Cum_reduction)) NodeLocation: 344,200,1 NodeSize: 56,24 WindState: 2,721,56,476,224 ValueState: 2,1123,490,416,321,0,MIDM Objective Marginal_Abatement_c Title: Marginal Abatement cost Units: $ / annual MBTU Description: The Marginal Abatement graph.~ Definition: if @Cumulative_reduction=@Sorted_action+1 or @Cumulative_reduction=@Sorted_action ~ then Marginal_cost_of_red[Action=Sorted_action] else null NodeLocation: 344,120,1 NodeSize: 48,32 WindState: 2,102,83,748,224 ValueState: 2,675,126,702,356,1,MIDM Aliases: FormNode Marginal_A1422243890 GraphSetup: {!40000|Att_AreaFill Graph_Primary_Valdim:1} ReformVal: [Cumulative_reduction,Sorted_action] Att__TotalsIndex: [Sorted_action] {!40000|Att_ResultSliceState: [Sorted_action,-1,Cumulative_reduction,1]} {!40000|Att_ColorRole: Cumulative_reduction} Index Sorted_action Title: Sorted action Description: The actions sorted in order of cost effectiveness (i.e., by increasing marginal cost). Definition: SortIndex(Marginal_cost_of_red) NodeLocation: 184,56,1 NodeSize: 48,24 {!40300|Att_SlicerPopupSize: 227,140} Alias Amount_of_1422236194 Title: Amount of reduction Definition: 1 NodeLocation: 64,40,1 NodeSize: 48,24 Original: Amount_of_reduction Alias Marginal_c1422236203 Title: Marginal cost of reduction Definition: 1 NodeLocation: 64,120,1 NodeSize: 48,32 Original: Marginal_cost_of_red Close Abatement_graph FormNode Marginal_A1422243890 Title: Marginal Abatement cost Definition: 1 NodeLocation: 228,296,1 NodeSize: 212,16 NodeInfo: 1,,,,,,0,72,,, Original: Marginal_Abatement_c Close Marginal_Abatement