Aide demandée : Immigration / Emmigration
Bonjour, J'ai une population complexe nécessitant l'utilisation des matrices d'immigration et Emmigration que je n'ai jamais utilisées. Il s'agit de 3 populations qui s'échangent des juvéniles : En fonction de la zone ou se trouve un juvenile d'une pop lorsqu'il devient mature, il reste dans sa pop ou il rejoint une autre pop. Et ce pour mes 3 populations. Il s'agit donc de faire immigrer vers chaque pop un nombre de juvenile egal au nombre de juveniles des autres pops présents dans leur zone d'influence. Puis de faire emigrer de chaque pop, les juveniles n'étant pas dans la zone d influence de la pop. Question 1 : Je dois pouvoir récuperer les abondances d une autre pop ds ces equations depuis le context ? context.getSimulationStorage <http://www.isis-fish.org/apidocs/fr/ifremer/isisfish/simulator/SimulationContext.html#getSimulationStorage--> ().getResultStorage().getMatrix <http://www.isis-fish.org/apidocs/fr/ifremer/isisfish/datastore/ResultStorage.html#getMatrix-fr.ifremer.isisfish.types.TimeStep-fr.ifremer.isisfish.entities.Population-java.lang.String-> (TimeStep <http://www.isis-fish.org/apidocs/fr/ifremer/isisfish/types/TimeStep.html> step, Population <http://www.isis-fish.org/apidocs/fr/ifremer/isisfish/entities/Population.html> pop, ABUNDANCE) et les objets pop autres que la mienne context.getSimulationStorage().getParameter().getPopulations(); C'est ça ? Par contre ISIS réalise l'emmigration AVANT l'immigration. Donc je vais vider mes matrices N avant de recuperer les nombres de juveniles necessaires pour l immigration. Question 2) : J'envisage 3 solutions : 1) Changer le simulateur pour faire l'immigration avant l immigration. Grosses consequences ?? j imagine qu il y avait un raisonnement derriere cet ordre. 2) reccuperer dans le contexte la matrice N du pas de temps precedent qui n est pas modifiée et sur laquelle se sont appliqués les mortalités ? C'est possible ca ? 3) trouver un moyen de stoquer les nombres qqpart ??? un peu crade mais faisable ??? Qu'est ce qui vous parait le plus robuste et faisable ? Merci. Sigrid
Le 06/12/2017 16:06, Sigrid Lehuta a écrit :
Bonjour,
Question 1 : Je dois pouvoir récuperer les abondances d une autre pop ds ces equations depuis le context ? context.getSimulationStorage [1]().getResultStorage().getMatrix [2](TimeStep [3] step, Population [4] pop, ABUNDANCE) et les objets pop autres que la mienne context.getSimulationStorage().getParameter().getPopulations(); C'est ça ?
Je ne suis pas sur que ca fonctionne si le résultat est stocké à la fin du pas de temps. Je ferais plutôt : context.getPopulationMonitor().getN(pop); si tu as l'instance de l'autre population. Sinon, tu peux utiliser aussi: context.getPopulationMonitor().getpopulations() pour avoir les autres instances de populations.
Par contre ISIS réalise l'emmigration AVANT l'immigration. Donc je vais vider mes matrices N avant de recuperer les nombres de juveniles necessaires pour l immigration.
Question 2) : J'envisage 3 solutions : 1) Changer le simulateur pour faire l'immigration avant l immigration. Grosses consequences ?? j imagine qu il y avait un raisonnement derriere cet ordre.
Je ne peux pas répondre sur le coté scientifique de la question. Par contre, techniquement, le simulateur est prévu pour être changé par les utilisateurs, donc ca peut être une solution.
2) reccuperer dans le contexte la matrice N du pas de temps precedent qui n est pas modifiée et sur laquelle se sont appliqués les mortalités ? C'est possible ca ?
Tout est possible, même si ce n'est pas forcement très joli. Il faudrait donc que tu récupère l'abondance du pas de temps précédent via le ResultStorage comme tu l'as fait plus haut.
3) trouver un moyen de stoquer les nombres qqpart ??? un peu crade mais faisable ???
Oui, tu as toujours: context.setValue(String, Object) et context.getValue(String)
OK merci ! je teste les différentes options et je ferai un compte rendu sur la liste. SIgrid Le 11 décembre 2017 à 10:10, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 06/12/2017 16:06, Sigrid Lehuta a écrit :
Bonjour,
Question 1 : Je dois pouvoir récuperer les abondances d une autre pop
ds ces equations depuis le context ? context.getSimulationStorage [1]().getResultStorage().getMatrix [2](TimeStep [3] step, Population [4] pop, ABUNDANCE) et les objets pop autres que la mienne context.getSimulationStorage().getParameter().getPopulations(); C'est ça ?
Je ne suis pas sur que ca fonctionne si le résultat est stocké à la fin du pas de temps. Je ferais plutôt : context.getPopulationMonitor().getN(pop); si tu as l'instance de l'autre population.
Sinon, tu peux utiliser aussi: context.getPopulationMonitor().getpopulations() pour avoir les autres instances de populations.
Par contre ISIS réalise l'emmigration AVANT l'immigration. Donc je
vais vider mes matrices N avant de recuperer les nombres de juveniles necessaires pour l immigration.
Question 2) :
J'envisage 3 solutions : 1) Changer le simulateur pour faire l'immigration avant l immigration. Grosses consequences ?? j imagine qu il y avait un raisonnement derriere cet ordre.
Je ne peux pas répondre sur le coté scientifique de la question. Par contre, techniquement, le simulateur est prévu pour être changé par les utilisateurs, donc ca peut être une solution.
2) reccuperer dans le contexte la matrice N du pas de temps precedent
qui n est pas modifiée et sur laquelle se sont appliqués les mortalités ? C'est possible ca ?
Tout est possible, même si ce n'est pas forcement très joli. Il faudrait donc que tu récupère l'abondance du pas de temps précédent via le ResultStorage comme tu l'as fait plus haut.
3) trouver un moyen de stoquer les nombres qqpart ??? un peu crade
mais faisable ???
Oui, tu as toujours: context.setValue(String, Object) et context.getValue(String) _______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Question technique : quelles differences entre Manager, Storage et Monitor ? par exemple dans : MatrixND ab = context.getResultManager().getMatrix(date,pop,name).copy(); et MatrixND ab = context.getSimulationStorage().getResultStorage().getMatrix(date, p, name).copy(); et entre List<Population> pops = context.getSimulationStorage().getParameter().getPopulations(); et List<Population> pops = context.getPopulationMonitor().getPopulations(); Merci Le 12 décembre 2017 à 18:30, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
OK merci ! je teste les différentes options et je ferai un compte rendu sur la liste. SIgrid
Le 11 décembre 2017 à 10:10, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 06/12/2017 16:06, Sigrid Lehuta a écrit :
Bonjour,
Question 1 : Je dois pouvoir récuperer les abondances d une autre pop
ds ces equations depuis le context ? context.getSimulationStorage [1]().getResultStorage().getMatrix [2](TimeStep [3] step, Population [4] pop, ABUNDANCE) et les objets pop autres que la mienne context.getSimulationStorage().getParameter().getPopulations(); C'est ça ?
Je ne suis pas sur que ca fonctionne si le résultat est stocké à la fin du pas de temps. Je ferais plutôt : context.getPopulationMonitor().getN(pop); si tu as l'instance de l'autre population.
Sinon, tu peux utiliser aussi: context.getPopulationMonitor().getpopulations() pour avoir les autres instances de populations.
Par contre ISIS réalise l'emmigration AVANT l'immigration. Donc je
vais vider mes matrices N avant de recuperer les nombres de juveniles necessaires pour l immigration.
Question 2) :
J'envisage 3 solutions : 1) Changer le simulateur pour faire l'immigration avant l immigration. Grosses consequences ?? j imagine qu il y avait un raisonnement derriere cet ordre.
Je ne peux pas répondre sur le coté scientifique de la question. Par contre, techniquement, le simulateur est prévu pour être changé par les utilisateurs, donc ca peut être une solution.
2) reccuperer dans le contexte la matrice N du pas de temps precedent
qui n est pas modifiée et sur laquelle se sont appliqués les mortalités ? C'est possible ca ?
Tout est possible, même si ce n'est pas forcement très joli. Il faudrait donc que tu récupère l'abondance du pas de temps précédent via le ResultStorage comme tu l'as fait plus haut.
3) trouver un moyen de stoquer les nombres qqpart ??? un peu crade
mais faisable ???
Oui, tu as toujours: context.setValue(String, Object) et context.getValue(String) _______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Question technique : quelles differences entre Manager, Storage et Monitor ? par exemple dans :
MatrixND ab = context.getResultManager().getMatrix(date,pop,name).copy(); et MatrixND ab = context.getSimulationStorage().getResultStorage().getMatrix(date, p, name).copy();
Dans ce cas c'est ResultManager qu'il faut utiliser, même si en réalité, lui appele le SimulationStorage().getResultStorage. Le ResultManager permet de gerer les résultats pour la simulation, d'ajouter du cache, d'avoir des accès plus simples.
et entre
List<Population> pops = context.getSimulationStorage().getParameter().getPopulations(); et List<Population> pops = context.getPopulationMonitor().getPopulations();
Idem, ce sont les mêmes données, mais PopulationMonitor est une classe utilitaire qui permet de gerer plusieurs choses pendant la simulation (biomass, rejet...) Globalement, il faut utiliser Manager et Monitor. Les storages, c'est techniquement lié au stockage et ça pourrait être amené à évoluer dans les futures versions d'Isis. -- Éric Chatellier
participants (2)
-
Eric Chatellier -
Sigrid Lehuta