diff --git a/data/shockDistributions.csv b/data/shockDistributions.csv index 0ff6362b4513739d78c9f44a124b9006d3426c0c..5ebfa56d2aaa72965e77e67eda019f140b9d3a0b 100644 --- a/data/shockDistributions.csv +++ b/data/shockDistributions.csv @@ -1,5 +1,5 @@ shock,pname,min,max,type -protectionism,TRADE_BARRIERS_MULTIPLIER,0.1,0.2,additive +protectionism,TRADE_BARRIER_MULTIPLIER,0.1,0.2,additive protectionism ,TRANSPORT_COST,0.5,1,multiplicative protectionism ,TRANSPORT_LOSSES,0.05,0.1,additive automation,TRANSPORT_COST,-0.25,-0.5,multiplicative diff --git a/data/sims/shocks_params.csv b/data/sims/shocks_params.csv index acbef527c43cf12e3400e9dcb0c56725f9d60237..0f98716cd9dab5ca91f920ab7e354b2d1ad4bc6a 100644 --- a/data/sims/shocks_params.csv +++ b/data/sims/shocks_params.csv @@ -4,11 +4,11 @@ SSP2,AGRI_LAND_EXPANSION_COST_FACTOR,beta,0,2,0.8,1,1.2, SSP3,AGRI_LAND_EXPANSION_COST_FACTOR,beta,0,2,0.3,0.5,0.8, SSP4,AGRI_LAND_EXPANSION_COST_FACTOR,beta,0,2,0.5,0.8,1, SSP5,AGRI_LAND_EXPANSION_COST_FACTOR,beta,0,2,0.5,0.8,1.2, -SSP1,ANNUAL_MAX_IMPORT_CHANGE,beta,0.01,0.16,0.08,0.11,0.14, -SSP2,ANNUAL_MAX_IMPORT_CHANGE,beta,0.01,0.16,0.07,0.1,0.13, -SSP3,ANNUAL_MAX_IMPORT_CHANGE,beta,0.01,0.16,0.03,0.06,0.09, -SSP4,ANNUAL_MAX_IMPORT_CHANGE,beta,0.01,0.16,0.05,0.08,0.11, -SSP5,ANNUAL_MAX_IMPORT_CHANGE,beta,0.01,0.16,0.09,0.12,0.15, +SSP1,ANNUAL_MAX_IMPORT_CHANGE,value,,,,,,0.05 +SSP2,ANNUAL_MAX_IMPORT_CHANGE,value,,,,,,0.05 +SSP3,ANNUAL_MAX_IMPORT_CHANGE,value,,,,,,0.05 +SSP4,ANNUAL_MAX_IMPORT_CHANGE,value,,,,,,0.05 +SSP5,ANNUAL_MAX_IMPORT_CHANGE,value,,,,,,0.05 SSP1,BIOENERGY_DEMAND_SHIFT,unif,0.9,1.1,,,, SSP2,BIOENERGY_DEMAND_SHIFT,unif,0.9,1.1,,,, SSP3,BIOENERGY_DEMAND_SHIFT,unif,0.9,1.1,,,, @@ -19,11 +19,11 @@ SSP2,CROP_TO_PASTURE_COST_FACTOR,unif,0.8,1.2,,,, SSP3,CROP_TO_PASTURE_COST_FACTOR,unif,0.8,1.2,,,, SSP4,CROP_TO_PASTURE_COST_FACTOR,unif,0.8,1.2,,,, SSP5,CROP_TO_PASTURE_COST_FACTOR,unif,0.8,1.2,,,, -SSP1,FERTILISER_COST_PER_T,beta,0.2,2.6,1.4,2,2.3, -SSP2,FERTILISER_COST_PER_T,beta,0.2,2.6,1.1,1.4,1.7, -SSP3,FERTILISER_COST_PER_T,beta,0.2,2.6,0.4,1.1,1.7, -SSP4,FERTILISER_COST_PER_T,beta,0.2,2.6,0.8,1.7,2.3, -SSP5,FERTILISER_COST_PER_T,beta,0.2,2.6,0.4,0.8,1.4, +SSP1,FERTILISER_COST_PER_T,beta,0.4,2.8,1.6,2.2,2.5, +SSP2,FERTILISER_COST_PER_T,beta,0.4,2.8,1.3,1.6,1.9, +SSP3,FERTILISER_COST_PER_T,beta,0.4,2.8,0.6,1.3,1.9, +SSP4,FERTILISER_COST_PER_T,beta,0.4,2.8,1,1.9,2.5, +SSP5,FERTILISER_COST_PER_T,beta,0.4,2.8,0.6,1,1.6, SSP1,INITIAL_PRICE_SHIFT,unif,0.8,1.2,,,, SSP2,INITIAL_PRICE_SHIFT,unif,0.8,1.2,,,, SSP3,INITIAL_PRICE_SHIFT,unif,0.8,1.2,,,, @@ -89,11 +89,11 @@ SSP2,TECHNOLOGY_CHANGE_ANNUAL_RATE,beta,-0.004,0.008,0.001,0.002,0.003, SSP3,TECHNOLOGY_CHANGE_ANNUAL_RATE,beta,-0.004,0.008,-0.001,0,0.001, SSP4,TECHNOLOGY_CHANGE_ANNUAL_RATE,beta,-0.004,0.008,0,0.002,0.005, SSP5,TECHNOLOGY_CHANGE_ANNUAL_RATE,beta,-0.004,0.008,0.002,0.004,0.005, -SSP1,TRADE_BARRIERS_MULTIPLIER,beta,0,2,0.6,0.8,1, -SSP2,TRADE_BARRIERS_MULTIPLIER,beta,0,2,0.8,1,1.2, -SSP3,TRADE_BARRIERS_MULTIPLIER,beta,0,2,1.2,1.5,1.8, -SSP4,TRADE_BARRIERS_MULTIPLIER,beta,0,2,1,1.2,1.5, -SSP5,TRADE_BARRIERS_MULTIPLIER,beta,0,2,0.3,0.6,0.8, +SSP1,TRADE_BARRIER_MULTIPLIER,beta,0,2,0.6,0.8,1, +SSP2,TRADE_BARRIER_MULTIPLIER,beta,0,2,0.8,1,1.2, +SSP3,TRADE_BARRIER_MULTIPLIER,beta,0,2,1.2,1.5,1.8, +SSP4,TRADE_BARRIER_MULTIPLIER,beta,0,2,1,1.2,1.5, +SSP5,TRADE_BARRIER_MULTIPLIER,beta,0,2,0.3,0.6,0.8, SSP1,TRANSPORT_COST,beta,0.01,0.09,0.05,0.065,0.08, SSP2,TRANSPORT_COST,beta,0.01,0.09,0.04,0.05,0.06, SSP3,TRANSPORT_COST,beta,0.01,0.09,0.02,0.04,0.06, @@ -144,8 +144,8 @@ SSP2,STARCHY_ROOTS_SUB_PROPORTION,unif,0.15,0.45,,,, SSP3,STARCHY_ROOTS_SUB_PROPORTION,unif,0.15,0.45,,,, SSP4,STARCHY_ROOTS_SUB_PROPORTION,unif,0.15,0.45,,,, SSP5,STARCHY_ROOTS_SUB_PROPORTION,unif,0.15,0.45,,,, -SSP1,ORIG_LEAST_COST_MIN,value,,,,,,FALSE -SSP2,ORIG_LEAST_COST_MIN,value,,,,,,FALSE -SSP3,ORIG_LEAST_COST_MIN,value,,,,,,FALSE -SSP4,ORIG_LEAST_COST_MIN,value,,,,,,FALSE -SSP5,ORIG_LEAST_COST_MIN,value,,,,,,FALSE +SSP1,ORIG_LEAST_COST_MIN,value,,,,,,TRUE +SSP2,ORIG_LEAST_COST_MIN,value,,,,,,TRUE +SSP3,ORIG_LEAST_COST_MIN,value,,,,,,TRUE +SSP4,ORIG_LEAST_COST_MIN,value,,,,,,TRUE +SSP5,ORIG_LEAST_COST_MIN,value,,,,,,TRUE diff --git a/scripts/createShockFiles.R b/scripts/createShockFiles.R index 991dd137666726031780f053760794c846088aca..37c1bca3d094ab80d5e740bb82b393b64b74aaf6 100644 --- a/scripts/createShockFiles.R +++ b/scripts/createShockFiles.R @@ -11,7 +11,7 @@ createShockFile = function(scenario){ paramValues = data.table(Year = seq(2010,2100,1), trendYearValue = c(rep(0,16),seq(0.2,1,0.2),rep(1,70)), - TRADE_BARRIERS_MULTIPLIER =scenario[,TRADE_BARRIERS_MULTIPLIER], + TRADE_BARRIER_MULTIPLIER =scenario[,TRADE_BARRIER_MULTIPLIER], TRANSPORT_COST = scenario[,TRANSPORT_COST], TECHNOLOGY_CHANGE_ANNUAL_RATE = scenario[,TECHNOLOGY_CHANGE_ANNUAL_RATE], MEAT_EFFICIENCY = scenario[,MEAT_EFFICIENCY], @@ -32,7 +32,7 @@ createShockFile = function(scenario){ financial =as.logical(rbinom(91,size=1,prob = shockProbs[ssp == substr(scenario[,SSP_SCENARIO],1,4),financial]))) shockValues = data.table(Year = rep(seq(2010,2100,1),6),shock = rep(c("protectionism","automation","diet","cyber","climate","financial"), each=91), - TRADE_BARRIERS_MULTIPLIER = 0, + TRADE_BARRIER_MULTIPLIER = 0, TRANSPORT_COST = 0, TECHNOLOGY_CHANGE_ANNUAL_RATE = 0, MEAT_EFFICIENCY = 0, diff --git a/src/ac/ed/lurg/InternationalMarket.java b/src/ac/ed/lurg/InternationalMarket.java index ea0d14fe54295bf5eabe1c7f51070aca0c71375d..3af04072de454265adeafe9a3acdc9658199728c 100644 --- a/src/ac/ed/lurg/InternationalMarket.java +++ b/src/ac/ed/lurg/InternationalMarket.java @@ -25,15 +25,15 @@ public class InternationalMarket { // import/export specified amount, values based on // http://www.indexmundi.com/commodities/ for Jun 2010 worldPrices = new HashMap<CropType, GlobalPrice>(); - worldPrices.put(CropType.WHEAT, GlobalPrice.createInitial(0.157 * ModelConfig.INITIAL_PRICE_SHIFT)); - worldPrices.put(CropType.MAIZE, GlobalPrice.createInitial(0.152 * ModelConfig.INITIAL_PRICE_SHIFT)); - worldPrices.put(CropType.RICE, GlobalPrice.createInitial(0.182 * ModelConfig.INITIAL_PRICE_SHIFT)); - worldPrices.put(CropType.OILCROPS, GlobalPrice.createInitial((0.820 * .4 + 0.314 * .6) * 0.5 * ModelConfig.INITIAL_PRICE_SHIFT)); + worldPrices.put(CropType.WHEAT, GlobalPrice.createInitial(0.12 * ModelConfig.INITIAL_PRICE_SHIFT)); + worldPrices.put(CropType.MAIZE, GlobalPrice.createInitial(0.09 * ModelConfig.INITIAL_PRICE_SHIFT)); + worldPrices.put(CropType.RICE, GlobalPrice.createInitial(0.17 * ModelConfig.INITIAL_PRICE_SHIFT)); + worldPrices.put(CropType.OILCROPS, GlobalPrice.createInitial(0.16 * ModelConfig.INITIAL_PRICE_SHIFT)); - worldPrices.put(CropType.PULSES, GlobalPrice.createInitial(0.4 * ModelConfig.INITIAL_PRICE_SHIFT)); - worldPrices.put(CropType.STARCHY_ROOTS, GlobalPrice.createInitial(0.1 * ModelConfig.INITIAL_PRICE_SHIFT)); - worldPrices.put(CropType.MONOGASTRICS, GlobalPrice.createInitial(0.4 * 0.5 * ModelConfig.INITIAL_PRICE_SHIFT)); // quantities is in feed equivalent term (0.4 is weighted average price per feed, and 0.5 accounts for mark-up for additional processing) - worldPrices.put(CropType.RUMINANTS, GlobalPrice.createInitial(0.1 * 0.6 * ModelConfig.INITIAL_PRICE_SHIFT)); // quantities is in feed equivalent term + worldPrices.put(CropType.PULSES, GlobalPrice.createInitial(0.12 * ModelConfig.INITIAL_PRICE_SHIFT)); + worldPrices.put(CropType.STARCHY_ROOTS, GlobalPrice.createInitial(0.05 * ModelConfig.INITIAL_PRICE_SHIFT)); + worldPrices.put(CropType.MONOGASTRICS, GlobalPrice.createInitial(0.11 * ModelConfig.INITIAL_PRICE_SHIFT)); // quantities is in feed equivalent term (0.4 is weighted average price per feed, and 0.5 accounts for mark-up for additional processing) + worldPrices.put(CropType.RUMINANTS, GlobalPrice.createInitial(0.06 * ModelConfig.INITIAL_PRICE_SHIFT)); // quantities is in feed equivalent term worldPrices.put(CropType.ENERGY_CROPS, GlobalPrice.createInitial(0.04 * ModelConfig.INITIAL_PRICE_SHIFT)); stockLevel = getInitialStockLevels(); } diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java index 7d05e3818e532b17499405d56eb2e83933177561..bfe6f6d57c5bff45aa0ec7e1e7a429d02720b23b 100644 --- a/src/ac/ed/lurg/ModelConfig.java +++ b/src/ac/ed/lurg/ModelConfig.java @@ -105,7 +105,7 @@ public class ModelConfig { public static void readInShocksFile(){ - shocksReader = new StringTabularReader(",", new String[]{"Year","trendYearValue", "TRADE_BARRIERS_MULTIPLIER", "TRANSPORT_COST", "TECHNOLOGY_CHANGE_ANNUAL_RATE", "MEAT_EFFICIENCY", + shocksReader = new StringTabularReader(",", new String[]{"Year","trendYearValue", "TRADE_BARRIER_MULTIPLIER", "TRANSPORT_COST", "TECHNOLOGY_CHANGE_ANNUAL_RATE", "MEAT_EFFICIENCY", "FERTILISER_COST_PER_T","OTHER_INTENSITY_COST", "TRANSPORT_LOSSES", "IRRIG_COST_MULTIPLIER", "RUMINANT_CHANGE_ANNUAL_RATE", "MONOGASTRIC_CHANGE_ANNUAL_RATE", "IRRIG_EFF_MULTIPLIER", "FINANCIAL_SPECULATION_MULTIPLIER"}); @@ -348,4 +348,6 @@ public class ModelConfig { public static final boolean FORCE_PROTECTED_AREAS = IS_CALIBRATION_RUN ? false : getBooleanProperty("FORCE_PROTECTED_AREAS", false); public static final int FORCE_PROTECTED_AREAS_START_YEAR = getIntProperty("FORCE_PROTECTED_AREAS_START_YEAR", 2020); public static final int FORCE_PROTECTED_AREAS_END_YEAR = getIntProperty("FORCE_PROTECTED_AREAS_END_YEAR", 2050); + + public static final double US_EXPORT_TARRIFF = getDoubleProperty("US_EXPORT_TARRIFF",1.0); } diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java index ba088af10845d42149b5db239b070549a3128247..60423a039edf62c7ea4751fea34c147e01fdc16b 100644 --- a/src/ac/ed/lurg/ModelMain.java +++ b/src/ac/ed/lurg/ModelMain.java @@ -348,7 +348,7 @@ private void writeDomesticProductionFile(Timestep timestep) { StringBuffer sbData = new StringBuffer(); sbData.append(String.format("%d,%s,%s", timestep.getYear(), country.getCountry(), crop.getGamsName())); - sbData.append(String.format(",%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f,%.3f", area, prod, prodCosts, importPrice, exportPrice, netImports, rumFeedAmount, monFeedAmount)); + sbData.append(String.format(",%.3f,%.3f,%.3f,%.10f,%.10f,%.3f,%.3f,%.3f", area, prod, prodCosts, importPrice, exportPrice, netImports, rumFeedAmount, monFeedAmount)); outputFile.write(sbData.toString()); outputFile.newLine(); diff --git a/src/ac/ed/lurg/country/GlobalPrice.java b/src/ac/ed/lurg/country/GlobalPrice.java index b7c134e802f8428af07fde2fc333a5b8c8c46ab2..8fbdca1404776a2228ece91b25f28ef46b655f16 100644 --- a/src/ac/ed/lurg/country/GlobalPrice.java +++ b/src/ac/ed/lurg/country/GlobalPrice.java @@ -30,7 +30,7 @@ public class GlobalPrice { int currentYear = timestep.getYear(); - double tradeBarrierMultiplier = (!ModelConfig.SHOCKS_POSSIBLE)? ModelConfig.TRADE_BARRIER_MULTIPLIER: ModelConfig.getParameter(Parameter.TRADE_BARRIERS_MULTIPLIER, currentYear); + double tradeBarrierMultiplier = (!ModelConfig.SHOCKS_POSSIBLE)? ModelConfig.TRADE_BARRIER_MULTIPLIER: ModelConfig.getParameter(Parameter.TRADE_BARRIER_MULTIPLIER, currentYear); double transportLosses =(!ModelConfig.SHOCKS_POSSIBLE) ? ModelConfig.TRANSPORT_LOSSES : ModelConfig.getParameter(Parameter.TRANSPORT_LOSSES, currentYear); double transportCosts = (!ModelConfig.SHOCKS_POSSIBLE) ? ModelConfig.TRANSPORT_COST : ModelConfig.getParameter(Parameter.TRANSPORT_COST, currentYear); diff --git a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java index 64655fc43eef9fca95f871552a183ecaf5248508..9ca887d272a1fd5b6194f9bb9f5360a8fe5e318a 100644 --- a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java +++ b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java @@ -94,7 +94,7 @@ public class GamsLocationOptimiser { GAMSParameter previousMonogastricFeedP = inDB.addParameter("previousMonogastricFeed", 1); GAMSParameter previousImportAmountP = inDB.addParameter("previousImportAmount", 1); GAMSParameter previousExportAmountP = inDB.addParameter("previousExportAmount", 1); - + GAMSParameter landP = inDB.addParameter("suitableLandArea", 1); GAMSParameter agriExpansionCostP = inDB.addParameter("agriExpansionCost", 1); GAMSParameter seedAndWasteRateP = inDB.addParameter("seedAndWasteRate", 1); @@ -116,6 +116,7 @@ public class GamsLocationOptimiser { if (DEBUG) LogWriter.println(String.format(" %d %15s,\t %.3f", locationId, "agriExpansionCost", agriExpansionCost)); setGamsParamValue(agriExpansionCostP.addRecord(Integer.toString(locationId)), agriExpansionCost, 3); + for (CropType cropType : CropType.getNonMeatTypes()) { Vector<String> v = new Vector<String>(); v.add(cropType.getGamsName()); @@ -153,8 +154,9 @@ public class GamsLocationOptimiser { setGamsParamValue(prevFertIP.addRecord(v), prevFertI, 4); setGamsParamValue(prevIrrigIP.addRecord(v), prevIrrigI, 4); setGamsParamValue(prevOtherIP.addRecord(v), prevOtherI, 4); - + totalAgriLand += area; + } } if (DEBUG) LogWriter.println(String.format(" Total agricultural %.1f,\t suitable %.1f", totalAgriLand, totalSuitable)); @@ -199,6 +201,8 @@ public class GamsLocationOptimiser { GAMSParameter fert_p = inDB.addParameter("fertParam", 2); GAMSParameter irrig_p = inDB.addParameter("irrigParam", 2); GAMSParameter irrigMaxP = inDB.addParameter("irrigMaxRate", 2); + + for (Entry<Integer, ? extends YieldResponsesItem> entry : inputData.getYields().entrySet()) { Integer locationId = entry.getKey(); @@ -248,13 +252,14 @@ public class GamsLocationOptimiser { GAMSParameter importPriceP = inDB.addParameter("importPrices", 1); GAMSParameter exportPriceP = inDB.addParameter("exportPrices", 1); - for (CropType crop : CropType.getImportedTypes()) { + for (CropType crop : CropType.getImportedTypes()) { TradeOrProductionConstraint iec = countryInput.getTradeOrProductionConstraints().get(crop); CountryPrice gp = countryInput.getCountryPrices().get(crop); double minTradeOrProd = iec.getMinConstraint(); double maxTradeOrProd = iec.getMaxConstraint(); double importPrice = gp.getImportPrice(); double exportPrice = gp.getExportPrice(); + CropUsageData cu = countryInput.getPreviousCropUsageData().get(crop); double netImports = cu.getNetImports(); double imports = netImports>0 ? netImports : 0; @@ -283,7 +288,8 @@ public class GamsLocationOptimiser { double meatEff = (!ModelConfig.SHOCKS_POSSIBLE) ? ModelConfig.MEAT_EFFICIENCY: ModelConfig.getParameter(Parameter.MEAT_EFFICIENCY, inputData.getTimestep().getYear()); double fertCost = (!ModelConfig.SHOCKS_POSSIBLE) ? ModelConfig.FERTILISER_MAX_COST : ModelConfig.getParameter(Parameter.FERTILISER_COST_PER_T, inputData.getTimestep().getYear()) * ModelConfig.MAX_FERT_AMOUNT/1000; double otherIntCost = (!ModelConfig.SHOCKS_POSSIBLE) ? ModelConfig.OTHER_INTENSITY_COST : ModelConfig.getParameter(Parameter.OTHER_INTENSITY_COST, inputData.getTimestep().getYear()); - + + LogWriter.print("\n"); addScalar(inDB, "cropIncCost", ModelConfig.CROP_INCREASE_COST, 3); addScalar(inDB, "cropDecCost", ModelConfig.CROP_DECREASE_COST, 3); @@ -388,11 +394,13 @@ public class GamsLocationOptimiser { cropUsageData.put(cropType, new CropUsageData(ruminantFeed, monogastricFeed, netImport, netImportCost, prod, prodCost, totalArea)); if (DEBUG) LogWriter.println(String.format("\n%s:\tarea= %.1f,\tmonogastricFeed= %.1f,\truminantFeed= %.1f,\tnetImports= %.3f,\tnetImportCost= %.3f,\tprod= %.3f,\tprodCost= %.3f,\tprodCostRate= %.3f", itemName, totalArea, monogastricFeed, ruminantFeed, netImport, netImportCost, prod, prodCost, prodCost/prod)); + } LandUseItem landUseItem = landUses.lazyGet(locId); if (area > 0) { + if (DEBUG) LogWriter.println(String.format("\t location %s, %s:\tarea= %.1f,\tfert= %.3f,\tirrg= %.3f,\tintensity= %.3f", locationName, itemName, area, fertIntensity, irrigIntensity, otherIntensity)); IrrigationItem irrigRefData = allIrrigationRefData.get(locId); landUseItem.setIntensity(cropType, new Intensity(fertIntensity, irrigIntensity, otherIntensity, yield, unitCost, irrigRefData.getMaxIrrigAmount(cropType))); diff --git a/src/ac/ed/lurg/landuse/CropUsageData.java b/src/ac/ed/lurg/landuse/CropUsageData.java index 45d3e1b984c73bd58a43eab1cb570249fa9eabd6..828a710d11b3a810225fe301154f76ad15d7a6c1 100644 --- a/src/ac/ed/lurg/landuse/CropUsageData.java +++ b/src/ac/ed/lurg/landuse/CropUsageData.java @@ -5,7 +5,6 @@ public class CropUsageData { private double ruminantFeed; private double monogastricFeed; private double netImports; - private double netImportCost; private double prod; private double prodCost; private double area; @@ -15,7 +14,6 @@ public class CropUsageData { this.ruminantFeed = ruminantFeed; this.monogastricFeed = monogastricFeed; this.netImports = netImports; - this.netImportCost=netImportCost; this.prod = prod; this.prodCost = prodCost; this.area= area; diff --git a/src/ac/ed/lurg/types/CropType.java b/src/ac/ed/lurg/types/CropType.java index e2257b7877dde45be0162bd9e33db5fb505a9151..9277a7ae29f7c092959d87c22bd81a17de3e9e2d 100644 --- a/src/ac/ed/lurg/types/CropType.java +++ b/src/ac/ed/lurg/types/CropType.java @@ -130,4 +130,5 @@ public enum CropType { public double getSeedAndWasteRate() { return seedAndWasteRate; } + } diff --git a/src/ac/ed/lurg/types/Parameter.java b/src/ac/ed/lurg/types/Parameter.java index 9dd25305f2ef1a8ea5b7d0351a2d28ce6c7cf28a..a45fd8f389d10bcb246f17189162a4ad2f9ef8d1 100644 --- a/src/ac/ed/lurg/types/Parameter.java +++ b/src/ac/ed/lurg/types/Parameter.java @@ -2,7 +2,7 @@ package ac.ed.lurg.types; public enum Parameter { - TRADE_BARRIERS_MULTIPLIER("TRADE_BARRIERS_MULTIPLIER"), + TRADE_BARRIER_MULTIPLIER("TRADE_BARRIER_MULTIPLIER"), TRANSPORT_LOSSES("TRANSPORT_LOSSES"), TRANSPORT_COST("TRANSPORT_COST"), TECHNOLOGY_CHANGE_ANNUAL_RATE("TECHNOLOGY_CHANGE_ANNUAL_RATE"),