-
Peter Alexander authoredPeter Alexander authored
ModelMain.java 1.98 KiB
package ac.ed.lurg;
import java.io.File;
import java.util.Collection;
import ac.ed.lurg.country.CountryAgent;
import ac.ed.lurg.country.CountryAgentCreator;
import ac.ed.lurg.demand.DemandManager;
import ac.ed.lurg.types.CropType;
import ac.ed.lurg.types.ModelFitType;
import ac.ed.lurg.types.YieldType;
import ac.ed.lurg.yield.YieldManager;
import ac.ed.lurg.yield.YieldResponsesItem;
import ac.ed.lurg.yield.YieldResponseMapReader;
import ac.sac.raster.RasterSet;
public class ModelMain {
private Collection<CountryAgent> countryAgents;
ModelContext modelContext;
public static void main(String[] args) {
ModelMain theModel = new ModelMain();
theModel.setup();
theModel.run();
}
/* setup models, reading inputs, etc. */
private void setup() {
DemandManager demandManager = new DemandManager(ModelFitType.LOGISTIC, "SSP2_v9_130325");
YieldManager yieldManager = new YieldManager();
modelContext = new ModelContext(demandManager, yieldManager);
countryAgents = new CountryAgentCreator().getAgents(modelContext);
}
/* run the model */
private void run() {
for (int i = ModelConfig.START_TIMESTEP; i <= ModelConfig.END_TIMESTEP; i++)
doTimestep(i);
}
private void doTimestep(int timestep) {
RasterSet<YieldResponsesItem> yieldSurfaces = getYieldSurfaces(timestep);
for (CountryAgent ca : countryAgents) {
ca.determineProduction(timestep);
}
// examine global trade balance
}
private RasterSet<YieldResponsesItem> getYieldSurfaces(int timestep) {
String rootDir = ModelConfig.YIELD_DIR + File.separator + (timestep + ModelConfig.START_TIMESTEP) + File.separator;
RasterSet<YieldResponsesItem> yieldSurfaces = null;
for (CropType cropType : CropType.values()) {
for (YieldType yieldType : YieldType.values()) {
YieldResponseMapReader yieldReader = new YieldResponseMapReader(yieldSurfaces, yieldType, cropType);
yieldSurfaces = yieldReader.getRasterDataFromFile(rootDir + yieldType.getFileName());
}
}
return yieldSurfaces;
}
}