r3832 - in branches/4.0.1/src/test: java/fr/ifremer/isisfish/simulator/sensitivity resources/test-database/sensitivityanalysis resources/test-database/simulationplans
Author: jcouteau Date: 2013-11-08 17:51:41 +0100 (Fri, 08 Nov 2013) New Revision: 3832 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3832 Log: Make Sobol work with all distributions (no equation, no matrix) Modified: branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java branches/4.0.1/src/test/resources/test-database/simulationplans/CalibrationSimplexePasVariable2Capturabilite.java Modified: branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java =================================================================== --- branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -60,17 +60,14 @@ /** Simulation dir used to save Rdata files. */ protected File simulationsDir; - @BeforeClass - public static void init() { - System.setProperty("R.type", "jni"); - } - /** * Ces tests utilisent directement le moteur R, s'il n'est pas disponible, * on va eviter de faire les tests. */ @Before public void setUp() { + + System.setProperty("R.type", "jni"); try { new RProxy(); } catch (RException e) { @@ -95,34 +92,92 @@ Factor factor1 = new Factor("testint"); ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFMM); domain1.addDistributionParam("min", 0.0); - domain1.addDistributionParam("max", 50.0); + domain1.addDistributionParam("max", 2.0); factor1.setDomain(domain1); factor1.setPath("org.nuiton.factor#1234567890#0.12242345354#name"); result.addFactor(factor1); - // matrix 1 - MatrixND matrix1 = MatrixFactory.getInstance().create("test1", - new int[] { 3, 2 }, new String[] { "col1", "col2" }); - matrix1.setValue(new int[] { 0, 0 }, 1); - matrix1.setValue(new int[] { 0, 1 }, -14); - matrix1.setValue(new int[] { 1, 0 }, 21); - matrix1.setValue(new int[] { 1, 1 }, 2); - matrix1.setValue(new int[] { 2, 0 }, 3); - matrix1.setValue(new int[] { 2, 1 }, -1); - - // factor - Factor factor2 = new Factor("testmatrix"); - ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFPC); - domain2.addDistributionParam("reference", matrix1); - domain2.addDistributionParam("coefficient", 0.1); + // factor 1, min/max on int + Factor factor2 = new Factor("testint 2"); + ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFMM); + domain2.addDistributionParam("min", 40.0); + domain2.addDistributionParam("max", 50.0); factor2.setDomain(domain2); - factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim"); + factor2.setPath("org.nuiton.factor#1234567890#0.12242345354#name"); result.addFactor(factor2); + +// // matrix 1 +// MatrixND matrix1 = MatrixFactory.getInstance().create("test1", +// new int[] { 3, 2 }, new String[] { "col1", "col2" }); +// matrix1.setValue(new int[] { 0, 0 }, 1); +// matrix1.setValue(new int[] { 0, 1 }, -14); +// matrix1.setValue(new int[] { 1, 0 }, 21); +// matrix1.setValue(new int[] { 1, 1 }, 2); +// matrix1.setValue(new int[] { 2, 0 }, 3); +// matrix1.setValue(new int[] { 2, 1 }, -1); +// +// // factor +// Factor factor2 = new Factor("testmatrix"); +// ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFPC); +// domain2.addDistributionParam("reference", matrix1); +// domain2.addDistributionParam("coefficient", 0.1); +// factor2.setDomain(domain2); +// factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim"); +// result.addFactor(factor2); return result; } /** + * Build a test design plan with only continuous factors. + * + * @return test design plan + */ + protected DesignPlan getOtherDistribDesignPlan() { + + DesignPlan result = new DesignPlan(); + + // factor 1, min/max on int + Factor factor1 = new Factor("lnorm"); + ContinuousDomain domain1 = new ContinuousDomain(Distribution.DLNORM); + domain1.addDistributionParam("meanlog", 0.0); + domain1.addDistributionParam("sdlog", 1.0); + factor1.setDomain(domain1); + factor1.setPath("org.nuiton.factor#1234567890#0.12242345354#name"); + result.addFactor(factor1); + + // factor 1, min/max on int + Factor factor2 = new Factor("cauchy"); + ContinuousDomain domain2 = new ContinuousDomain(Distribution.DCAUCHY); + domain2.addDistributionParam("location", 0.0); + domain2.addDistributionParam("scale", 1.0); + factor2.setDomain(domain2); + factor2.setPath("org.nuiton.factor#1234567890#0.12242345354#name"); + result.addFactor(factor2); + +// // matrix 1 +// MatrixND matrix1 = MatrixFactory.getInstance().create("test1", +// new int[] { 3, 2 }, new String[] { "col1", "col2" }); +// matrix1.setValue(new int[] { 0, 0 }, 1); +// matrix1.setValue(new int[] { 0, 1 }, -14); +// matrix1.setValue(new int[] { 1, 0 }, 21); +// matrix1.setValue(new int[] { 1, 1 }, 2); +// matrix1.setValue(new int[] { 2, 0 }, 3); +// matrix1.setValue(new int[] { 2, 1 }, -1); +// +// // factor +// Factor factor2 = new Factor("testmatrix"); +// ContinuousDomain domain2 = new ContinuousDomain(Distribution.QUNIFPC); +// domain2.addDistributionParam("reference", matrix1); +// domain2.addDistributionParam("coefficient", 0.1); +// factor2.setDomain(domain2); +// factor2.setPath("org.nuiton.math.matrix.MatrixND#563456293453#2.456347646#dim"); +// result.addFactor(factor2); + + return result; + } + + /** * Test tmp files/dir. * * @throws IOException @@ -257,6 +312,13 @@ DesignPlan designPlan = getContinuousDesignPlan(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); - + + Assert.assertEquals(80, scenarii.getScenarios().size()); + + designPlan = getOtherDistribDesignPlan(); + scenarii = script.compute(designPlan, simulationsDir); + + Assert.assertEquals(80, scenarii.getScenarios().size()); + } } Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -109,13 +109,13 @@ if (domain instanceof ContinuousDomain) { ContinuousDomain contDomain = (ContinuousDomain) domain; int card = factor.getCardinality(); - Double min = contDomain.getCalculatorMinBound(); - Double max = contDomain.getCalculatorMaxBound(); - - for (int i = 0; i < card; i++) { - //add the ith value - vector += (min + (i * (max - min) / (card - 1))) + ","; - } +// Double min = contDomain.getCalculatorMinBound(); +// Double max = contDomain.getCalculatorMaxBound(); +// +// for (int i = 0; i < card; i++) { +// //add the ith value +// vector += (min + (i * (max - min) / (card - 1))) + ","; +// } } else { Map<Object, Object> values = ((DiscreteDomain) domain).getValues(); int nbValues = values.size(); @@ -202,9 +202,9 @@ if (domain instanceof ContinuousDomain){ ContinuousDomain contDomain = (ContinuousDomain)domain; distribution += "\"qunif\""; - parameters += "\"[" + contDomain.getMinBound() - + ";" + contDomain.getMaxBound() - + "]\""; +// parameters += "\"[" + contDomain.getMinBound() +// + ";" + contDomain.getMaxBound() +// + "]\""; } else { DiscreteDomain discDomain = (DiscreteDomain)domain; distribution += "\"discrete\""; Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -35,8 +35,6 @@ import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; -import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; -import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain; import fr.ifremer.isisfish.util.Doc; import org.nuiton.j2r.types.RDataFrame; @@ -165,8 +163,8 @@ } distribution += "\"qunif\""; - parameters += "\"[" + domain.getMinBound() + ";" + - domain.getMaxBound() + "]\""; +// parameters += "\"[" + domain.getMinBound() + ";" + +// domain.getMaxBound() + "]\""; factorNames += "\"" + factor.getName() + "\""; } engine.voidEval(String.format(factorDistribution, factorNames, @@ -200,17 +198,17 @@ for (int i = 0; i < factorNumber; i++) { Factor factor = plan.getFactors().get(i); Domain domain = factor.getDomain(); - if ((domain instanceof MatrixContinuousDomain) - || (domain instanceof EquationContinuousDomain)) { - factor.setValueForIdentifier(dataFrame.get(i,j)); - } else { - ContinuousDomain continuousDomain = (ContinuousDomain)domain; - Double min = continuousDomain.getCalculatorMinBound(); - Double max = continuousDomain.getCalculatorMaxBound(); - Double dFValue = (Double)dataFrame.get(i,j); - Double value = min + (max - min) * dFValue; - factor.setValueForIdentifier(value); - } +// if ((domain instanceof MatrixContinuousDomain) +// || (domain instanceof EquationContinuousDomain)) { +// factor.setValueForIdentifier(dataFrame.get(i,j)); +// } else { +// ContinuousDomain continuousDomain = (ContinuousDomain)domain; +// Double min = continuousDomain.getCalculatorMinBound(); +// Double max = continuousDomain.getCalculatorMaxBound(); +// Double dFValue = (Double)dataFrame.get(i,j); +// Double value = min + (max - min) * dFValue; +// factor.setValueForIdentifier(value); +// } experimentScenario.addFactor(factor); } thisExperimentScenarios.add(experimentScenario); Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -25,14 +25,10 @@ import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.export.SensitivityExport; import fr.ifremer.isisfish.simulator.SimulationParameter; -import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis; -import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; -import fr.ifremer.isisfish.simulator.sensitivity.Factor; -import fr.ifremer.isisfish.simulator.sensitivity.Scenario; -import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException; -import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios; +import fr.ifremer.isisfish.simulator.sensitivity.*; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.util.Doc; +import org.apache.commons.lang3.StringUtils; import org.nuiton.j2r.REngine; import org.nuiton.j2r.RException; import org.nuiton.j2r.RProxy; @@ -40,6 +36,7 @@ import java.io.File; import java.util.List; +import java.util.Map; /** * Implementation of Morris method using R. @@ -87,7 +84,7 @@ param_r = 4; } - testNoDiscrete(factors); + checkAllFactorContinuous(factors); // Creating the vectors. String factorNames = ""; @@ -112,9 +109,10 @@ gridJump += factor.getCardinality() / 2; - binf += domain.getCalculatorMinBound(); - - bsup += domain.getCalculatorMaxBound(); + //binf += domain.getCalculatorMinBound(); + binf+=0; + bsup+=0; + //bsup += domain.getCalculatorMaxBound(); } String rInstruction = "a<-morris(model=NULL,factors=c(%s),r=%s," + @@ -128,7 +126,7 @@ rCall = editRInstruction(rCall); } - REngine engine = null; + REngine engine; try { engine = new RProxy(); @@ -178,9 +176,17 @@ parameters += ","; } - distribution += "\"qunif\""; - parameters += "\"[" + domain.getMinBound() + ";" + - domain.getMaxBound() + "]\""; + Distribution r_distribution = domain.getDistribution(); + + distribution += "\""+ r_distribution.getInstruction() +"\""; + parameters += "\"["; + + for (Map.Entry<String,Object> param:domain.getDistributionParameters().entrySet()){ + parameters += param.getKey() + "=" + param.getValue() + ";"; + } + + parameters = StringUtils.removeEnd(parameters,";"); + parameters += "]\""; } engine.voidEval(String.format(factorDistribution, factorNames, distribution, parameters)); Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/OptimumLHS.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -82,7 +82,7 @@ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); //Test all factors, if one is discrete, return null - testNoDiscrete(factors); + checkAllFactorContinuous(factors); try { REngine engine = new RProxy(); @@ -148,8 +148,8 @@ factorNames += "\"" + factors.get(i).getName() + "\""; distribution += "\"qunif\""; //add [min;max] to parameters - parameters += "\"[" + domain.getMinBound() + ";" + - domain.getMaxBound() + "]\""; +// parameters += "\"[" + domain.getMinBound() + ";" + +// domain.getMaxBound() + "]\""; } engine.voidEval(String.format(isisFactorDistribution, factorNames, Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RandomLHS.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -78,7 +78,7 @@ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); //The list of scenarios List<Factor> factors = plan.getFactors(); //The factors - testNoDiscrete(factors); + checkAllFactorContinuous(factors); try { @@ -144,9 +144,9 @@ factorNames += "\"" + factors.get(i).getName() + "\""; distribution += "\"qunif\""; //all distributions are qunif - double min = domain.getCalculatorMinBound(); - double max = domain.getCalculatorMaxBound(); - parameters += "\"[" + min + ";" + max + "]\""; +// double min = domain.getCalculatorMinBound(); +// double max = domain.getCalculatorMaxBound(); +// parameters += "\"[" + min + ";" + max + "]\""; } engine.voidEval(String.format(isisFactorDistribution, factorNames, distribution, parameters)); Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -102,13 +102,13 @@ if (domain instanceof ContinuousDomain) { ContinuousDomain contDomain = (ContinuousDomain) domain; int card = factor.getCardinality(); - Double min = contDomain.getCalculatorMinBound(); - Double max = contDomain.getCalculatorMaxBound(); - - for (int i = 0; i < card; i++) { - //add the ith value - vector += (min + (i * (max - min) / (card - 1))) + ","; - } +// Double min = contDomain.getCalculatorMinBound(); +// Double max = contDomain.getCalculatorMaxBound(); +// +// for (int i = 0; i < card; i++) { +// //add the ith value +// vector += (min + (i * (max - min) / (card - 1))) + ","; +// } } if (domain instanceof DiscreteDomain) { @@ -178,9 +178,9 @@ if (domain instanceof ContinuousDomain){ ContinuousDomain contDomain = (ContinuousDomain)domain; distribution += "\"qunif\""; - parameters += "\"[" + contDomain.getMinBound() - + ";" + contDomain.getMaxBound() - + "]\""; +// parameters += "\"[" + contDomain.getMinBound() +// + ";" + contDomain.getMaxBound() +// + "]\""; } else { DiscreteDomain discDomain = (DiscreteDomain)domain; distribution += "\"discrete\""; Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -42,8 +42,6 @@ import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.simulator.sensitivity.domain.DiscreteDomain; -import fr.ifremer.isisfish.simulator.sensitivity.domain.EquationContinuousDomain; -import fr.ifremer.isisfish.simulator.sensitivity.domain.MatrixContinuousDomain; import fr.ifremer.isisfish.util.Doc; public class RegularFractions extends AbstractSensitivityAnalysis { @@ -159,16 +157,16 @@ Factor factor = plan.getFactors().get(i); Domain domain = factor.getDomain(); Double dFValue = (Double)dataFrame.get(i,j); - if ((domain instanceof MatrixContinuousDomain) - || (domain instanceof EquationContinuousDomain)) { - factor.setValueForIdentifier(dFValue); - } else { - ContinuousDomain contDomain = (ContinuousDomain)domain; - Double max = contDomain.getCalculatorMaxBound(); - Double min = contDomain.getCalculatorMinBound(); - Double value = min + (max - min) * dFValue / (param_p - 1); - factor.setValueForIdentifier(value); - } +// if ((domain instanceof MatrixContinuousDomain) +// || (domain instanceof EquationContinuousDomain)) { +// factor.setValueForIdentifier(dFValue); +// } else { +// ContinuousDomain contDomain = (ContinuousDomain)domain; +// Double max = contDomain.getCalculatorMaxBound(); +// Double min = contDomain.getCalculatorMinBound(); +// Double value = min + (max - min) * dFValue / (param_p - 1); +// factor.setValueForIdentifier(value); +// } experimentScenario.addFactor(factor); } thisExperimentScenarios.add(experimentScenario); Modified: branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Sobol.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -24,20 +24,16 @@ import java.io.File; import java.util.List; +import java.util.Map; import fr.ifremer.isisfish.export.SensitivityExport; +import fr.ifremer.isisfish.simulator.sensitivity.*; +import org.apache.commons.lang3.StringUtils; import org.nuiton.j2r.REngine; import org.nuiton.j2r.RProxy; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.simulator.SimulationParameter; -import fr.ifremer.isisfish.simulator.sensitivity.AbstractSensitivityAnalysis; -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.Scenario; -import fr.ifremer.isisfish.simulator.sensitivity.SensitivityException; -import fr.ifremer.isisfish.simulator.sensitivity.SensitivityScenarios; import fr.ifremer.isisfish.simulator.sensitivity.domain.ContinuousDomain; import fr.ifremer.isisfish.util.Doc; import org.nuiton.j2r.types.RDataFrame; @@ -86,7 +82,7 @@ SensitivityScenarios thisExperiment = new SensitivityScenarios(); List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); - testNoDiscrete(factors); + checkAllFactorContinuous(factors); String rInstruction = "a<-sobol2002(model=NULL,X1=X1,X2=X2,nboot=%s)"; String rCall = String.format(rInstruction, param_nboot); @@ -107,11 +103,32 @@ engine.voidEval("library(sensitivity)"); - engine.voidEval("X1<-data.frame(matrix(runif(" + factorNumber + "*" - + param_n + "),nrow=" + param_n + "))"); - engine.voidEval("X2<-data.frame(matrix(runif(" + factorNumber + "*" - + param_n + "),nrow=" + param_n + "))"); + String x = "<-data.frame(matrix(c("; + for (int i = 0; i < factorNumber; i++) { + Factor factor = factors.get(i); + ContinuousDomain domain = (ContinuousDomain)factor.getDomain(); + + Distribution r_distribution = domain.getDistribution(); + + x += r_distribution.getInstruction() +"("+param_n+","; + + for (Map.Entry<String,Object> param:domain.getDistributionParameters().entrySet()){ + x += param.getKey() + "=" + param.getValue() + ","; + } + + x = StringUtils.removeEnd(x, ","); + + x+= "),"; + } + + x = StringUtils.removeEnd(x, ","); + + x+="),nrow="+param_n+"))"; + + engine.voidEval("X1"+x); + engine.voidEval("X2"+x); + engine.voidEval(rCall); // Creating the factors vector. @@ -147,18 +164,25 @@ for (int i = 0; i < factorNumber; i++) { Factor factor = factors.get(i); - Domain domain = factor.getDomain(); + ContinuousDomain domain = (ContinuousDomain)factor.getDomain(); if (i != 0) { distribution += ","; parameters += ","; factorNames += ","; } - distribution += "\"qunif\""; - ContinuousDomain continuousDomain = (ContinuousDomain) domain; - double min = continuousDomain.getCalculatorMinBound(); - double max = continuousDomain.getCalculatorMaxBound(); - parameters += "\"[" + min + ";" + max + "]\""; + Distribution r_distribution = domain.getDistribution(); + + distribution += "\""+ r_distribution.getInstruction() +"\""; + parameters += "\"["; + + for (Map.Entry<String,Object> param:domain.getDistributionParameters().entrySet()){ + parameters += param.getKey() + "=" + param.getValue() + ";"; + } + + parameters = StringUtils.removeEnd(parameters, ";"); + parameters += "]\""; + factorNames += "\"" + factor.getName() + "\""; } Modified: branches/4.0.1/src/test/resources/test-database/simulationplans/CalibrationSimplexePasVariable2Capturabilite.java =================================================================== --- branches/4.0.1/src/test/resources/test-database/simulationplans/CalibrationSimplexePasVariable2Capturabilite.java 2013-11-08 14:25:47 UTC (rev 3831) +++ branches/4.0.1/src/test/resources/test-database/simulationplans/CalibrationSimplexePasVariable2Capturabilite.java 2013-11-08 16:51:41 UTC (rev 3832) @@ -29,6 +29,7 @@ import java.util.Collections; import java.util.List; +import fr.ifremer.isisfish.util.ScriptUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.math.matrix.MatrixIterator; @@ -384,7 +385,7 @@ exportHisto += experiences.getExperience(number).q1 + ";" + experiences.getExperience(number).q2 + ";" + experiences.getExperience(number).criteria + "\n"; - org.nuiton.util.FileUtil.writeString(exportHistoric, exportHisto); + ScriptUtil.writeString(exportHistoric, exportHisto); return doNext; }// fin du after simulation
participants (1)
-
jcouteau@users.forge.codelutin.com