-
Peter Alexander authoredPeter Alexander authored
GamsLocationTest.java 5.29 KiB
package ac.ed.lurg.country.gams;
import java.util.HashMap;
import java.util.Map;
import ac.ed.lurg.Timestep;
import ac.ed.lurg.country.CompositeCountry;
import ac.ed.lurg.country.CountryPrice;
import ac.ed.lurg.landuse.LandUseItem;
import ac.ed.lurg.landuse.IrrigationItem;
import ac.ed.lurg.types.CommodityType;
import ac.ed.lurg.types.CropType;
import ac.ed.lurg.types.LandCoverType;
import ac.ed.lurg.types.YieldType;
import ac.ed.lurg.yield.YieldResponsesItem;
public class GamsLocationTest {
public static final int NUM_LOCATIONS_PER_COUNTRY = 3;
public static void main(String[] args) {
GamsLocationTest aGamsTest = new GamsLocationTest();
aGamsTest.run();
}
private void run() {
GamsCountryInput countryLevelInputs = GamsCountryInput.createInput(new CompositeCountry("Test"), getProjectedDemand(), getCountryPrices(), null, null, 0.1);
GamsLocationInput gamsInput = new GamsLocationInput(new Timestep(0), getYields(), getPreviousArea(), getIrrigationCosts(), countryLevelInputs);
GamsLocationOptimiser opti = new GamsLocationOptimiser(gamsInput);
opti.run();
}
Map<CommodityType, Double> getProjectedDemand() {
Map<CommodityType, Double> dummyMap = new HashMap<CommodityType, Double>();
dummyMap.put(CommodityType.CEREALS, 300.0);
dummyMap.put(CommodityType.OILCROPS, 50.0);
dummyMap.put(CommodityType.PULSES, 60.0);
dummyMap.put(CommodityType.STARCHY_ROOTS, 150.0);
dummyMap.put(CommodityType.MEAT, 480.0);
return dummyMap;
}
Map<CropType, CountryPrice> getCountryPrices() {
Map<CropType, CountryPrice> dummyTradeMap = new HashMap<CropType, CountryPrice>();
dummyTradeMap.put(CropType.WHEAT, createCountryPrice(0.15,0.15));
dummyTradeMap.put(CropType.MAIZE, createCountryPrice(0.15,0.15));
dummyTradeMap.put(CropType.RICE, createCountryPrice(0.4,0.4));
dummyTradeMap.put(CropType.OILCROPS, createCountryPrice(0.4,0.4));
dummyTradeMap.put(CropType.PULSES, createCountryPrice(0.2,0.2));
dummyTradeMap.put(CropType.STARCHY_ROOTS, createCountryPrice(0.1,0.1));
dummyTradeMap.put(CropType.MEAT, createCountryPrice(0.2,0.2));
return dummyTradeMap;
}
CountryPrice createCountryPrice(double imports, double exports){
return new CountryPrice(imports,exports);
}
Map<Integer, YieldResponsesItem> getYields() {
YieldResponsesItem yresp = getYieldRespItem(1, 1);
Map<Integer, YieldResponsesItem> returnMap = new HashMap<Integer, YieldResponsesItem>();
for (int i= 1; i<=NUM_LOCATIONS_PER_COUNTRY; i++)
returnMap.put(i, yresp);
return returnMap;
}
YieldResponsesItem getYieldRespItem(double base, double pastureFactor) {
YieldResponsesItem yresp = new YieldResponsesItem();
for (CropType crop : CropType.getAllItems()) {
double factor = base;
if (CropType.PASTURE == crop)
factor = base * pastureFactor;
yresp.setYield(YieldType.NO_FERT_NO_IRRIG, crop, factor);
yresp.setYield(YieldType.FERT_MID_NO_IRRIG, crop, factor*2.2);
yresp.setYield(YieldType.FERT_MAX_NO_IRRIG, crop, factor*3);
// yresp.setYield(YieldType.IRRIG_MID_ONLY, crop, factor*1.8);
yresp.setYield(YieldType.NO_FERT_IRRIG_MAX, crop, factor*2);
yresp.setYield(YieldType.FERT_MAX_IRRIG_MAX, crop, factor*4);
}
return yresp;
}
private Map<Integer, IrrigationItem> getIrrigationCosts() {
Map<Integer, IrrigationItem> returnMap = new HashMap<Integer, IrrigationItem>();
for (int i= 1; i<=NUM_LOCATIONS_PER_COUNTRY; i++) {
IrrigationItem dummyIrrigCost = new IrrigationItem();
dummyIrrigCost.setIrrigCost(Math.random());
returnMap.put(i, dummyIrrigCost);
}
return returnMap;
}
private Map<Integer, LandUseItem> getPreviousArea() {
LandUseItem dummyMap = getAreaItem(0,0);
Map<Integer, LandUseItem> returnMap = new HashMap<Integer, LandUseItem>();
for (int i= 1; i<=NUM_LOCATIONS_PER_COUNTRY; i++)
returnMap.put(i, dummyMap);
return returnMap;
}
LandUseItem getAreaItem(double cereal, double pasture) {
LandUseItem dummyMap = new LandUseItem();
dummyMap.setCropFraction(CropType.WHEAT, 0.2);
dummyMap.setCropFraction(CropType.MAIZE, 0.2);
dummyMap.setCropFraction(CropType.RICE, 0.1);
dummyMap.setCropFraction(CropType.OILCROPS, 0.1);
dummyMap.setCropFraction(CropType.PULSES, 0.1);
dummyMap.setCropFraction(CropType.STARCHY_ROOTS, 0.1);
dummyMap.setLandCoverArea(LandCoverType.PASTURE, pasture);
dummyMap.setLandCoverArea(LandCoverType.CROPLAND, cereal);
dummyMap.setLandCoverArea(LandCoverType.FOREST, 200 - pasture - cereal);
dummyMap.setLandCoverArea(LandCoverType.OTHER_NATURAL, 30);
return dummyMap;
}
Map<CropType, Double> getWorldInputEnergy() {
Map<CropType, Double> dummyMap = new HashMap<CropType, Double>();
dummyMap.put(CropType.WHEAT, 0.4);
dummyMap.put(CropType.MAIZE, 0.4);
dummyMap.put(CropType.RICE, 1.0);
dummyMap.put(CropType.OILCROPS, 10.0);
dummyMap.put(CropType.PULSES, 20.0);
dummyMap.put(CropType.STARCHY_ROOTS, 5.0);
dummyMap.put(CropType.PASTURE, 80.0);
return dummyMap;
}
Map<CropType, Double> getBaseNetImport() {
Map<CropType, Double> dummyMap = new HashMap<CropType, Double>();
dummyMap.put(CropType.WHEAT, 24.0);
dummyMap.put(CropType.MAIZE, 5.0);
dummyMap.put(CropType.OILCROPS, 5.0);
dummyMap.put(CropType.OILCROPS, 10.0);
dummyMap.put(CropType.PULSES, 20.0);
dummyMap.put(CropType.STARCHY_ROOTS, 5.0);
dummyMap.put(CropType.PASTURE, 5.0);
return dummyMap;
}
}