From 7ec3f6a00b102310de8de05746e1bae1b36d8870 Mon Sep 17 00:00:00 2001 From: Peter Alexander <peter@blackhillock.co.uk> Date: Wed, 6 Jul 2016 22:45:22 +0100 Subject: [PATCH] Some output and value changes --- src/ac/ed/lurg/ModelConfig.java | 14 ++++---- .../lurg/country/CompositeCountryManager.java | 2 +- .../lurg/country/gams/GamsCountryInput.java | 2 +- .../country/gams/GamsLocationOptimiser.java | 33 ++++++++++--------- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java index 4e901c47..fb2d9bbd 100644 --- a/src/ac/ed/lurg/ModelConfig.java +++ b/src/ac/ed/lurg/ModelConfig.java @@ -141,25 +141,25 @@ public class ModelConfig { public static final double PASTURE_HARVEST_FRACTION = getDoubleProperty("PASTURE_HARVEST_FRACTION", 0.25); public static final double MEAT_EFFICIENCY = getDoubleProperty("MEAT_EFFICIENCY", 1.0); // 'meat' is includes feed conversion ratio already, this is tech. change or similar public static final double IRRIGIATION_EFFICIENCY = getDoubleProperty("IRRIGIATION_EFFICIENCY", 0.5); - public static final double LAND_CHANGE_ENERGY = getDoubleProperty("LAND_CHANGE_COST", 1.0); + public static final double LAND_CHANGE_COST = getDoubleProperty("LAND_CHANGE_COST", 0.5); public static final double MIN_FEED_RATE = getDoubleProperty("MIN_FEED_RATE", 0.15); public static final double SEED_AND_WASTE_FRACTION = getDoubleProperty("SEED_AND_WASTE_FRACTION", 0.15); - public static final double MARKET_LAMBA = getDoubleProperty("MARKET_LAMBA", 0.3); // controls international market price adjustment rate + public static final double MARKET_LAMBA = getDoubleProperty("MARKET_LAMBA", 0.5); // controls international market price adjustment rate public static final double POPULATION_AGGREG_LIMIT = getDoubleProperty("POPULATION_AGGREG_LIMIT", 40.0); // in millions, smaller countries are aggregated on a regional basis - public static final double UNHANDLED_CROP_AREA = getDoubleProperty("UNHANDLED_CROP_AREA", 0.4); - - public static final double OTHER_INTENSITY_COST = getDoubleProperty("OTHER_INTENSITY_COST", 0.5); + public static final double UNHANDLED_CROP_AREA = getDoubleProperty("UNHANDLED_CROP_AREA", 0.4); // includes fruit veg forage crops set aside and failed crop + + public static final double OTHER_INTENSITY_COST = getDoubleProperty("OTHER_INTENSITY_COST", 0.3); public static final double OTHER_INTENSITY_PARAM = getDoubleProperty("OTHER_INTENSITY_PARAM", 5.0); public static final double IRRIG_COST_SCALE_FACTOR = getDoubleProperty("IRRIG_COST_SCALE_FACTOR", 0.01); public static final double FERTILISER_COST_PER_T = getDoubleProperty("FERTILISER_COST_PER_T", 0.87 * 1.4 * 2); // £900/t N * 1.4$/£ * 2NPK/N public static final double FERTILISER_MAX_COST = FERTILISER_COST_PER_T * MAX_FERT_AMOUNT/1000; - public static final double DOMESTIC_PRICE_MARKUP = getDoubleProperty("DOMESTIC_PRICE_MARKUP", 1.4); + public static final double DOMESTIC_PRICE_MARKUP = getDoubleProperty("DOMESTIC_PRICE_MARKUP", 1.5); public static final double TRANSPORT_LOSSES = getDoubleProperty("TRANSPORT_LOSSES", 0.1); // in international trade - public static final double TRADE_BARRIER_FACTOR = getDoubleProperty("TRADE_BARRIER_FACTOR", 1.4); // price factor in international trade, transport cost and real trade barriers + public static final double TRADE_BARRIER_FACTOR = getDoubleProperty("TRADE_BARRIER_FACTOR", 1.5); // price factor in international trade, transport cost and real trade barriers public static final int NUM_CEREAL_CATEGORIES = getIntProperty("NUM_CEREAL_CATEGORIES", 5); public static final int NUM_PASTURE_CATEGORIES = getIntProperty("NUM_PASTURE_CATEGORIES", 1); diff --git a/src/ac/ed/lurg/country/CompositeCountryManager.java b/src/ac/ed/lurg/country/CompositeCountryManager.java index 64352124..52ab2e02 100644 --- a/src/ac/ed/lurg/country/CompositeCountryManager.java +++ b/src/ac/ed/lurg/country/CompositeCountryManager.java @@ -25,7 +25,7 @@ public class CompositeCountryManager { private void populate(BaseConsumpManager baseConsumpManager) { mapFromSingleCountry = new HashMap<SingleCountry, CompositeCountry>(); - HashSet<String> countryExclusionList = new HashSet<String>(Arrays.asList("Bangladesh", "Portugal", "Haiti", "Democratic Republic of the Congo")); + HashSet<String> countryExclusionList = new HashSet<String>(Arrays.asList("Bangladesh", "Democratic Republic of the Congo")); for (SingleCountry c : baseConsumpManager.getAllCountries()) { CompositeCountry cc; diff --git a/src/ac/ed/lurg/country/gams/GamsCountryInput.java b/src/ac/ed/lurg/country/gams/GamsCountryInput.java index a45ff048..a8192511 100644 --- a/src/ac/ed/lurg/country/gams/GamsCountryInput.java +++ b/src/ac/ed/lurg/country/gams/GamsCountryInput.java @@ -82,7 +82,7 @@ public class GamsCountryInput { } public double getLandChangeCost() { - return ModelConfig.LAND_CHANGE_ENERGY; + return ModelConfig.LAND_CHANGE_COST; } public double getMinFeedRate() { diff --git a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java index a6236cfa..9493c5ed 100644 --- a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java +++ b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java @@ -6,6 +6,19 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Vector; +import com.gams.api.GAMSDatabase; +import com.gams.api.GAMSException; +import com.gams.api.GAMSGlobals; +import com.gams.api.GAMSJob; +import com.gams.api.GAMSOptions; +import com.gams.api.GAMSParameter; +import com.gams.api.GAMSParameterRecord; +import com.gams.api.GAMSSet; +import com.gams.api.GAMSVariable; +import com.gams.api.GAMSVariableRecord; +import com.gams.api.GAMSWorkspace; +import com.gams.api.GAMSWorkspaceInfo; + import ac.ed.lurg.ModelConfig; import ac.ed.lurg.country.GlobalPrice; import ac.ed.lurg.country.ImportExportConstraint; @@ -20,18 +33,6 @@ import ac.ed.lurg.utils.LazyHashMap; import ac.ed.lurg.utils.LogWriter; import ac.ed.lurg.yield.YieldResponsesItem; -import com.gams.api.GAMSDatabase; -import com.gams.api.GAMSException; -import com.gams.api.GAMSGlobals; -import com.gams.api.GAMSJob; -import com.gams.api.GAMSOptions; -import com.gams.api.GAMSParameter; -import com.gams.api.GAMSSet; -import com.gams.api.GAMSVariable; -import com.gams.api.GAMSVariableRecord; -import com.gams.api.GAMSWorkspace; -import com.gams.api.GAMSWorkspaceInfo; - public class GamsLocationOptimiser { private static final boolean DEBUG = true; @@ -188,6 +189,7 @@ public class GamsLocationOptimiser { addItemMapParm(inDB.addParameter("worldImportPrices", 1), countryInput.getWorldImportPrices(), false); addItemMapParm(inDB.addParameter("worldExportPrices", 1), countryInput.getWorldExportPrices(), false); + LogWriter.print("\n"); addScalar(inDB, "meatEfficency", countryInput.getMeatEfficiency()); addScalar(inDB, "fertiliserUnitCost", ModelConfig.FERTILISER_MAX_COST); addScalar(inDB, "otherICost",ModelConfig.OTHER_INTENSITY_COST); @@ -201,7 +203,7 @@ public class GamsLocationOptimiser { private void addScalar(GAMSDatabase gamsDb, String recordName, double val) { GAMSParameter param = gamsDb.addParameter(recordName, 0); param.addRecord().setValue(val); - if (DEBUG) LogWriter.println("\n" + recordName + ": " + val); + if (DEBUG) LogWriter.println(recordName + ": " + val); } private void setPreviousArea(GAMSParameter prevCropP, String locString, String cropTypeString, double d) { @@ -265,7 +267,7 @@ public class GamsLocationOptimiser { // cropAdj = getParmValue(parmCropAdj, itemName); prod = getParmValue(parmProd, itemName); prodCost = getParmValue(parmProdCost, itemName); - + cropUsageData.put(cropType, new CropUsageData(feedAmount, netImport, prod, prodCost)); // cropAdjs.put(cropType, cropAdj); if (DEBUG) LogWriter.println(String.format("\n%s:\tfeedAmount= %.1f,\tnetImports= %.3f,\tprod= %.3f,\tprodCost= %.3f,\tcropAdj= %.3f", itemName, feedAmount, netImport, prod, prodCost, Double.NaN)); @@ -308,7 +310,8 @@ public class GamsLocationOptimiser { private double getParmValue(GAMSParameter aParm, String itemName) { try { - double d = aParm.findRecord(itemName).getValue(); + GAMSParameterRecord record = aParm.findRecord(itemName); + double d = record.getValue(); return d; } catch (GAMSException gamsEx) { -- GitLab