21 package org.matsim.core.replanning.modules;
23 import java.util.HashMap;
61 interface ExeRunnerDelegate {
62 public boolean invoke();
65 private static final String
SCENARIO =
"scenario";
89 this.modulePrefix = moduleId +
"_";
93 this.exeRunnerDelegate =
new ExeRunnerDelegate() {
95 public boolean invoke() {
97 String logfilename = controler.
getIterationFilename(currentIteration, modulePrefix +
"stdout.log");
104 this.modulePrefix = moduleId +
"_";
113 this.currentIteration = replanningContext.
getIteration();
126 personWithOnlySelectedPlan.
addPlan(planForNewPerson);
127 this.exportPopulation.
addPerson(personWithOnlySelectedPlan);
128 this.plansToMutate.put(plan.
getPerson().getId(), plan);
135 boolean successful = this.exeRunnerDelegate.invoke();
146 plansWriter.
write(filename);
152 if (configFileName == null) {
160 extConfig.
setParam(SCENARIO, SCENARIO_INPUT_PLANS_FILENAME, this.outFileRoot +
"/" + this.modulePrefix + ExternalInFileName);
161 extConfig.
setParam(SCENARIO, SCENARIO_WORKING_PLANS_FILENAME, this.outFileRoot +
"/" + this.modulePrefix + ExternalOutFileName);
162 extConfig.
setParam(SCENARIO, SCENARIO_WORKING_EVENTS_TXT_FILENAME, this.controler.
getIterationFilename(
this.currentIteration - 1,
"events.txt"));
163 String networkFilename = this.scenario.
getConfig().
findParam(
"network",
"inputNetworkFile");
164 extConfig.
setParam(SCENARIO, SCENARIO_NETWORK_FILENAME, networkFilename);
165 new ConfigWriter(extConfig).
write(this.outFileRoot + this.modulePrefix + ExternalConfigFileName);
172 plansReader.
readFile(this.outFileRoot + this.modulePrefix + ExternalOutFileName);
180 Plan planToMutate = plansToMutate.get(dummyPerson.getId());
static final String SCENARIO_NETWORK_FILENAME
void readFile(final String filename, final String dtdFilename)
final void setParam(final String moduleName, final String paramName, final String value)
Population exportPopulation
final ExeRunnerDelegate exeRunnerDelegate
void write(final String filename)
final String getIterationFilename(final int iteration, final String filename)
static final String SCENARIO_WORKING_EVENTS_TXT_FILENAME
final void write(final String filename)
void handlePlan(final Plan plan)
static final String SCENARIO_WORKING_PLANS_FILENAME
static int run(final String cmd, final String stdoutFileName, final int timeout)
static Plan createPlan(Person person)
static final String ExternalConfigFileName
final String findParam(final String moduleName, final String paramName)
static void copyFromTo(final Plan in, final Plan out)
static final String ExternalOutFileName
void run(final Person dummyPerson)
abstract boolean addPlan(T p)
Population getPopulation()
Person createPerson(Id< Person > id)
ExternalModule(final String exePath, final String moduleId, final OutputDirectoryHierarchy controler, final Scenario scenario)
List< PlanElement > getPlanElements()
final OutputDirectoryHierarchy controler
static final String SCENARIO
void importPopulationAndMutatePlans()
String getExternalExeConfigTemplate()
PopulationFactory getFactory()
final ReplanningConfigGroup replanning()
void addPerson(final Person p)
final String getTempPath()
void prepareReplanning(ReplanningContext replanningContext)
static Scenario createScenario(final Config config)
static final String SCENARIO_INPUT_PLANS_FILENAME
void readFile(String filename)
Map< Id< Person >, Plan > plansToMutate
void prepareExternalExeConfig()
static Config createConfig(final String context)
abstract List<? extends T > getPlans()
static final String ExternalInFileName