Author: jcouteau Date: 2009-03-16 11:10:06 +0000 (Mon, 16 Mar 2009) New Revision: 1970 Modified: isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java Log: Correct test to comply with new sensitivity calculator interface Modified: isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl =================================================================== --- isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl 2009-03-16 11:06:21 UTC (rev 1969) +++ isis-fish/trunk/src/main/resources/templates/script/sensitivity.ftl 2009-03-16 11:10:06 UTC (rev 1970) @@ -9,6 +9,8 @@ import org.codelutin.math.matrix.*; +import java.io.File; + import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.simulator.sensitivity.*; @@ -58,7 +60,8 @@ * @see Scenario * @see SensitivityScenarios */ - public SensitivityScenarios compute(DesignPlan plan) throws SensitivityException { + public SensitivityScenarios compute(DesignPlan plan, File outputdirectory) + throws SensitivityException { SensitivityScenarios sensitivityScenarios = new SensitivityScenarios(); @@ -78,8 +81,8 @@ * * @see SensitivityScenarios */ - public void analyzeResult(SensitivityScenarios sensitivityScenarios, - List<SimulationStorage> simulationStorages) + public void analyzeResult(List<SimulationStorage> simulationStorages, + File outputdirectory) throws SensitivityException { } Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-03-16 11:06:21 UTC (rev 1969) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/launcher/SimulationServiceTest.java 2009-03-16 11:10:06 UTC (rev 1970) @@ -50,21 +50,20 @@ * @author chatellier * @version $Revision: 1.0 $ * - * Last update : $Date: 24 févr. 2009 $ - * By : $Author: chatellier $ + * Last update : $Date: 24 févr. 2009 $ By : $Author: chatellier $ */ public class SimulationServiceTest { - + /** Commons logging log. */ private static Log log = LogFactory.getLog(SimulationServiceTest.class); - + @Before public void setUp() throws Exception { // not do it in @BeforeClass - // test wil fail ! + // test will fail ! TestUtils.init(); } - + /** * Build a test {@link DesignPlan}. * @@ -72,17 +71,19 @@ */ protected DesignPlan getTestDesignPlan() { DesignPlan designPlan = new DesignPlan(); - + // factor 1 Factor<Double> factor1 = new Factor<Double>("factor 1 (double)"); ContinuousDomain<Double> domain1 = new ContinuousDomain<Double>(); domain1.setMinBound(0.0); domain1.setMaxBound(50.0); + domain1.setCardinality(4); factor1.setDomain(domain1); - factor1.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength"); - + factor1 + .setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521013#0.1715620681984218#maxLength"); + // factor 2 - Factor<Double> factor2 = new Factor<Double>("factor 2 (double)"); + /*Factor<Double> factor2 = new Factor<Double>("factor 2 (double)"); DiscreteDomain<Double> domain2 = new DiscreteDomain<Double>(); domain2.getValues().put(0.0, 12.3); domain2.getValues().put(1.0, 70.9); @@ -90,23 +91,25 @@ domain2.getValues().put(3.0, -12.1); domain2.getValues().put(4.0, -8.45); factor2.setDomain(domain2); - factor2.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength"); - + factor2.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521064#0.022976136053553198#minLength");*/ + // factor 3 Factor<Double> factor3 = new Factor<Double>("factor 3 (double)"); ContinuousDomain<Double> domain3 = new ContinuousDomain<Double>(); domain3.setMinBound(12.0); domain3.setMaxBound(99.0); + domain3.setCardinality(4); factor3.setDomain(domain3); - factor3.setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength"); - + factor3 + .setPath("fr.ifremer.isisfish.entities.PopulationGroup#1156461521076#0.6526656643346673#minLength"); + designPlan.getFactors().add(factor1); - designPlan.getFactors().add(factor2); + //designPlan.getFactors().add(factor2); designPlan.getFactors().add(factor3); - + return designPlan; } - + /** * Build a test {@link DesignPlan} filled with matrix. * @@ -114,7 +117,7 @@ */ protected DesignPlan getTestMatrixDesignPlan() { DesignPlan designPlan = new DesignPlan(); - + // matrix 1 MatrixND matrix1 = MatrixFactory.getInstance().create("test1", new int[] { 3, 2 }, new String[] { "col1", "col2" }); @@ -124,7 +127,7 @@ matrix1.setValue(new int[] { 1, 1 }, 2); matrix1.setValue(new int[] { 2, 0 }, 12); matrix1.setValue(new int[] { 2, 1 }, -1); - + // matrix 2 MatrixND matrix2 = MatrixFactory.getInstance().create("test1", new int[] { 3, 2 }, new String[] { "col1", "col2" }); @@ -134,20 +137,21 @@ matrix2.setValue(new int[] { 1, 1 }, 2); matrix2.setValue(new int[] { 2, 0 }, 12); matrix2.setValue(new int[] { 2, 1 }, -1); - + // factor 1 Factor<MatrixND> factor1 = new Factor<MatrixND>("factor 1 (matrixND)"); DiscreteDomain<MatrixND> domain1 = new DiscreteDomain<MatrixND>(); domain1.getValues().put(0.0, matrix1); domain1.getValues().put(1.0, matrix2); factor1.setDomain(domain1); - factor1.setPath("fr.ifremer.isisfish.entities.StrategyMonthInfo#1156808754768#0.7282750856395208#proportionMetier"); + factor1 + .setPath("fr.ifremer.isisfish.entities.StrategyMonthInfo#1156808754768#0.7282750856395208#proportionMetier"); designPlan.getFactors().add(factor1); - + return designPlan; } - + /** * Lance une simulation avec des facteurs de sensibilité. */ @@ -179,24 +183,24 @@ service.addSimulationLauncher(launcher); SensitivityCalculator sensitivityCalculator = new SensitivityCalculatorRandomMock(); - + DesignPlan designPlan = getTestDesignPlan(); - - service.submit("sensitivity test number 1", params, launcher, 0, sensitivityCalculator, designPlan); + service.submit("sensitivity test number 1", params, launcher, 0, + sensitivityCalculator, designPlan); + // temporise la fin de test , sinon junit tue tous les process try { do { Thread.sleep(2000); - } while(!service.jobs.isEmpty()); - } - catch(InterruptedException e) { - if(log.isErrorEnabled()) { + } while (!service.jobs.isEmpty()); + } catch (InterruptedException e) { + if (log.isErrorEnabled()) { log.error("Can't wait wimulation to end", e); } } } - + /** * Lance une simulation avec des facteurs de sensibilité. * @@ -230,19 +234,19 @@ service.addSimulationLauncher(launcher); SensitivityCalculator sensitivityCalculator = new SensitivityCalculatorRandomMock(); - + DesignPlan designPlan = getTestMatrixDesignPlan(); - - service.submit("sensitivity test number 1", params, launcher, 0, sensitivityCalculator, designPlan); + service.submit("sensitivity test number 1", params, launcher, 0, + sensitivityCalculator, designPlan); + // temporise la fin de test , sinon junit tue tous les process try { do { Thread.sleep(2000); - } while(!service.jobs.isEmpty()); - } - catch(InterruptedException e) { - if(log.isErrorEnabled()) { + } while (!service.jobs.isEmpty()); + } catch (InterruptedException e) { + if (log.isErrorEnabled()) { log.error("Can't wait wimulation to end", e); } } Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java 2009-03-16 11:06:21 UTC (rev 1969) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityCalculatorRandomMock.java 2009-03-16 11:10:06 UTC (rev 1970) @@ -18,6 +18,7 @@ package fr.ifremer.isisfish.simulator.sensitivity; +import java.io.File; import java.io.Serializable; import java.util.List; @@ -26,79 +27,72 @@ import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.simulator.launcher.SimulationServiceTest; -import fr.ifremer.isisfish.simulator.sensitivity.SensitivityCalculator; -import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; -import fr.ifremer.isisfish.simulator.sensitivity.Domain; -import fr.ifremer.isisfish.simulator.sensitivity.Factor; -import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios; -import fr.ifremer.isisfish.simulator.sensitivity.Scenario; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; /** - * Implementation of SensitivityCalculator that take - * random value in available factors. - * + * Implementation of SensitivityCalculator that take random value in available + * factors. + * * @author chatellier * @version $Revision: 1.0 $ * - * Last update : $Date: 26 févr. 2009 $ - * By : $Author: chatellier $ + * Last update : $Date: 26 févr. 2009 $ By : $Author: chatellier $ */ public class SensitivityCalculatorRandomMock implements SensitivityCalculator { - private static final Log log = LogFactory.getLog(SimulationServiceTest.class); - - public String getDescription(){ + private static final Log log = LogFactory + .getLog(SimulationServiceTest.class); + + public String getDescription() { return "Implementation of random sensibility calculator"; } - - public SensitivityScenarios compute(DesignPlan plan) { - - if (log.isDebugEnabled()) { - log.info("Call random mock compute()"); - } - - // return result - SensitivityScenarios sensitivityScenarios = new SensitivityScenarios(); - - List<Factor<? extends Serializable>> factors = plan.getFactors(); - for(int i = 0 ; i < factors.size() * 2 ; ++i) { - - Scenario scenario = new Scenario(); - // choose a 0 < number < factors.size() - int pickedFactor = (int) (Math.random() * factors.size()); - Factor<? extends Serializable> factor = factors.get(pickedFactor); - - Domain<? extends Serializable> domain = factor.getDomain(); - if( domain instanceof ContinuousDomain) { - ContinuousDomain<? extends Serializable> cDomain = (ContinuousDomain<? extends Serializable>)domain; - Double minValue = (Double)cDomain.getMinBound(); - Double maxValue = (Double)cDomain.getMaxBound(); - factor.setValueForIdentifier(minValue); - scenario.addFactor(factor); - factor.setValueForIdentifier(maxValue); + public SensitivityScenarios compute(DesignPlan plan, File outputdirectory) { + + if (log.isDebugEnabled()) { + log.info("Call random mock compute()"); + } + + // return result + SensitivityScenarios sensitivityScenarios = new SensitivityScenarios(); + + List<Factor<? extends Serializable>> factors = plan.getFactors(); + for (int i = 0; i < factors.size() * 2; ++i) { + + Scenario scenario = new Scenario(); + // choose a 0 < number < factors.size() + int pickedFactor = (int) (Math.random() * factors.size()); + Factor<? extends Serializable> factor = factors.get(pickedFactor); + + Domain<? extends Serializable> domain = factor.getDomain(); + if (domain instanceof ContinuousDomain) { + ContinuousDomain<? extends Serializable> cDomain = (ContinuousDomain<? extends Serializable>) domain; + Double minValue = (Double) cDomain.getMinBound(); + Double maxValue = (Double) cDomain.getMaxBound(); + + factor.setValueForIdentifier(minValue); scenario.addFactor(factor); - } - else { - DiscreteDomain<? extends Serializable> dDomain = (DiscreteDomain<? extends Serializable>)domain; - for(Serializable sValue : dDomain.getValues().keySet()) { - factor.setValueForIdentifier(sValue); - scenario.addFactor(factor); - } - } - - sensitivityScenarios.getScenarios().add(scenario); - } - - return sensitivityScenarios; + factor.setValueForIdentifier(maxValue); + scenario.addFactor(factor); + } else { + DiscreteDomain<? extends Serializable> dDomain = (DiscreteDomain<? extends Serializable>) domain; + for (Serializable sValue : dDomain.getValues().keySet()) { + factor.setValueForIdentifier(sValue); + scenario.addFactor(factor); + } + } - } + sensitivityScenarios.getScenarios().add(scenario); + } - public void analyzeResult(SensitivityScenarios sensitivityScenarios, - List<SimulationStorage> simulationStorages) { + return sensitivityScenarios; - } + } + public void analyzeResult(List<SimulationStorage> simulationStorages, + File outputdirectory) { + + } + }