(Urgent) stoquer dans le context de la next simulation ds un simulationPlan
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
participants (1)
-
Sigrid Lehuta