Merge branch 'auto_exp_fix' of ssh://git.eclipse.org:29418/stem/org.eclipse.stem
diff --git a/org.eclipse.stem/analysis/org.eclipse.stem.analysis.automaticexperiment/src/org/eclipse/stem/analysis/automaticexperiment/SimplexAlgorithmExecuter.java b/org.eclipse.stem/analysis/org.eclipse.stem.analysis.automaticexperiment/src/org/eclipse/stem/analysis/automaticexperiment/SimplexAlgorithmExecuter.java
index 231aff3..e0964b8 100644
--- a/org.eclipse.stem/analysis/org.eclipse.stem.analysis.automaticexperiment/src/org/eclipse/stem/analysis/automaticexperiment/SimplexAlgorithmExecuter.java
+++ b/org.eclipse.stem/analysis/org.eclipse.stem.analysis.automaticexperiment/src/org/eclipse/stem/analysis/automaticexperiment/SimplexAlgorithmExecuter.java
@@ -26,6 +26,7 @@
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.stem.analysis.ErrorFunction;
import org.eclipse.stem.analysis.ErrorResult;
import org.eclipse.stem.analysis.LogInitializationException;
@@ -180,12 +181,14 @@
public ErrorResult getValue(double[] parameters) {
+ // SED: Fix for multiple trigger problem., Just run with a deep copy of the scenario
+ Scenario copyScenario = EcoreUtil.copy(baseScenario);
- simulation = createSimulation(baseScenario);
+ simulation = createSimulation(copyScenario);
simulation.setSequenceNumber(simulation.getSequenceNumber()+1);
// Descend into the Scenario looking for something with a double field
- final EList<Decorator> decs = baseScenario.getCanonicalGraph().getDecorators();
+ final EList<Decorator> decs = copyScenario.getCanonicalGraph().getDecorators();
Decorator defaultDecorator = null;
for (Decorator decorator : decs) {
@@ -214,18 +217,19 @@
if (simulation != null) {
uniqueID = simulation.getUniqueIDString();
}
+
+
String directoryName = SIMULATION_OUTPUT_DIR + File.separator+uniqueID + File.separator;
File dir = new File(directoryName);
if(!dir.exists())
dir.mkdirs();
-
-
+
csvLogger = new CustomCSVLogger(directoryName, simulation, (IntegrationDecorator) defaultDecorator);
-
+
// This will reinit the infectors/inoc etc to the new values
try {
- baseScenario.reset();
+ copyScenario.reset();
} catch(ScenarioInitializationException sie) {
Utility.handleException(sie.getErrorMessage(), true, sie);
}
@@ -244,8 +248,8 @@
((AbstractErrorAnalysisAlgorithm)algorithm).fireEvent(
newEvent);
runSimulation(simulation);
-
- result = getErrorValue(simulation.getUniqueIDString());
+
+ result = getErrorValue(simulation.getUniqueIDString(), copyScenario);
newEvent = new ErrorAnalysisAlgorithmEvent(result, ALGORITHM_STATUS.FINISHED_SIMULATION);
newEvent.parameterNames = parameterNames;
@@ -274,10 +278,10 @@
return result;
}
- private ErrorResult getErrorValue(String simulationUniqueId) {
+ private ErrorResult getErrorValue(String simulationUniqueId, Scenario scenario) {
ErrorResult result = null;
try {
- final EList<Decorator> decs = baseScenario.getCanonicalGraph().getDecorators();
+ final EList<Decorator> decs = scenario.getCanonicalGraph().getDecorators();
DiseaseModel defaultDecorator = null;
for (Decorator decorator : decs) {
diff --git a/org.eclipse.stem/core/org.eclipse.stem.util.loggers/src/org/eclipse/stem/util/loggers/views/CustomCSVLogger.java b/org.eclipse.stem/core/org.eclipse.stem.util.loggers/src/org/eclipse/stem/util/loggers/views/CustomCSVLogger.java
index 864ba08..6cb76e3 100644
--- a/org.eclipse.stem/core/org.eclipse.stem.util.loggers/src/org/eclipse/stem/util/loggers/views/CustomCSVLogger.java
+++ b/org.eclipse.stem/core/org.eclipse.stem.util.loggers/src/org/eclipse/stem/util/loggers/views/CustomCSVLogger.java
@@ -144,7 +144,7 @@
if ((logWriter != null) && (logWriter.needsHeader)) {
// This will write the headers and the first line of data before first cycle
logWriter.logHeader(this.simulation, this.diseaseModel, this.nodeLevels, timeProvider);
- logWriter.logData(this.simulation, this.diseaseModel, this.nodeLevels, timeProvider, true);
+ //logWriter.logData(this.simulation, this.diseaseModel, this.nodeLevels, timeProvider, true);
}
} else if(event.getSimulationState() == SimulationState.COMPLETED_CYCLE) {