diff --git a/src/ac/ed/lurg/country/gams/GamsDemandOutput.java b/src/ac/ed/lurg/country/gams/GamsDemandOutput.java index 450e9866c8f926fe5b08d5c04888561e6bd1664c..06a2c353daabdc12c95eac5f90df9ab9f8eca206 100644 --- a/src/ac/ed/lurg/country/gams/GamsDemandOutput.java +++ b/src/ac/ed/lurg/country/gams/GamsDemandOutput.java @@ -47,7 +47,9 @@ public class GamsDemandOutput { return status; } - public void resetForNewAttempt() { - utility = (Math.random()-0.5) * 40; + public void resetForNewAttempt(int i, double inputUtility) { + + if ((i & 1) == 0) utility = inputUtility * -1.0; + else utility = inputUtility + 0.8*i; } } diff --git a/src/ac/ed/lurg/demand/ElasticDemandManager.java b/src/ac/ed/lurg/demand/ElasticDemandManager.java index d6aedd3348511319ad07ee24e1fbb0549442c98f..6fb6cf90596b4e6896ee48fca5d2cb04324921f3 100755 --- a/src/ac/ed/lurg/demand/ElasticDemandManager.java +++ b/src/ac/ed/lurg/demand/ElasticDemandManager.java @@ -65,7 +65,8 @@ public class ElasticDemandManager extends AbstractSSPDemandManager { break; else { LogWriter.printlnError(i + ": Problem solving " + c + ", " + year + " got " + gamsOutput.getStatus()); - gamsOutput.resetForNewAttempt(); + double inputUtility = inputData.getPreviousDemands() == null ? 0 : inputData.getPreviousDemands().getUtility(); + gamsOutput.resetForNewAttempt(i, inputUtility); inputData = new GamsDemandInput(c, year, gdpPc, consumerPrices, kcalPerT,usaGdpPc, gamsOutput); } } @@ -110,7 +111,7 @@ public class ElasticDemandManager extends AbstractSSPDemandManager { Map<CommodityType, Double> plumDemands = gamsOutput.getPlumDemands(); String initialData = String.format("%s,%d,%.2f,%.6f,%s,%.6f,%.6f", inputData.getCountry(), inputData.getYear(),inputData.getGdpPc(), population, - gamsOutput.getStatus(), gamsOutput.getUtility(), gamsOutput.getHungerFactor()); + gamsOutput.getStatus(), gamsOutput.getUtility(),gamsOutput.getHungerFactor()); for (CommodityType commodity : CommodityType.values()) { StringBuffer sbData = new StringBuffer(initialData);