diff --git a/src/ac/ed/lurg/ModelConfig.java b/src/ac/ed/lurg/ModelConfig.java index 746649145c4908aafe93c62b925206e00180ffb4..748f367392d83a3a5c097606f341898a329fe303 100755 --- a/src/ac/ed/lurg/ModelConfig.java +++ b/src/ac/ed/lurg/ModelConfig.java @@ -257,7 +257,7 @@ public class ModelConfig { // Calibration related stuff public static final boolean IS_CALIBRATION_RUN = getBooleanProperty("IS_CALIBRATION_RUN", false); - public static final String CALIB_DIR = IS_CALIBRATION_RUN ? OUTPUT_DIR : getProperty("CALIB_DIR"); + public static final String CALIB_DIR = IS_CALIBRATION_RUN ? OUTPUT_DIR : getProperty("CALIB_DIR", OUTPUT_DIR); public static final int END_FIRST_STAGE_CALIBRATION = getIntProperty("END_FIRST_STAGE_CALIBRATION", 10); public static final String SERIALIZED_LAND_USE_FILE = CALIB_DIR + File.separator + "landUseRaster.ser"; public static final String SERIALIZED_CROP_USAGE_FILE = CALIB_DIR + File.separator + "countryCropUsages.ser"; diff --git a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java index d78210d1914c317305ddbfecdf002ce92283b1e2..016fa1658df1dfeeda447e4d01a1a2578fa44092 100644 --- a/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java +++ b/src/ac/ed/lurg/country/gams/GamsLocationOptimiser.java @@ -9,6 +9,7 @@ import java.util.Vector; import com.gams.api.GAMSDatabase; import com.gams.api.GAMSException; import com.gams.api.GAMSGlobals; +import com.gams.api.GAMSGlobals.ModelStat; import com.gams.api.GAMSJob; import com.gams.api.GAMSOptions; import com.gams.api.GAMSParameter; @@ -337,13 +338,18 @@ public class GamsLocationOptimiser { @SuppressWarnings("serial") private GamsLocationOutput handleResults(GAMSDatabase outDB) { - int modelStatus = (int) outDB.getParameter("ms").findRecord().getValue(); - LogWriter.println(String.format("\n%s %s: Modelstatus %s, Solvestatus %s", - inputData.getCountryInput().getCountry(), - inputData.getTimestep().getYear(), - GAMSGlobals.ModelStat.lookup( modelStatus ), - GAMSGlobals.SolveStat.lookup((int) outDB.getParameter("ss").findRecord().getValue()) )); - + int modelStatusInt = (int) outDB.getParameter("ms").findRecord().getValue(); + ModelStat modelStatus = GAMSGlobals.ModelStat.lookup(modelStatusInt); + String contextString = String.format("%s %s: Modelstatus %s, Solvestatus %s", + inputData.getCountryInput().getCountry(), + inputData.getTimestep().getYear(), + modelStatus.toString(), + GAMSGlobals.SolveStat.lookup((int) outDB.getParameter("ss").findRecord().getValue())); + LogWriter.println("\n" + contextString); + + if (modelStatus != ModelStat.OPTIMAL_LOCAL) + LogWriter.printlnError("Critical!!! Land use incorrectly solved. " + contextString); + GAMSVariable varAreas = outDB.getVariable("area"); GAMSVariable varFertIntensities = outDB.getVariable("fertI"); GAMSVariable varIrrigIntensities = outDB.getVariable("irrigI"); diff --git a/src/ac/ed/lurg/country/gams/GamsLocationOutput.java b/src/ac/ed/lurg/country/gams/GamsLocationOutput.java index df3ed1a1ea10d85f142bcbf29993035e978c90ad..48c7ccfd08c2d834ee673a7efeab75c45d7232fe 100644 --- a/src/ac/ed/lurg/country/gams/GamsLocationOutput.java +++ b/src/ac/ed/lurg/country/gams/GamsLocationOutput.java @@ -2,17 +2,19 @@ package ac.ed.lurg.country.gams; import java.util.Map; +import com.gams.api.GAMSGlobals.ModelStat; + import ac.ed.lurg.landuse.CropUsageData; import ac.ed.lurg.landuse.LandUseItem; import ac.ed.lurg.types.CropType; public class GamsLocationOutput { - int status; + ModelStat status; Map<Integer, LandUseItem> landUses; // data mapped from id (not raster) private Map<CropType, CropUsageData> cropUsageData; - public GamsLocationOutput(int status, + public GamsLocationOutput(ModelStat status, Map<Integer, LandUseItem> landUses, Map<CropType, CropUsageData> cropUsageData) { super(); @@ -21,7 +23,7 @@ public class GamsLocationOutput { this.cropUsageData = cropUsageData; } - public int getStatus() { + public ModelStat getStatus() { return status; } public Map<Integer, LandUseItem> getLandUses() { diff --git a/src/ac/ed/lurg/country/gams/GamsRasterOutput.java b/src/ac/ed/lurg/country/gams/GamsRasterOutput.java index 05ad2abb9f1fc8dd0390058fbddad80cb9540c0d..33e021825cda6bb6983f9df3c5954fa199260fa6 100644 --- a/src/ac/ed/lurg/country/gams/GamsRasterOutput.java +++ b/src/ac/ed/lurg/country/gams/GamsRasterOutput.java @@ -2,6 +2,8 @@ package ac.ed.lurg.country.gams; import java.util.Map; +import com.gams.api.GAMSGlobals.ModelStat; + import ac.ed.lurg.landuse.CropUsageData; import ac.ed.lurg.landuse.LandUseItem; import ac.ed.lurg.types.CropType; @@ -9,7 +11,7 @@ import ac.sac.raster.RasterSet; public class GamsRasterOutput { - private int status; + private ModelStat status; private RasterSet<LandUseItem> landUses; private Map<CropType, CropUsageData> cropUsageData; @@ -19,12 +21,12 @@ public class GamsRasterOutput { this.cropUsageData = cropUsageData; } - public GamsRasterOutput(int status, RasterSet<LandUseItem> intensityRaster, Map<CropType, CropUsageData> cropUsageData) { + public GamsRasterOutput(ModelStat status, RasterSet<LandUseItem> intensityRaster, Map<CropType, CropUsageData> cropUsageData) { this(intensityRaster, cropUsageData); this.status = status; } - public int getStatus() { + public ModelStat getStatus() { return status; }