Author: jcouteau Date: 2009-04-07 12:44:34 +0000 (Tue, 07 Apr 2009) New Revision: 96 Modified: trunk/sensitivity/SensitivityCalculatorROptimumLHS.java trunk/sensitivity/SensitivityCalculatorRRandomLHS.java Log: Adding defaults values, correcting bugs Modified: trunk/sensitivity/SensitivityCalculatorROptimumLHS.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorROptimumLHS.java 2009-04-03 12:28:06 UTC (rev 95) +++ trunk/sensitivity/SensitivityCalculatorROptimumLHS.java 2009-04-07 12:44:34 UTC (rev 96) @@ -21,6 +21,7 @@ import java.io.File; import java.io.Serializable; import java.util.List; +import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -29,6 +30,7 @@ import org.codelutin.math.matrix.MatrixFactory; import org.codelutin.math.matrix.MatrixND; import org.codelutin.util.FileUtil; +import org.rosuda.JRI.REXP; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.simulator.sensitivity.DesignPlan; @@ -56,11 +58,11 @@ static private Log log = LogFactory .getLog(SensitivityCalculatorROptimumLHS.class); - @Doc("Number of simulation ?") + @Doc("Number of simulations (default=10)") public int param_simulationNumber; - @Doc("Max Sweeps") + @Doc("The maximum number of times the Columnwise Pairwise algorithm is applied to all the columns(default=2).") public int param_MaxSweeps; - @Doc("EPS") + @Doc("The optimal stopping criterion (between 0 and 1) (default=0.1).") public double param_eps; /** @@ -82,27 +84,41 @@ List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); REngine engine = new RProxy(); + + if ((Integer) param_simulationNumber == 0) { + param_simulationNumber = 10; + } + if ((Integer) param_MaxSweeps == 0) { + param_MaxSweeps = 2; + } + + if ((Double) param_eps == 0) { + param_eps = 0.1; + } + try { //Load the lhs library engine.voidEval("library(lhs)"); log.info("Message sent to R : " + "library(lhs)"); + String rInstruction = "x<-optimumLHS(n=" + param_simulationNumber + + ",k=" + factornumber + ",maxSweeps=" + param_MaxSweeps + + ",eps=" + param_eps + ")"; + //Create the scenarios - engine.voidEval("x<-optimumLHS(" + param_simulationNumber + "," - + factornumber + "," + param_MaxSweeps + "," + param_eps - + ")"); - log.info("Message sent to R : " + "x<-optimumLHS(" - + param_simulationNumber + "," + factornumber + "," - + param_MaxSweeps + "," + param_eps + ")"); + engine.voidEval(rInstruction); + log.info("Message sent to R : " + rInstruction); // Get back experiment plan dataframe = (double[]) engine.eval("x"); - log.info("Message sent to R" + "x"); + log.info("Message sent to R : " + "x"); + log.info(dataframe); // Transform the result from R in a matrix MatrixND morris = MatrixFactory.getInstance().create(dataframe, new int[] { factornumber, param_simulationNumber }); + log.info(morris); // Setting up the scenarios. for (int j = 0; j < param_simulationNumber; j++) { @@ -131,24 +147,24 @@ thisExperiment.setScenarios(thisExperimentScenarios); } - //Create the factors vectors + //Create the factors vectors for (int j = 0; j < factornumber; j++) { Factor<? extends Serializable> factor = thisExperimentScenarios - .get(0).getFactors().get(j); - if (factor - .getDomain() instanceof EquationContinuousDomain) { + .get(0).getFactors().get(j); + if (factor.getDomain() instanceof EquationContinuousDomain) { String vector = "factor" + j + "<-c("; for (int i = 0; i < param_simulationNumber; i++) { if (i < (param_simulationNumber - 1)) { vector = vector - + ((EquationContinuousDomain<?>)thisExperimentScenarios - .get(i).getFactors().get(j).getDomain()).getValue() - + ","; + + ((EquationContinuousDomain<?>) thisExperimentScenarios + .get(i).getFactors().get(j) + .getDomain()).getValue() + ","; } else { vector = vector - + ((EquationContinuousDomain<?>)thisExperimentScenarios - .get(i).getFactors().get(j).getDomain()).getValue(); + + ((EquationContinuousDomain<?>) thisExperimentScenarios + .get(i).getFactors().get(j) + .getDomain()).getValue(); } } @@ -232,11 +248,22 @@ public void analyzeResult(List<SimulationStorage> simulationStorages, File outputdirectory) throws SensitivityException { + if ((Integer) param_simulationNumber == 0) { + param_simulationNumber = 10; + } + if ((Integer) param_MaxSweeps == 0) { + param_MaxSweeps = 2; + } + + if ((Double) param_eps == 0) { + param_eps = 0.1; + } + REngine engine = new RProxy(); try { - + param_simulationNumber = simulationStorages.get(0).getParameter() - .getSensitivityExport().size(); + .getSensitivityExport().size(); for (int k = 0; k < param_simulationNumber; k++) { Modified: trunk/sensitivity/SensitivityCalculatorRRandomLHS.java =================================================================== --- trunk/sensitivity/SensitivityCalculatorRRandomLHS.java 2009-04-03 12:28:06 UTC (rev 95) +++ trunk/sensitivity/SensitivityCalculatorRRandomLHS.java 2009-04-07 12:44:34 UTC (rev 96) @@ -56,7 +56,7 @@ static private Log log = LogFactory .getLog(SensitivityCalculatorRRandomLHS.class); - @Doc("SImulation number ?") + @Doc("Simulation number (default=10)") public int param_simulationNumber; /** @@ -76,6 +76,10 @@ double[] dataframe = new double[0]; SensitivityScenarios thisExperiment = new SensitivityScenarios(); List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); + + if ((Integer) param_simulationNumber == 0) { + param_simulationNumber = 10; + } REngine engine = new RProxy(); try { @@ -231,6 +235,10 @@ public void analyzeResult(List<SimulationStorage> simulationStorages, File outputdirectory) throws SensitivityException { + if ((Integer) param_simulationNumber == 0) { + param_simulationNumber = 10; + } + REngine engine = new RProxy(); try {
participants (1)
-
jcouteau@users.labs.libre-entreprise.org