r3833 - in branches/4.0.1/src: main/java/fr/ifremer/isisfish/simulator/sensitivity main/java/fr/ifremer/isisfish/simulator/sensitivity/domain test/java/fr/ifremer/isisfish/simulator/sensitivity test/resources/test-database/sensitivityanalysis
Author: echatellier Date: 2013-11-14 22:01:30 +0100 (Thu, 14 Nov 2013) New Revision: 3833 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/3833 Log: Sensitivity Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Domain.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java 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/RegularExpandGrid.java branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2013-11-08 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/AbstractSensitivityAnalysis.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -346,67 +346,61 @@ * Get factor domain min bound depending on distribution. */ protected double getMinBound(Factor factor) { - ContinuousDomain domain = (ContinuousDomain)factor.getDomain(); - Distribution distribution = domain.getDistribution(); - double result = 0; - if (distribution == Distribution.QUNIFPC) { - Object reference = (Double)domain.getDistributionParameter(Distribution.QUNIFPC.getDistibutionParams()[0].getName()); - if (reference instanceof MatrixND) { - result = 1; - } else { - Double coefficient = (Double)domain.getDistributionParameter(Distribution.QUNIFPC.getDistibutionParams()[1].getName()); - result = (Double)reference - ((Double)reference * coefficient); - } - } else if (distribution == Distribution.QUNIFMM) { - Object min = domain.getDistributionParameter(Distribution.QUNIFMM.getDistibutionParams()[0].getName()); - // pour les matrices, on prend 1 et on multipliera le retour - // de R sur la matrice pour faire varier la matrice completement - // note: on ne fait pas ca pour les réels car les utilisateurs - // prefere avoir les valeurs réelles dans le RData. - if (min instanceof MatrixND) { - result = 1; - } else { - result = (Double)min; - } - } else { - if (log.isWarnEnabled()) { - log.warn("Can't call getMinBound for distribution " + distribution); - } - } - return result; + return getBound(factor, true); } - + /** * Get factor domain max bound depending on distribution. */ protected double getMaxBound(Factor factor) { + return getBound(factor, false); + } + + /** + * Get factor domain bound depending on distribution. + * + * @param min min or max + */ + protected double getBound(Factor factor, boolean min) { ContinuousDomain domain = (ContinuousDomain)factor.getDomain(); Distribution distribution = domain.getDistribution(); double result = 0; if (distribution == Distribution.QUNIFPC) { Object reference = (Double)domain.getDistributionParameter(Distribution.QUNIFPC.getDistibutionParams()[0].getName()); if (reference instanceof MatrixND) { - result = 1; + result = min ? 0 : 1; } else { Double coefficient = (Double)domain.getDistributionParameter(Distribution.QUNIFPC.getDistibutionParams()[1].getName()); - result = (Double)reference + ((Double)reference * coefficient); + if (min) { + result = (Double)reference - ((Double)reference * coefficient); + } else { + result = (Double)reference + ((Double)reference * coefficient); + } } } else if (distribution == Distribution.QUNIFMM) { - Object max = domain.getDistributionParameter(Distribution.QUNIFMM.getDistibutionParams()[1].getName()); + Object value = domain.getDistributionParameter(Distribution.QUNIFMM.getDistibutionParams()[min ? 0 : 1].getName()); // pour les matrices, on prend 1 et on multipliera le retour // de R sur la matrice pour faire varier la matrice completement // note: on ne fait pas ca pour les réels car les utilisateurs // prefere avoir les valeurs réelles dans le RData. - if (max instanceof MatrixND) { - result = 1; + if (value instanceof MatrixND) { + result = min ? 0 : 1; } else { - result = (Double)max; + result = (Double)value; } } else { if (log.isWarnEnabled()) { - log.warn("Can't call getMaxBound for distribution " + distribution); + log.warn("Can't call getBound for distribution " + distribution); } } return result; } + + /** + * + * @param value + */ + protected void setFactorValue(double value) { + + } } Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Domain.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Domain.java 2013-11-08 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Domain.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -52,13 +52,13 @@ */ public interface Domain extends Serializable, Cloneable { - /** + /* * Return value associated to identifier. * * @param identifier * @return found value or <tt>null</tt> if not found - */ - Object getValueForIdentifier(Object identifier); + * + Object getValueForIdentifier(Object identifier);*/ /** * Accept a new visitor. Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2013-11-08 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/Factor.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -183,35 +183,32 @@ * @return the value */ public Object getDisplayedValue() { - // FIXME echatellier 20120313 EquationContinuousDomain removed - /*if (domain instanceof EquationDiscreteDomain || - domain instanceof EquationContinuousDomain) { + // add quotes for equation, but why ? + if (equationVariableName != null) { return "\"" + getValue() + "\""; - } else {*/ + } else { return getValue(); - //} + } } /** * Set value. * - * FIXME JC 2011-10-24 Unused (or only for test ?). - * * @param value new value */ public void setValue(Object value) { this.value = value; } - /** + /* * Set value for label. * * @param valueIdentifier new value identifier to get - */ + * public void setValueForIdentifier(Object valueIdentifier) { identifier = valueIdentifier; value = domain.getValueForIdentifier(valueIdentifier); - } + }*/ /** * Get path. Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java 2013-11-08 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/FactorGroup.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -254,8 +254,7 @@ domain = new ContinuousDomain(Distribution.QUNIFMM); ((ContinuousDomain)domain).addDistributionParam("min", 0.0); ((ContinuousDomain)domain).addDistributionParam("max", 1.0); - } - else if (isDiscrete()) { + } else if (isDiscrete()) { // les domaines doivent avoir les même domaines // et pour l'utilisation quand fera l'appelant // de getDomain(), on peut en retourner un au hazard @@ -286,20 +285,20 @@ public String toString() { return "FactorGroup(" + name + ")"; } - - /** + + /* * Set value for label. * * @param valueIdentifier new value identifier to get - */ + * @Override public void setValueForIdentifier(Object valueIdentifier) { identifier = valueIdentifier; for (Factor factor : factors) { factor.setValueForIdentifier(valueIdentifier); } - } - + }*/ + /** * Get the factor value for displaying (for example in R). * Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2013-11-08 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/ContinuousDomain.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -162,26 +162,23 @@ distributionParameters.put(name, value); } - /** - * {@inheritDoc}. - */ + /*@Override public Object getValueForIdentifier(Object identifier) { Double result = 0d; - // FIXME - /*if (isPercentageType()) { + if (isPercentageType()) { // since 3.4.0.0, operator is always * result = ((Double)referenceValue + (((Double)referenceValue * coefficient) * ((2 * (Double)identifier - 1)))); } else { result = ((Double)identifier * ((Double)maxBound - (Double)minBound)) + (Double)minBound; - }*/ + } return result; - } - + }*/ + /** * Accept a new visitor. * Modified: branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java =================================================================== --- branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java 2013-11-08 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/main/java/fr/ifremer/isisfish/simulator/sensitivity/domain/DiscreteDomain.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -35,7 +35,7 @@ /** * Un domain discret a un ensemble de valeur. - * Chaque valeur est identifiée par un label pour sont utilisation par les + * Chaque valeur est identifiée par un label pour son utilisation par les * script d'AS. * * @author chatellier @@ -62,7 +62,7 @@ } /** - * Get domaine values. + * Get domain values. * * @return the values */ @@ -80,10 +80,29 @@ } /** + * Set domain value. + * + * @param key the key + * @param value the value + */ + public void putValue(Object key, Object value) { + this.values.put(key, value); + } + + /** + * Get domain value count. + * + * @return domain value count + */ + public int getValuesCount() { + return values.size(); + } + + /* * {@inheritDoc}. * * @throws IllegalArgumentException if identifier is not a valid key - */ + * public Object getValueForIdentifier(Object identifier) throws IllegalArgumentException { @@ -93,7 +112,7 @@ } return values.get(identifier); - } + }*/ /** * Accept a new visitor. 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 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/test/java/fr/ifremer/isisfish/simulator/sensitivity/SensitivityAnalysisTest.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -35,7 +35,6 @@ import org.junit.Assert; import org.junit.Assume; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.nuiton.j2r.RException; import org.nuiton.j2r.RProxy; @@ -80,11 +79,11 @@ } /** - * Build a test design plan with only continuous factors. + * Build a test design plan with continuous factors unsing uniform distribution. * * @return test design plan */ - protected DesignPlan getContinuousDesignPlan() { + protected DesignPlan getPlanUniformDistrib() { DesignPlan result = new DesignPlan(); @@ -106,34 +105,97 @@ 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 continuous factors uning uniform distribution + * and matrix. + * + * @return test design plan + */ + protected DesignPlan getPlanUniformDistribMatrix() { + DesignPlan result = new DesignPlan(); + + // factor 1, min/max on int + Factor factor1 = new Factor("testint"); + ContinuousDomain domain1 = new ContinuousDomain(Distribution.QUNIFMM); + domain1.addDistributionParam("min", 0.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); + 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 continuous factors uning uniform distribution + * and matrix. + * + * @return test design plan + */ + protected DesignPlan getPlanNormCauchyDistribMatrix() { + + DesignPlan result = new DesignPlan(); + + // factor 1, min/max on int + Factor factor1 = new Factor("testint"); + ContinuousDomain domain1 = new ContinuousDomain(Distribution.DCHISQ); + domain1.addDistributionParam("df", 1.0); + domain1.addDistributionParam("ncp", 3.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.QUNIFMM); + domain2.addDistributionParam("min", matrix1); + domain2.addDistributionParam("max", matrix1); + 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() { + protected DesignPlan getPlanNormCauchyDistrib() { DesignPlan result = new DesignPlan(); @@ -155,25 +217,32 @@ 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; + } + + protected DesignPlan getPlanDiscreteInt() { + DesignPlan result = new DesignPlan(); + + // factor 1, min/max on int + Factor factor1 = new Factor("lnorm"); + DiscreteDomain domain1 = new DiscreteDomain(); + Map<Object> obj = new Hash + domain1.setValues(values); + 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); + return result; } @@ -194,13 +263,28 @@ * @throws SensitivityException */ @Test - public void testMorris() throws IsisFishException, SensitivityException { + public void testMorrisUniform() throws IsisFishException, SensitivityException { SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("Morris").getNewSensitivityAnalysisInstance(); Assert.assertNotNull("Morris script not found in test data", script); - DesignPlan designPlan = getContinuousDesignPlan(); + DesignPlan designPlan = getPlanUniformDistrib(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); + Assert.assertEquals(3, scenarii.getScenarios().size()); + } + + /** + * Test de génération des scenarios via la methode Morris. + * + * @throws IsisFishException + * @throws SensitivityException + */ + @Test(expected=SensitivityException.class) + public void testMorrisNorm() throws IsisFishException, SensitivityException { + SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("Morris").getNewSensitivityAnalysisInstance(); + Assert.assertNotNull("Morris script not found in test data", script); + DesignPlan designPlan = getPlanNormCauchyDistrib(); + script.compute(designPlan, simulationsDir); } /** @@ -214,7 +298,7 @@ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("DOptimal").getNewSensitivityAnalysisInstance(); Assert.assertNotNull("DOptimal script not found in test data", script); - DesignPlan designPlan = getContinuousDesignPlan(); + DesignPlan designPlan = getPlanUniformDistrib(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); } @@ -230,7 +314,7 @@ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("Fast").getNewSensitivityAnalysisInstance(); Assert.assertNotNull("Fast script not found in test data", script); - DesignPlan designPlan = getContinuousDesignPlan(); + DesignPlan designPlan = getPlanUniformDistrib(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); } @@ -246,7 +330,7 @@ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("OptimumLHS").getNewSensitivityAnalysisInstance(); Assert.assertNotNull("OptimumLHS script not found in test data", script); - DesignPlan designPlan = getContinuousDesignPlan(); + DesignPlan designPlan = getPlanUniformDistrib(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); } @@ -262,7 +346,7 @@ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("RandomLHS").getNewSensitivityAnalysisInstance(); Assert.assertNotNull("RandomLHS script not found in test data", script); - DesignPlan designPlan = getContinuousDesignPlan(); + DesignPlan designPlan = getPlanUniformDistrib(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); } @@ -278,7 +362,7 @@ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("RegularExpandGrid").getNewSensitivityAnalysisInstance(); Assert.assertNotNull("RegularExpandGrid script not found in test data", script); - DesignPlan designPlan = getContinuousDesignPlan(); + DesignPlan designPlan = getPlanUniformDistrib(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); } @@ -294,7 +378,7 @@ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("RegularFractions").getNewSensitivityAnalysisInstance(); Assert.assertNotNull("RegularFractions script not found in test data", script); - DesignPlan designPlan = getContinuousDesignPlan(); + DesignPlan designPlan = getPlanUniformDistrib(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); } @@ -310,12 +394,12 @@ SensitivityAnalysis script = SensitivityAnalysisStorage.getSensitivityAnalysis("Sobol").getNewSensitivityAnalysisInstance(); Assert.assertNotNull("Sobol script not found in test data", script); - DesignPlan designPlan = getContinuousDesignPlan(); + DesignPlan designPlan = getPlanUniformDistrib(); SensitivityScenarios scenarii = script.compute(designPlan, simulationsDir); Assert.assertEquals(80, scenarii.getScenarios().size()); - designPlan = getOtherDistribDesignPlan(); + designPlan = getPlanNormCauchyDistrib(); 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 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/DOptimal.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -117,8 +117,7 @@ // vector += (min + (i * (max - min) / (card - 1))) + ","; // } } else { - Map<Object, Object> values = ((DiscreteDomain) domain).getValues(); - int nbValues = values.size(); + int nbValues = ((DiscreteDomain) domain).getValuesCount(); for (int i = 0; i < nbValues; i++) { vector += "as.integer(" + i + "),"; } 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 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Fast.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -85,14 +85,9 @@ SensitivityScenarios thisExperiment = new SensitivityScenarios(); List<Scenario> thisExperimentScenarios = thisExperiment.getScenarios(); - //Test all factors, if one is discrete, return null - for (int i = 0; i < factorNumber; i++) { - if (factors.get(i).getDomain() instanceof DiscreteDomain) { - throw new SensitivityException(factors.get(i).getName() + - " has a discrete domain, this is not acceptable for fast " + - "method."); - } - } + // only run with continuous + checkAllFactorContinuous(factors); + String rInstruction = "a<-fast99(" + "model=NULL," + "factors=%s, " + 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 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/Morris.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -84,7 +84,7 @@ param_r = 4; } - checkAllFactorContinuous(factors); + checkAllUniformDistribution(factors); // Creating the vectors. String factorNames = ""; 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 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularExpandGrid.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -112,8 +112,7 @@ } if (domain instanceof DiscreteDomain) { - Map<Object, Object> values = ((DiscreteDomain) domain).getValues(); - int nbValues = values.size(); + int nbValues = ((DiscreteDomain) domain).getValuesCount(); for (int i = 0; i < nbValues; i++) { vector += "as.integer(" + i + "),"; } 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 16:51:41 UTC (rev 3832) +++ branches/4.0.1/src/test/resources/test-database/sensitivityanalysis/RegularFractions.java 2013-11-14 21:01:30 UTC (rev 3833) @@ -87,6 +87,8 @@ String factorNames = ""; //Test all factors, if one is discrete, return null + checkAllFactorContinuous(factors); + //Create a string with all factors names for (int i = 0; i < factorNumber; i++) { Domain domain = factors.get(i).getDomain(); @@ -95,12 +97,6 @@ } factorNames += "\"" + factors.get(i).getName() + "\""; - - if (domain instanceof DiscreteDomain) { - throw new SensitivityException(factors.get(i).getName() + - " has a discrete domain, this is not acceptable for " + - "this method."); - } } try {
participants (1)
-
echatellier@users.forge.codelutin.com