Bonjour, J'ai un problème cette simulation qui ne tourne pas lorsque seul l'export "Captures_AgeStructure_pop_3pop.java" est demandé et, en revanche, fonctionne quand l'export "Abundances.java" est demandé en plus de "Captures_AgeStructure_pop_3pop.java" (version 4.4.2.2). D'après le debug.txt, le problème semble provenir de l'équation d'immigration de la population "Sole3z_WestFR" (voir ci-dessous). Par ailleurs, lorsque la simu fonctionne (quand les deux exports sont demandés), elle met beaucoup de temps à tourner, surtout au cours des mois de février de chaque année). Avez-vous une idée d'où ça vient? En pièces jointes le script d'export "Captures_AgeStructure_pop_3pop.java", la base ainsi que le parameters.properties de la simulation. Merci d'avance ! Sophie Leforestier 2019-01-10 09:11:46,124 WARN [monitor-thread] (SimulationMonitor.java:533) checkProgression - Simulation exception : fr.ifremer.isisfish.IsisFishRuntimeException: Can't evaluate equation at fr.ifremer.isisfish.util.EvaluatorHelper.catchEvaluateException(EvaluatorHelper.java:276) at fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl.getImmigrationMatrix(PopulationSeasonInfoImpl.java:685) at fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl.getImmigrationMatrix(PopulationSeasonInfoImpl.java:626) at simulators.DefaultSimulator.computeMonth(DefaultSimulator.java:438) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:242) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:430) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:260) Caused by: fr.ifremer.isisfish.IsisFishRuntimeException: Impossible d'évaluer l'équation: TimeStep date = context.getSimulationControl().getStep(); //List<Population> pops = context.getSimulationStorage().getParameter().getPopulations(); List<Population> pops = context.getPopulationMonitor().getPopulations(); double newJuv_Veys = 0; double newJuv_Seine =0; for(Population p : pops){ if(p.getSpecies().getName().equals(pop.getSpecies().getName()) && !p.getName().equals(pop.getName())){ String name = "MatrixAbundance"; MatrixND ab = context.getResultManager().getMatrix(date,pop,name).copy(); //MatrixND ab = context.getPopulationMonitor().getN(p); //ab = ab.getSubMatrix(0,1,1);// ages 2 ab = ab.getSubMatrix(0,0,1);// ages 1 for (MatrixIterator i = ab.iterator(); i.hasNext();) { i.next(); Object[] sem = i.getSemanticsCoordinates(); Zone zoneRecru = (Zone) sem[1]; PopulationGroup grp = (PopulationGroup) sem[0]; if(zoneRecru.getName().equals("Sole_nurs_Veys")) { newJuv_Veys += i.getValue(); }else if(zoneRecru.getName().equals("Sole_nurs_Seine")){ newJuv_Seine += i.getValue(); } } } } double result = 0; if (group.getAge() == 1) { String zoneName = arrivalZone.getName(); if (zoneName.equals("Sole_nurs_Veys")) { result = newJuv_Veys; }else if(zoneName.equals("Sole_nurs_Seine")) { result = newJuv_Seine; } return result; } else return 0; at fr.ifremer.isisfish.entities.EquationImpl.evaluate(EquationImpl.java:89) at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:84) at fr.ifremer.isisfish.entities.EquationImpl_$$_jvst2df_6.evaluate(EquationImpl_$$_jvst2df_6.java) at fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl.getImmigrationMatrix(PopulationSeasonInfoImpl.java:657) ... 5 more Caused by: fr.ifremer.isisfish.IsisFishRuntimeException: Can't invoke method 'public abstract double fr.ifremer.isisfish.equation.ImmigrationEquation.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) throws java.lang.Exception' for class formules.ImmigrationEquationfr_ifremer_isisfish_entities_Equation_1508942748395_0_953294363441329 at fr.ifremer.isisfish.util.EvaluatorHelper.invoke(EvaluatorHelper.java:465) at fr.ifremer.isisfish.util.EvaluatorHelper.evaluate(EvaluatorHelper.java:299) at fr.ifremer.isisfish.entities.EquationImpl.evaluate(EquationImpl.java:74) ... 11 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor26.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:462) ... 13 more Caused by: java.lang.NullPointerException at formules.ImmigrationEquationfr_ifremer_isisfish_entities_Equation_1508942748395_0_953294363441329.compute(ImmigrationEquationfr_ifremer_isisfish_entities_Equation_1508942748395_0_953294363441329.java:13) ... 17 more
Le 10/01/2019 à 09:59, Sophie LEFORESTIER a écrit :
Bonjour,
J'ai un problème cette simulation qui ne tourne pas lorsque seul l'export "Captures_AgeStructure_pop_3pop.java" est demandé et, en revanche, fonctionne quand l'export "Abundances.java" est demandé en plus de "Captures_AgeStructure_pop_3pop.java" (version 4.4.2.2). D'après le debug.txt, le problème semble provenir de l'équation d'immigration de la population "Sole3z_WestFR" (voir ci-dessous). Par ailleurs, lorsque la simu fonctionne (quand les deux exports sont demandés), elle met beaucoup de temps à tourner, surtout au cours des mois de février de chaque année). Avez-vous une idée d'où ça vient?
Bonjour, On voit bien que l’équation récupère le résultat : String name = "MatrixAbundance"; MatrixND ab = context.getResultManager().getMatrix(date,pop,name).copy(); Donc, si l'export "Abundances.java" n'est pas utilisé, le résultat ne sera pas disponible. Toutefois, depuis une version récente d'Isis, nous avons résolu ce problème. Au début de l’équation, vous pouvez demander à Isis de calculer ce résultat en ajoutant l’instruction : String[] necessaryResult = {MatrixAbundance.NAME}; -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
participants (2)
-
Eric Chatellier -
Sophie LEFORESTIER