From 97061eebc295fb7b140b1ef016e6ba15840eae4b Mon Sep 17 00:00:00 2001 From: Peter Alexander <p.m.w.alexander@gmail.com> Date: Thu, 13 Jul 2017 22:09:28 +0100 Subject: [PATCH] Price shift on inital conditions --- src/ac/ed/lurg/ModelConfig.java | 3 ++- src/ac/ed/lurg/ModelMain.java | 20 +++++++++---------- src/ac/ed/lurg/demand/DemandManager.java | 3 ++- .../lurg/yield/LPJYieldResponseMapReader.java | 2 +- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java index 62261efa..7fda5245 100644 --- a/src/ac/ed/lurg/ModelConfig.java +++ b/src/ac/ed/lurg/ModelConfig.java @@ -164,6 +164,7 @@ public class ModelConfig { public static final boolean IS_CALIBRATION_RUN = getBooleanProperty("IS_CALIBRATION_RUN", false); public static final String SERIALIZED_LAND_USE_FILE = getProperty("SERIALIZED_LAND_USE_FILE", OUTPUT_DIR + File.separator + "landUseRaster.ser"); public static final boolean MARKET_ADJ_PRICE = IS_CALIBRATION_RUN ? false : getBooleanProperty("MARKET_ADJ_PRICE", true); + public static final double INITIAL_PRICE_SHIFT = getDoubleProperty("INITIAL_PRICE_SHIFT", 1.0); public static final boolean CHANGE_YIELD_DATA_YEAR = IS_CALIBRATION_RUN ? false : getBooleanProperty("CHANGE_YIELD_DATA_YEAR", true); public static final String CLUSTERED_YIELD_FILE = getProperty("CLUSTERED_YIELD_FILE", OUTPUT_DIR + File.separator + "cluster.asc"); @@ -237,7 +238,7 @@ public class ModelConfig { public static final double OTHER_INTENSITY_COST = getDoubleProperty("OTHER_INTENSITY_COST", 0.4); public static final double OTHER_INTENSITY_PARAM = getDoubleProperty("OTHER_INTENSITY_PARAM", 3.22); - public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.0007); + public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.0006); public static final double FERTILISER_COST_PER_T = getDoubleProperty("FERTILISER_COST_PER_T", 2.7); // $500/t, 18% N/t public static final double FERTILISER_MAX_COST = FERTILISER_COST_PER_T * MAX_FERT_AMOUNT/1000; diff --git a/src/ac/ed/lurg/ModelMain.java b/src/ac/ed/lurg/ModelMain.java index 004891ec..bc5a76c5 100644 --- a/src/ac/ed/lurg/ModelMain.java +++ b/src/ac/ed/lurg/ModelMain.java @@ -97,16 +97,16 @@ public class ModelMain { // in first timestep we don't have this info, but ok as constrained to import/export specified amount, values based on http://www.indexmundi.com/commodities/ for Jun 2010 prevWorldPrices = new HashMap<CropType, GlobalPrice>(); - prevWorldPrices.put(CropType.WHEAT, GlobalPrice.createInitial(0.157)); - prevWorldPrices.put(CropType.MAIZE, GlobalPrice.createInitial(0.152)); - prevWorldPrices.put(CropType.RICE, GlobalPrice.createInitial(0.282)); - prevWorldPrices.put(CropType.OILCROPS, GlobalPrice.createInitial((0.820 * .4 + 0.314 * .6))); - - prevWorldPrices.put(CropType.PULSES, GlobalPrice.createInitial(0.4)); - prevWorldPrices.put(CropType.STARCHY_ROOTS, GlobalPrice.createInitial(0.1)); - prevWorldPrices.put(CropType.MONOGASTRICS, GlobalPrice.createInitial(0.4 * 0.5)); // quantities is in feed equivalent term (0.4 is weighted average price per feed, and 0.5 accounts for mark-up for additional processing) - prevWorldPrices.put(CropType.RUMINANTS, GlobalPrice.createInitial(0.2 * 0.6)); // quantities is in feed equivalent term - prevWorldPrices.put(CropType.ENERGY_CROPS, GlobalPrice.createInitial(0.04)); + prevWorldPrices.put(CropType.WHEAT, GlobalPrice.createInitial(0.157 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.MAIZE, GlobalPrice.createInitial(0.152 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.RICE, GlobalPrice.createInitial(0.182 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.OILCROPS, GlobalPrice.createInitial((0.820 * .4 + 0.314 * .6)*0.5 * ModelConfig.INITIAL_PRICE_SHIFT)); + + prevWorldPrices.put(CropType.PULSES, GlobalPrice.createInitial(0.4 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.put(CropType.STARCHY_ROOTS, GlobalPrice.createInitial(0.1 * ModelConfig.INITIAL_PRICE_SHIFT)); + prevWorldPrices.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) + prevWorldPrices.put(CropType.RUMINANTS, GlobalPrice.createInitial(0.1 * 0.6 * ModelConfig.INITIAL_PRICE_SHIFT)); // quantities is in feed equivalent term + prevWorldPrices.put(CropType.ENERGY_CROPS, GlobalPrice.createInitial(0.04 * ModelConfig.INITIAL_PRICE_SHIFT)); prevStockLevel = getInitialStockLevels(); } diff --git a/src/ac/ed/lurg/demand/DemandManager.java b/src/ac/ed/lurg/demand/DemandManager.java index 29f8a5a6..f24a65b2 100644 --- a/src/ac/ed/lurg/demand/DemandManager.java +++ b/src/ac/ed/lurg/demand/DemandManager.java @@ -73,7 +73,8 @@ public class DemandManager { } public double getSecondGenBioenergyDemand(Timestep timestep) { - double d = bioenergyDemandManager.getSecondGenBioenergyDemand(timestep.getYear()); + int year = ModelConfig.CHANGE_DEMAND_YEAR ? timestep.getYear() : ModelConfig.BASE_YEAR; + double d = bioenergyDemandManager.getSecondGenBioenergyDemand(year); LogWriter.println("Global gen2 bioenergy demand in " + timestep + " is " + d); return d; } diff --git a/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java b/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java index 63c9e118..e1eff57e 100644 --- a/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java +++ b/src/ac/ed/lurg/yield/LPJYieldResponseMapReader.java @@ -39,7 +39,7 @@ public class LPJYieldResponseMapReader { // arithmetic adjustment of yield for tech change int yearsOfTech = (timestep.getTimestep() - ModelConfig.TECHNOLOGY_CHANGE_START_STEP) * ModelConfig.TIMESTEP_SIZE; - techYieldAdj = yearsOfTech > 0 ? (1.0 + yearsOfTech * ModelConfig.TECHNOLOGY_CHANGE_ANNUAL_RATE) : 1.0 ; + techYieldAdj = 1.0 + yearsOfTech * ModelConfig.TECHNOLOGY_CHANGE_ANNUAL_RATE; LogWriter.println("Yield adjustment for technology for " + timestep + " is " + techYieldAdj); YieldRaster yieldRaster = new YieldRaster(rasterProj); -- GitLab