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) {