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