Skip to content
Snippets Groups Projects
Commit 8fe6f868 authored by R0slyn's avatar R0slyn
Browse files

Using random starting utility value causing PLUM to be unreplicatable. Now...

Using random starting utility value causing PLUM to be unreplicatable. Now starting values are incremental.
parent e439a81b
No related branches found
No related tags found
No related merge requests found
...@@ -47,7 +47,9 @@ public class GamsDemandOutput { ...@@ -47,7 +47,9 @@ public class GamsDemandOutput {
return status; return status;
} }
public void resetForNewAttempt() { public void resetForNewAttempt(int i, double inputUtility) {
utility = (Math.random()-0.5) * 40;
if ((i & 1) == 0) utility = inputUtility * -1.0;
else utility = inputUtility + 0.8*i;
} }
} }
...@@ -65,7 +65,8 @@ public class ElasticDemandManager extends AbstractSSPDemandManager { ...@@ -65,7 +65,8 @@ public class ElasticDemandManager extends AbstractSSPDemandManager {
break; break;
else { else {
LogWriter.printlnError(i + ": Problem solving " + c + ", " + year + " got " + gamsOutput.getStatus()); 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); inputData = new GamsDemandInput(c, year, gdpPc, consumerPrices, kcalPerT,usaGdpPc, gamsOutput);
} }
} }
...@@ -110,7 +111,7 @@ public class ElasticDemandManager extends AbstractSSPDemandManager { ...@@ -110,7 +111,7 @@ public class ElasticDemandManager extends AbstractSSPDemandManager {
Map<CommodityType, Double> plumDemands = gamsOutput.getPlumDemands(); Map<CommodityType, Double> plumDemands = gamsOutput.getPlumDemands();
String initialData = String.format("%s,%d,%.2f,%.6f,%s,%.6f,%.6f", String initialData = String.format("%s,%d,%.2f,%.6f,%s,%.6f,%.6f",
inputData.getCountry(), inputData.getYear(),inputData.getGdpPc(), population, inputData.getCountry(), inputData.getYear(),inputData.getGdpPc(), population,
gamsOutput.getStatus(), gamsOutput.getUtility(), gamsOutput.getHungerFactor()); gamsOutput.getStatus(), gamsOutput.getUtility(),gamsOutput.getHungerFactor());
for (CommodityType commodity : CommodityType.values()) { for (CommodityType commodity : CommodityType.values()) {
StringBuffer sbData = new StringBuffer(initialData); StringBuffer sbData = new StringBuffer(initialData);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment