From 8fe6f868a3ca4bea9a218de1c2201484ee24a063 Mon Sep 17 00:00:00 2001 From: R0slyn <roslyn.henry.08@aberdeen.ac.uk> Date: Mon, 23 Sep 2019 13:49:31 +0100 Subject: [PATCH] Using random starting utility value causing PLUM to be unreplicatable. Now starting values are incremental. --- src/ac/ed/lurg/country/gams/GamsDemandOutput.java | 6 ++++-- src/ac/ed/lurg/demand/ElasticDemandManager.java | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ac/ed/lurg/country/gams/GamsDemandOutput.java b/src/ac/ed/lurg/country/gams/GamsDemandOutput.java index 450e9866..06a2c353 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 d6aedd33..6fb6cf90 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); -- GitLab