comment acceder aux "variables" d'une population dans SiMatrix ?
Comme le dit le titre : dans SiMatrix je veux accéder a la valeur d'une variable d'une population (onglet variables), son petit nom est "FonCatch". je sais le faire ds une regle avec context.get(pop).getAsDouble("FonCatch") mais ds si matrix on a pas de context... Si ca n'est pas possible comme ca, voici ce que je veux faire : la mortalité par peche par groupe est calculée sur les captures ou sur les debarquements selon l'espece. J'ai donc crée la variable FonCatch qui vaut 1 si F est calculee sur les captures et 0 sinon. et je veux que la methode fishingMortalityPerGroup en tienne compte. Cf dessous. Pouvez vous proposer autre chose si ca ne va pas? Merci ! public MatrixND fishingMortalityPerGroup(TimeStep step, Population pop, ResultStorage resManager) throws TopiaException { double Fgroup = 0; double Cgroup = 0; double Mgroup = 0; double NgroupJan = 0; List<Population> populations = Collections.singletonList(pop); List<PopulationGroup> groups = pop.getPopulationGroup(); MatrixND tfgMatrix = MatrixFactory.getInstance().create( ResultName.MATRIX_FISHING_MORTALITY_PER_GROUP, new List[]{populations, groups}, // On travaille sur les pops ET les groupes new String[]{n("Population"), n("Group")}); for (PopulationGroup group : groups) { if (step.getMonth() == Month.DECEMBER) { MatrixND catchPerStrategy = null; for (TimeStep loopstep = new TimeStep(step.getYear() * 12); loopstep.beforeOrEquals(step); loopstep=loopstep.next()) { // On fait cette boucle pour contourner les aspects de cache qui font que les resultats ne sont pas recuperes //s'ils ont deja ete calcules une fois (meme s'ils ont change depuis) // beforeOrEquals sert a bien prendre Decembre aussi if(context.get(pop).getAsDouble("FonCatch") == null || context.get(pop).getAsDouble("FonCatch") == 1){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); } if (catchPerStrategy == null) { catchPerStrategy = catchPerStrategyTemp.clone(); // On clone la matrice car si on fait les operations sur celle contenue dans le cache on la modifie et donc on recupere des resultats faux. } else { catchPerStrategy = catchPerStrategy.add(catchPerStrategyTemp); // Pour avoir la somme des captures sur les 12 mois } } //log.info("catchPerStrategy = " + catchPerStrategy); catchPerStrategy = catchPerStrategy.sumOverDim(0); // Strategy catchPerStrategy = catchPerStrategy.sumOverDim(1); // Metier catchPerStrategy = catchPerStrategy.sumOverDim(3); // Zone : une pop peut avoir plusieurs zonespop dans ISIS List semgroup = catchPerStrategy.getSemantic(2); catchPerStrategy = catchPerStrategy.reduce(); // Enleve les dimensions de taille 1 catchPerStrategy.setSemantic(0, semgroup); // Ne plait pas a Eric Cgroup = catchPerStrategy.getValue(group); //log.info("Cgroup = " + Cgroup + "Year=" + step.getYear()); //log.info("catchPerStrategy = " + catchPerStrategy + "Year=" + step.getYear()); MatrixND naturalDeathRatePop = pop.getNaturalDeathRateMatrix(); naturalDeathRatePop = naturalDeathRatePop.meanOverDim(1); // moyenne sur Zone naturalDeathRatePop = naturalDeathRatePop.reduce(); // Enleve les dimensions de taille 1 Mgroup = naturalDeathRatePop.getValue(group); //log.info("Mgroup= " + Mgroup + "Year=" + step.getYear()); MatrixND abundancePopJan = resManager.getMatrix(new TimeStep(12*step.getYear()), pop, ResultName.MATRIX_ABUNDANCE_BEGIN_MONTH); // Le timestep 0 correspond a janvier de la premiere annee et les annees sont numerotees a partir de zero abundancePopJan = abundancePopJan.sumOverDim(1); // somme sur Zone abundancePopJan = abundancePopJan.reduce(); NgroupJan = abundancePopJan.getValue(group); //log.info("NgroupJan = " + NgroupJan + "Year=" + step.getYear()); ObjectiveFunction f = new ObjectiveFunctionBaranov(Cgroup, Mgroup, NgroupJan); Fgroup = MinimisationUtil.fmin(0.0,2.0,1.0e-10, f); // step ?? //log.info("Fgroup = " + Fgroup); tfgMatrix.setValue(pop, group, Fgroup); // Bien faire attention a l'endroit ou on met cette etape (quelle boucle) ? } else { //Fgroup = 0; // Ce n'est plus une valeur unique mais une matrice, est-ce que cette notation peut fonctionner ? tfgMatrix.setValue(pop, group, 0); // Bien faire attention a l'endroit ou on met cette etape (quelle boucle) ? } } //log.info("tfgMatrix = " + tfgMatrix); //log.info("tfg.DimensionNames = " + Arrays.toString(tfgMatrix.getDimensionNames())); //log.info("tfg.Semantics = " + Arrays.toString(tfgMatrix.getSemantics())); return tfgMatrix; }
Le 17/04/2015 18:17, Sigrid Lehuta a écrit :
Comme le dit le titre : dans SiMatrix je veux accéder a la valeur d'une variable d'une population (onglet variables), son petit nom est "FonCatch". je sais le faire ds une regle avec context.get(pop).getAsDouble("FonCatch")
mais ds si matrix on a pas de context... Si, il y a un context sur SiMatrix directement (this).
Donc "context.get(pop).getAsDouble("FonCatch")" doit fonctionner. Ca résout tout ton problème ? -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
non il rale quand je mets ca... ---------- 1. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1944) if(context.get(pop).getAsDouble("FonCatch") == null || context.get(pop).getAsDouble("FonCatch") == 1){ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The operator == is undefined for the argument type(s) double, null ---------- 2. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1948) catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 3. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1951) catchPerStrategy = catchPerStrategyTemp.clone(); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved ---------- 4. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1954) catchPerStrategy = catchPerStrategy.add(catchPerStrategyTemp); // Pour avoir la somme des captures sur les 12 mois ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 4 problems (4 errors) Le 17 avril 2015 18:32, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 17/04/2015 18:17, Sigrid Lehuta a écrit :
Comme le dit le titre : dans SiMatrix je veux accéder a la valeur d'une variable d'une population (onglet variables), son petit nom est "FonCatch". je sais le faire ds une regle avec context.get(pop).getAsDouble("FonCatch")
mais ds si matrix on a pas de context... Si, il y a un context sur SiMatrix directement (this).
Donc "context.get(pop).getAsDouble("FonCatch")" doit fonctionner.
Ca résout tout ton problème ?
-- É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
attends seule l erreur 1 est pertinente, les autres c est mon étourderie. Le 17 avril 2015 18:38, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
non il rale quand je mets ca...
---------- 1. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1944) if(context.get(pop).getAsDouble("FonCatch") == null || context.get(pop).getAsDouble("FonCatch") == 1){ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The operator == is undefined for the argument type(s) double, null ---------- 2. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1948) catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 3. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1951) catchPerStrategy = catchPerStrategyTemp.clone(); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved ---------- 4. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1954) catchPerStrategy = catchPerStrategy.add(catchPerStrategyTemp); // Pour avoir la somme des captures sur les 12 mois ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 4 problems (4 errors)
Le 17 avril 2015 18:32, Eric Chatellier <chatellier@codelutin.com> a écrit :
Comme le dit le titre : dans SiMatrix je veux accéder a la valeur d'une variable d'une
Le 17/04/2015 18:17, Sigrid Lehuta a écrit : population
(onglet variables), son petit nom est "FonCatch". je sais le faire ds une regle avec context.get(pop).getAsDouble("FonCatch")
mais ds si matrix on a pas de context... Si, il y a un context sur SiMatrix directement (this).
Donc "context.get(pop).getAsDouble("FonCatch")" doit fonctionner.
Ca résout tout ton problème ?
-- É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
C'est bon j ai contourné le probleme je pense ! ca va si je fais ca ? : MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); if(context.get(pop).getAsDouble("FonCatch") == 0) { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); } Si y a pas de variable FonCatch pour la pop, est ce que ca va planter ou est ce qu il n entrera simplement pas ds le if ? Le 17 avril 2015 18:41, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
attends seule l erreur 1 est pertinente, les autres c est mon étourderie.
Le 17 avril 2015 18:38, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
non il rale quand je mets ca...
---------- 1. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1944) if(context.get(pop).getAsDouble("FonCatch") == null || context.get(pop).getAsDouble("FonCatch") == 1){ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The operator == is undefined for the argument type(s) double, null ---------- 2. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1948) catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 3. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1951) catchPerStrategy = catchPerStrategyTemp.clone(); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved ---------- 4. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1954) catchPerStrategy = catchPerStrategy.add(catchPerStrategyTemp); // Pour avoir la somme des captures sur les 12 mois ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 4 problems (4 errors)
Le 17 avril 2015 18:32, Eric Chatellier <chatellier@codelutin.com> a écrit :
Comme le dit le titre : dans SiMatrix je veux accéder a la valeur d'une variable d'une
Le 17/04/2015 18:17, Sigrid Lehuta a écrit : population
(onglet variables), son petit nom est "FonCatch". je sais le faire ds une regle avec context.get(pop).getAsDouble("FonCatch")
mais ds si matrix on a pas de context... Si, il y a un context sur SiMatrix directement (this).
Donc "context.get(pop).getAsDouble("FonCatch")" doit fonctionner.
Ca résout tout ton problème ?
-- É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
Non ca marche pas... ERROR|18:46:44,699|InProcessSimulatorLauncher.java|484|localSimulateSameThread|Error during simulation java.lang.NullPointerException at fr.ifremer.isisfish.simulator.SimulationVariable.getAsDouble(SimulationVariable.java:100) at scripts.SiMatrix.fishingMortalityPerGroup_aroundBody102(SiMatrix.java:1946) at scripts.SiMatrix$AjcClosure103.run(SiMatrix.java:1) at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) at fr.ifremer.isisfish.util.IsisCache.realCall(IsisCache.java:202) at fr.ifremer.isisfish.util.IsisCache.get(IsisCache.java:143) at fr.ifremer.isisfish.aspect.CacheAspect.call(CacheAspect.java:73) at scripts.SiMatrix.fishingMortalityPerGroup(SiMatrix.java:1921) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:335) at simulators.SimulatorEffortByCell.simulate(SimulatorEffortByCell.java:51) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:441) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:271) Le 17 avril 2015 18:45, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
C'est bon j ai contourné le probleme je pense ! ca va si je fais ca ? : MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); if(context.get(pop).getAsDouble("FonCatch") == 0) { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); }
Si y a pas de variable FonCatch pour la pop, est ce que ca va planter ou est ce qu il n entrera simplement pas ds le if ?
Le 17 avril 2015 18:41, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
attends seule l erreur 1 est pertinente, les autres c est mon étourderie.
Le 17 avril 2015 18:38, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
non il rale quand je mets ca...
---------- 1. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1944) if(context.get(pop).getAsDouble("FonCatch") == null || context.get(pop).getAsDouble("FonCatch") == 1){ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The operator == is undefined for the argument type(s) double, null ---------- 2. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1948) catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 3. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1951) catchPerStrategy = catchPerStrategyTemp.clone(); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved ---------- 4. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1954) catchPerStrategy = catchPerStrategy.add(catchPerStrategyTemp); // Pour avoir la somme des captures sur les 12 mois ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 4 problems (4 errors)
Le 17 avril 2015 18:32, Eric Chatellier <chatellier@codelutin.com> a écrit :
Comme le dit le titre : dans SiMatrix je veux accéder a la valeur d'une variable d'une
Le 17/04/2015 18:17, Sigrid Lehuta a écrit : population
(onglet variables), son petit nom est "FonCatch". je sais le faire ds une regle avec context.get(pop).getAsDouble("FonCatch")
mais ds si matrix on a pas de context... Si, il y a un context sur SiMatrix directement (this).
Donc "context.get(pop).getAsDouble("FonCatch")" doit fonctionner.
Ca résout tout ton problème ?
-- É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
J'ai triché pour le moment en faisant: MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); if(pop.getName().equals("Sole")) { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); } et il se passe un truc etrange, si MATRIX_LANDING_PER_MET n est pas selectionné comme resultat (erreur bete) et que je simule avec une pop pour qui on calcule F avec les captures et ma pop de sole, alors la mortalite par peche est 0 pour les 2 pops ! (ca se passe bien en revanche si MATRIX_LANDING_PER_MET est selectionné.) Le 17 avril 2015 18:50, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
Non ca marche pas...
ERROR|18:46:44,699|InProcessSimulatorLauncher.java|484|localSimulateSameThread|Error during simulation java.lang.NullPointerException at fr.ifremer.isisfish.simulator.SimulationVariable.getAsDouble(SimulationVariable.java:100) at scripts.SiMatrix.fishingMortalityPerGroup_aroundBody102(SiMatrix.java:1946) at scripts.SiMatrix$AjcClosure103.run(SiMatrix.java:1) at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) at fr.ifremer.isisfish.util.IsisCache.realCall(IsisCache.java:202) at fr.ifremer.isisfish.util.IsisCache.get(IsisCache.java:143) at fr.ifremer.isisfish.aspect.CacheAspect.call(CacheAspect.java:73) at scripts.SiMatrix.fishingMortalityPerGroup(SiMatrix.java:1921) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:335) at simulators.SimulatorEffortByCell.simulate(SimulatorEffortByCell.java:51) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:441) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:271)
Le 17 avril 2015 18:45, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
C'est bon j ai contourné le probleme je pense ! ca va si je fais ca ? : MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); if(context.get(pop).getAsDouble("FonCatch") == 0) { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); }
Si y a pas de variable FonCatch pour la pop, est ce que ca va planter ou est ce qu il n entrera simplement pas ds le if ?
Le 17 avril 2015 18:41, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
attends seule l erreur 1 est pertinente, les autres c est mon étourderie.
Le 17 avril 2015 18:38, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
non il rale quand je mets ca...
---------- 1. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1944) if(context.get(pop).getAsDouble("FonCatch") == null || context.get(pop).getAsDouble("FonCatch") == 1){ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The operator == is undefined for the argument type(s) double, null ---------- 2. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1948) catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 3. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1951) catchPerStrategy = catchPerStrategyTemp.clone(); ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved ---------- 4. ERROR in C:\Users\slehuta\isis-fish-4\isis-database\scripts\SiMatrix.java (at line 1954) catchPerStrategy = catchPerStrategy.add(catchPerStrategyTemp); // Pour avoir la somme des captures sur les 12 mois ^^^^^^^^^^^^^^^^^^^^ catchPerStrategyTemp cannot be resolved to a variable ---------- 4 problems (4 errors)
Le 17 avril 2015 18:32, Eric Chatellier <chatellier@codelutin.com> a écrit :
Comme le dit le titre : dans SiMatrix je veux accéder a la valeur d'une variable d'une
Le 17/04/2015 18:17, Sigrid Lehuta a écrit : population
(onglet variables), son petit nom est "FonCatch". je sais le faire ds une regle avec context.get(pop).getAsDouble("FonCatch")
mais ds si matrix on a pas de context... Si, il y a un context sur SiMatrix directement (this).
Donc "context.get(pop).getAsDouble("FonCatch")" doit fonctionner.
Ca résout tout ton problème ?
-- É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
J'ai triché pour le moment en faisant: MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); if(pop.getName().equals("Sole")) { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); } Heu, j'ai loupé une étape, je ne vois pas le rapport entre la variable
Le 17/04/2015 19:08, Sigrid Lehuta a écrit : précedente et ce code sans variable. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
OK je comprends l'esprit. Si c'est reconnu d'utilité générale, on pourra envisager la création d'une tickbox qqpart pour cette variable. J'en discuterai avec Steph. En attendant, concernant ce dernier bout de code, c'est juste qu'il ne faut utiliser "landings" que si la pop c est la sole. Donc au lieu de creer la variable qui me sert de boolean, c est directement un test sur l espece ds siMatrix mais c est tout sauf generic. je vais peut etre plutot passer par les commentaires de l'espece, ca sera plus generic. Le 20 avril 2015 10:42, Eric Chatellier <chatellier@codelutin.com> a écrit :
J'ai triché pour le moment en faisant: MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); if(pop.getName().equals("Sole")) { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_LANDING_PER_MET); } Heu, j'ai loupé une étape, je ne vois pas le rapport entre la variable
Le 17/04/2015 19:08, Sigrid Lehuta a écrit : précedente et ce code sans variable.
-- É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
Le 17/04/2015 18:50, Sigrid Lehuta a écrit : > Non ca marche pas... > > ERROR|18:46:44,699|InProcessSimulatorLauncher.java|484|localSimulateSameThread|Error > during simulation > java.lang.NullPointerException > at > fr.ifremer.isisfish.simulator.SimulationVariable.getAsDouble(SimulationVariable.java:100) En fait, il n'y a pas moyen actuellement dans IsisFish de savoir si une variable existe ou pas. Je pense qu'on l'a fait au départ pour avoir une base semi structurée: - soit la variable existe - soit ca plante Il serait dangereux pour les résultats de prendre "0" comme valeur par defaut. Autre remarque, les variables ont été prévu pour une utilisation non générique (règles, export). Si tu commences à utiliser des variables dans SiMatrix, c'est un autre cas. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
participants (2)
-
Eric Chatellier -
Sigrid Lehuta