r3930 - in branches/4.0.1/src/main/java/fr/ifremer/isisfish: datastore simulator/launcher
Author: bpoussin Date: 2014-04-03 20:23:18 +0200 (Thu, 03 Apr 2014) New Revision: 3930 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3930 Log: save objective value in SimulationStorage Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-03 18:03:32 UTC (rev 3929) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/datastore/SimulationStorage.java 2014-04-03 18:23:18 UTC (rev 3930) @@ -73,6 +73,7 @@ public static final String SIMULATION_PATH = "simulations"; public static final String INFORMATION_FILENAME = "information"; + public static final String OBJECTIVE_FILENAME = "objective"; public static final String CONTROL_FILENAME = "control"; public static final String PARAMETERS_FILENAME = "parameters.properties"; public static final String RESULT_XML_FILENAME = "isis-mexico-output.xml"; @@ -98,6 +99,8 @@ protected boolean useLog; protected transient File simulationControlFile = null; + /** objective value used as cache to prevent disk access */ + protected transient Double objective = null; /** * Pour la lecture d'une simulation existante. @@ -206,6 +209,33 @@ } /** + * Retourne le fichier de stockage des inforations de la simulation. + * + * @param root le repertoire de stockage de la simulation + * @return information file + */ + public static File getSimulationObjectiveFile(File root) { + File result = new File(root, OBJECTIVE_FILENAME); + return result; + } + + public Double getObjective() throws IOException { + if (objective == null) { + File ObjFile = getObjectiveFile(); + if (file.exists()) { + String s = FileUtils.readFileToString(ObjFile); + objective = Double.parseDouble(s); + } + } + return objective; + } + + public void setObjective(double d) throws IOException { + objective = d; + FileUtils.writeStringToFile(getObjectiveFile(), String.valueOf(d)); + } + + /** * Retourne le fichier de stockage des resultats sous format XML mexico * de la simulation. * @@ -444,6 +474,16 @@ } /** + * Retourne le nom du fichier contenant les informations de simulation. + * + * @return information file + */ + protected File getObjectiveFile() { + File result = new File(getDirectory(), OBJECTIVE_FILENAME); + return result; + } + + /** * Get simulation informations. * * @return simulation information Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java 2014-04-03 18:03:32 UTC (rev 3929) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/launcher/OptimizationPrepareJob.java 2014-04-03 18:23:18 UTC (rev 3930) @@ -12,7 +12,10 @@ import fr.ifremer.isisfish.simulator.launcher.SimulationJob; import fr.ifremer.isisfish.simulator.launcher.SimulationService; import java.io.File; +import java.io.IOException; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; @@ -128,7 +131,14 @@ @Override public void finished(SimulationJob job, SimulationStorage sim) { - objective.eval(optimizationContext, null, null); // FIXME mettre les bons arguments + if (objective != null) { + try { + double obj = objective.eval(optimizationContext, null, null); // FIXME mettre les bons arguments + sim.setObjective(obj); + } catch (IOException eee) { + throw new IsisFishRuntimeException("Can't evaluate objective", eee); + } + } done++; }
participants (1)
-
bpoussin@users.forge.codelutin.com