Ca ne fonctionne pas.
Voila comment j'ai fait, mais je vais appeler de suite pour avoir la solution car j'ai plus le temps de chercher.

dans mon plan :     
                nextSimulation.getParameter().getTagValue().put("epsSRSole",epssol);
                nextSimulation.getParameter().getTagValue().put("epsSRPlaice",epsple);
                nextSimulation.getParameter().getTagValue().put("epsSRRedMullet",epsmur);
                nextSimulation.getParameter().getTagValue().put("migSole",migsol);
                nextSimulation.getParameter().getTagValue().put("migPlaice",migple);
                nextSimulation.getParameter().getTagValue().put("migRedMullet",migmur);

dans l init d une regle:
        String tmp0 = context.getSimulationStorage().getParameter().getTagValue().get("epsSRSole");
         double [] epssol = StringUtil.toArrayDouble(tmp0.split(";"));  
         String tmp1 = context.getSimulationStorage().getParameter().getTagValue().get("epsSRPlaice");
         double [] epsple = StringUtil.toArrayDouble(tmp1.split(";"));  
         String tmp2 = context.getSimulationStorage().getParameter().getTagValue().get("epsSRRedMullet");
         double [] epsmur = StringUtil.toArrayDouble(tmp2.split(";"));  
         String tmp3 = context.getSimulationStorage().getParameter().getTagValue().get("migSole");
         double [] migsol = StringUtil.toArrayDouble(tmp3.split(";"));  
         String tmp4 = context.getSimulationStorage().getParameter().getTagValue().get("migPlaice");
         double [] migple = StringUtil.toArrayDouble(tmp4.split(";"));  
         String tmp5 = context.getSimulationStorage().getParameter().getTagValue().get("migRedMullet");
         double [] migmur = StringUtil.toArrayDouble(tmp5.split(";"));  
       
        context.setValue("epsSRSole",epssol);
        context.setValue("epsSRPlaice",epsple);
        context.setValue("epsSRRedMullet",epsmur);
        context.setValue("migSole",migsol);
        context.setValue("migPlaice",migple);
        context.setValue("migRedMullet",migmur);


dans mes equations:
if(context.getValue("epsSR"+pop.getName()) != null){
                 Object[] epslist = (Object[])context.getValue("epsSR"+pop.getName());
                 eps = (Double) epslist[y-3];
                 System.out.println("eps repro"+eps);
             }else eps = 0; // N(0,0.16)

if (y>2 && context.getValue("mig"+pop.getName()) != null){
    Object[] miglist = (Object[])context.getValue("mig"+pop.getName());
                 y = (int)miglist[y-3];
                 System.out.println("migration y="+y);
}


Caused by: fr.ifremer.isisfish.IsisFishRuntimeException: Can't invoke method 'public abstract double fr.ifremer.isisfish.equation.MigrationEquation.compute(fr.ifremer.isisfish.simulator.SimulationContext,org.nuiton.math.matrix.MatrixND,fr.ifremer.isisfish.entities.Population,fr.ifremer.isisfish.entities.PopulationGroup,fr.ifremer.isisfish.entities.Zone,fr.ifremer.isisfish.entities.Zone) throws java.lang.Exception' for class formules.MigrationEquationfr_ifremer_isisfish_entities_Equation_1370351884680_0_28760183076366463
    at fr.ifremer.isisfish.util.EvaluatorHelper.invoke(EvaluatorHelper.java:369)
    at fr.ifremer.isisfish.util.EvaluatorHelper.evaluate(EvaluatorHelper.java:249)
    at fr.ifremer.isisfish.entities.EquationImpl.evaluate(EquationImpl.java:75)
    ... 12 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at fr.ifremer.isisfish.util.EvaluatorHelper.invoke(EvaluatorHelper.java:366)
    ... 14 more
Caused by: java.lang.ClassCastException: [D cannot be cast to [Ljava.lang.Object;
    at formules.MigrationEquationfr_ifremer_isisfish_entities_Equation_1370351884680_0_28760183076366463.compute(MigrationEquationfr_ifremer_isisfish_entities_Equation_1370351884680_0_28760183076366463.java:10)




Le 9 septembre 2014 17:01, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
hmm pas simple


je stocke des array sous forme de string, que je vais repasser en string dans des equations de la DB.
J'ai besoin de la methode StringUtil.toArrayDouble
comment y ai je acces ds une equation?

merci !


Le 9 septembre 2014 15:03, Eric Chatellier <chatellier@codelutin.com> a écrit :

Le 09/09/2014 11:24, Sigrid Lehuta a écrit :
> Hello,
> dans un plan de simulation je veux en pré-simulation stoquer des valeurs dans
> le context de la prochaine simu. (pour que ca soit accessible pendant la simu
> en faisant context.getValue("blabla"))
Le SimulationContext n'existe que si une simulation est en cours, donc ce n'est
pas possible via ce contexte.

La seule façon que je vois est de passer par les paramètres de simulation et la
Map "tagValue".

Dans ton plan:
 Map<String, String> tagValues = new HashMap<String, String>();
 tagValues.put("key1", "value1");
 params.setTagValue(tagValues);

Et ensuite, dans la simulation:
 SimulationParameter params = context.getSimulationStorage().getParameter();
 String value = params.getTagValue().get("key1");

--
Éric Chatellier - www.codelutin.com - 02.40.50.29.28

_______________________________________________
Isis-fish-users mailing list
Isis-fish-users@list.isis-fish.org
http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users