Default Simulator : une décision à discuter
Hello j'avais récemment modifier le default Simulator methode computeMonth() pour en extraire le calcul de Fising Mortality per group et Fishing Mortality totale et les mettre après les post actions des règles (hors de la méthode). La raison en est que je voulais pouvoir calculer F soit sur les catch soit sur les landings (hors les landings ne sont disponibles qu'apres la post action des rules). Si on juge que c'est important, je crois qu'il faudrait faire un truc plus propre et dépendant de l'espèce pour la V3.4. Je propose : - est ce important ? (Steph ?) - ajouter une tickBox dans l onglet structure de pop a coté de "group min" et "group max" disant "calcul de F sur les débarquements" Changer la methode fishingMortalityPerGroup comme suit if( ! *tickBox* cochée){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.*MATRIX_LANDING_PER_MET*); } - effectivement sortir le calcul de ces resultats de ComputeMonth() *************************** Autre aspect, j'ai des pops saisonnières qui sont à 0 en janvier, leur F est donc tjs nul... - est ce utile de spécifier un mois auquel regarder l'abondance pour le calcul de F ou est ce une situation trop rare ? (Steph ?) si c est utile : - ajouter un param "mois de considération de l abondance pour le calcul de F" (!), surnommé "*mcacf*" - modifier la methode fishingMortalityPerGroup : abundancePopJan = resManager.getMatrix(new TimeStep(12*step.getYear()+*mcacf*), pop, ResultName.MATRIX_ABUNDANCE_BEGIN_MONTH); //6 juillet pour squid Sinon peut etre tester si N == 0, si oui boucler sur les pas de temps de l année jusqu a trouver un N!=0 ? *************************** Une autre : dans ObjectiveFunction f = new ObjectiveFunctionBaranov(Cgroup, Mgroup, NgroupJan); Fgroup = MinimisationUtil.fmin(0.0,2.0,1.0e-10, f); // step ?? On limite la recherche de f entre 0 et 2.0 c'est un peu restrictif mais efficace. Il serait bon de tester si Fgroup ==2 ou 1.999 et si c'est le cas de relancer la recherche entre 0 et 10 par exemple car il peut arriver que F depasse 2. ************************** Juste une remarque si je ne m'abuse if y a redondance de test l 328 du defaultSimulateur ligne 265 // discard and landing must be done after post action rules // only if there are one or more strategy if (siMatrix.getStrategies(step).size() > 0) { puis ligne 328 ds ce if if (siMatrix.getStrategies(step).size() > 0) {
Le 9 juin 2015 16:12, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
Hello j'avais récemment modifier le default Simulator methode computeMonth() pour en extraire le calcul de Fising Mortality per group et Fishing Mortality totale et les mettre après les post actions des règles (hors de la méthode).
La raison en est que je voulais pouvoir calculer F soit sur les catch soit sur les landings (hors les landings ne sont disponibles qu'apres la post action des rules).
Si on juge que c'est important, je crois qu'il faudrait faire un truc plus propre et dépendant de l'espèce pour la V3.4.
Je propose : - est ce important ? (Steph ?)
réponse : Oui
- ajouter une tickBox dans l onglet structure de pop a coté de "group min" et "group max" disant "calcul de F sur les débarquements"
Validé. + renommer "group min" et "group max" en "Fbar group min" et "Fbar group max"
Changer la methode fishingMortalityPerGroup comme suit
if( ! *tickBox* cochée){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.*MATRIX_LANDING_PER_MET*);
}
- effectivement sortir le calcul de ces resultats de ComputeMonth()
*************************** Autre aspect, j'ai des pops saisonnières qui sont à 0 en janvier, leur F est donc tjs nul... - est ce utile de spécifier un mois auquel regarder l'abondance pour le calcul de F ou est ce une situation trop rare ? (Steph ?)
réponse oui et ça peut servir ailleurs ( ex export de la biomasse uniquement a ce mois)
si c est utile : - ajouter un param "mois de considération de l abondance pour le calcul de F" (!), surnommé "*mcacf*"
Également dans l onglet structure de pop
- modifier la methode fishingMortalityPerGroup : abundancePopJan = resManager.getMatrix(new TimeStep(12*step.getYear()+*mcacf*), pop, ResultName.MATRIX_ABUNDANCE_BEGIN_MONTH); //6 juillet pour squid
Sinon peut etre tester si N == 0, si oui boucler sur les pas de temps de l année jusqu a trouver un N!=0 ?
*************************** Une autre : dans ObjectiveFunction f = new ObjectiveFunctionBaranov(Cgroup, Mgroup, NgroupJan); Fgroup = MinimisationUtil.fmin(0.0,2.0,1.0e-10, f); // step ?? On limite la recherche de f entre 0 et 2.0 c'est un peu restrictif mais efficace. Il serait bon de tester si Fgroup ==2 ou 1.999 et si c'est le cas de relancer la recherche entre 0 et 10 par exemple car il peut arriver que F depasse 2.
Validé aussi
************************** Juste une remarque si je ne m'abuse if y a redondance de test l 328 du defaultSimulateur
ligne 265 // discard and landing must be done after post action rules // only if there are one or more strategy if (siMatrix.getStrategies(step).size() > 0) { puis ligne 328 ds ce if if (siMatrix.getStrategies(step).size() > 0) {
Le 12/06/2015 12:02, Sigrid Lehuta a écrit :
- ajouter une tickBox dans l onglet structure de pop a coté de "group min" et "group max" disant "calcul de F sur les débarquements"
Validé. + renommer "group min" et "group max" en "Fbar group min" et "Fbar group max"
"F" est plus parlant que "mortalité par pêche" ? Que représente Fbar par rapport à F ?
Changer la methode fishingMortalityPerGroup comme suit
if( ! *tickBox* cochée){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.*MATRIX_LANDING_PER_MET*); }
- effectivement sortir le calcul de ces resultats de ComputeMonth()
*************************** Autre aspect, j'ai des pops saisonnières qui sont à 0 en janvier, leur F est donc tjs nul... - est ce utile de spécifier un mois auquel regarder l'abondance pour le calcul de F ou est ce une situation trop rare ? (Steph ?)
réponse oui et ça peut servir ailleurs ( ex export de la biomasse uniquement a ce mois)
si c est utile : - ajouter un param "mois de considération de l abondance pour le calcul de F" (!), surnommé "*mcacf*"
Également dans l onglet structure de pop
Donc, pour être sur, c'est un champ sur la population de type "Month" (mois) qui représente le mois de chaque année à prendre en compte pour calculer seulement F ? Ce mois n'a pas une notion autre pas seulement spécifique à F ? comme dans votre exemple : "ex export de la biomasse uniquement a ce mois". Ce qui me gène un peu, c'est que l'on rajoute ici dans une région générique, des champs spécifique au calcul d'un seul résultat : F Ce n'est pas gênant ?
- modifier la methode fishingMortalityPerGroup : abundancePopJan = resManager.getMatrix(new TimeStep(12*step.getYear()+*mcacf*), pop, ResultName.MATRIX_ABUNDANCE_BEGIN_MONTH); //6 juillet pour squid
Sinon peut etre tester si N == 0, si oui boucler sur les pas de temps de l année jusqu a trouver un N!=0 ?
*************************** Une autre : dans ObjectiveFunction f = new ObjectiveFunctionBaranov(Cgroup, Mgroup, NgroupJan); Fgroup = MinimisationUtil.fmin(0.0,2.0,1.0e-10, f); // step ?? On limite la recherche de f entre 0 et 2.0 c'est un peu restrictif mais efficace. Il serait bon de tester si Fgroup ==2 ou 1.999 et si c'est le cas de relancer la recherche entre 0 et 10 par exemple car il peut arriver que F depasse 2.
Validé aussi
Tu peux m'expliquer ce que ce code est sensé calculer entre 0 et 2 ? Et pourquoi si ça atteint 2, on recommence entre 0 et 10 ? Peut-on trouver un calcul direct entre 0 et 10 ?
************************** Juste une remarque si je ne m'abuse if y a redondance de test l 328 du defaultSimulateur
ligne 265 // discard and landing must be done after post action rules // only if there are one or more strategy if (siMatrix.getStrategies(step).size() > 0) { puis ligne 328 ds ce if if (siMatrix.getStrategies(step).size() > 0) {
Oui, c'est vrai, je l'ai supprimé. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
hello Le 12 juin 2015 17:13, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 12/06/2015 12:02, Sigrid Lehuta a écrit :
- ajouter une tickBox dans l onglet structure de pop a coté de
"group min"
et "group max" disant "calcul de F sur les débarquements"
Validé. + renommer "group min" et "group max" en "Fbar group min" et "Fbar group
max" "F" est plus parlant que "mortalité par pêche" ?
non mais c'est plus court et ...
Que représente Fbar par rapport à F ?
Fbar c'est la moyenne de F par groupe sur les groupes compris entre group min et group max uniquement. C'est du jargon d'évaluation de stock, pas sûr qu'on puisse l'appeler autrement.
Changer la methode fishingMortalityPerGroup comme suit
if( ! *tickBox* cochée){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop,
ResultName.*MATRIX_LANDING_PER_MET*);
}
- effectivement sortir le calcul de ces resultats de ComputeMonth()
*************************** Autre aspect, j'ai des pops saisonnières qui sont à 0 en janvier,
leur F
est donc tjs nul... - est ce utile de spécifier un mois auquel regarder l'abondance pour
le
calcul de F ou est ce une situation trop rare ? (Steph ?)
réponse oui et ça peut servir ailleurs ( ex export de la biomasse
uniquement a
ce mois)
si c est utile : - ajouter un param "mois de considération de l abondance pour le calcul de F" (!), surnommé "*mcacf*"
Également dans l onglet structure de pop Donc, pour être sur, c'est un champ sur la population de type "Month" (mois) qui représente le mois de chaque année à prendre en compte pour calculer seulement F ?
C'est ça.
Ce mois n'a pas une notion autre pas seulement spécifique à F ?
Pas vraiment, c'est un paramètre pragmatique. Les modèles classiques ne sont pas saisonniers, donc la biomass n'est jamais nulle... En fait, on est un peu en train de créer dans l'onglet "structure de population" une zone liée aux paramètres liés à l'évaluation du stock et à sa gestion (F captures/landings, group min/max, mois abondance) .
comme dans votre exemple : "ex export de la biomasse uniquement a ce mois".
Il a un sens car c'est le mois d'entrée dans la pêcherie pour les espèces saisonnières on pourrait l'appeler comme ça d'ailleurs.
Ce qui me gène un peu, c'est que l'on rajoute ici dans une région générique, des champs spécifique au calcul d'un seul résultat : F Ce n'est pas gênant ?
- modifier la methode fishingMortalityPerGroup : abundancePopJan = resManager.getMatrix(new TimeStep(12*step.getYear()+*mcacf*), pop, ResultName.MATRIX_ABUNDANCE_BEGIN_MONTH); //6 juillet pour squid
Sinon peut etre tester si N == 0, si oui boucler sur les pas de
temps de l
année jusqu a trouver un N!=0 ?
*************************** Une autre : dans ObjectiveFunction f = new
ObjectiveFunctionBaranov(Cgroup,
Mgroup, NgroupJan); Fgroup = MinimisationUtil.fmin(0.0,2.0,1.0e-10, f);
// step ??
On limite la recherche de f entre 0 et 2.0 c'est un peu restrictif
mais
efficace. Il serait bon de tester si Fgroup ==2 ou 1.999 et si c'est le cas de relancer la recherche entre 0 et 10 par exemple car il peut arriver
que F
depasse 2.
Validé aussi
Tu peux m'expliquer ce que ce code est sensé calculer entre 0 et 2 ? Et pourquoi si ça atteint 2, on recommence entre 0 et 10 ?
En fait c'est une optimisation il cherche la valeur de x qui minimise une fonction f(x). On cherche d'abord le x min entre 0 et 2 car c est là qu il a le plus de chance d'être, comme ça on trouve vite le résultat. mais il se
Cf au dessus, on ajoute des paramètres liés à la gestion du stock. peux que ds des cas rares x min soit > 2. dans le cas l'algo va renvoyer 1.99 ou 2, la plus haute valeur qu il a pu tester. mais ca veut dire qu en allant plus loin on aurait trouver des f(x) encore plus petits. donc si il renvoit 2, on lui fait chercher entre 2 et 10, et il dira: en fait le min de f(x) est atteint pour x=3. On aurait pu chercher directement entre 0 et 10 mais ça risque d'être plus lent alors que les cas ou x min >2 sont rares.
Peut-on trouver un calcul direct entre 0 et 10 ?
************************** Juste une remarque si je ne m'abuse if y a redondance de test l 328 du defaultSimulateur
ligne 265 // discard and landing must be done after post action rules // only if there are one or more strategy if (siMatrix.getStrategies(step).size() > 0) { puis ligne 328 ds ce if if (siMatrix.getStrategies(step).size() > 0) {
Oui, c'est vrai, je l'ai supprimé.
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
_______________________________________________ Isis-fish-devel mailing list Isis-fish-devel@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-devel
On 12/06/2015 17:13, Eric Chatellier wrote:
Le 12/06/2015 12:02, Sigrid Lehuta a écrit :
- ajouter une tickBox dans l onglet structure de pop a coté de "group min" et "group max" disant "calcul de F sur les débarquements"
Validé. + renommer "group min" et "group max" en "Fbar group min" et "Fbar group max"
J'ai remplacé par "Fbar group min" et "Fbar group max" dans l'interface graphique.
Dans l'API Isis, c'est toujours "groupMin", "groupMax". Ca ne veux pas dire grand chose pour l'API, faut-il les renommer ? (ca implique une migration des scripts, mais normalement, seul SiMatrix utilise ce champs).
Changer la methode fishingMortalityPerGroup comme suit
if( ! *tickBox* cochée){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.*MATRIX_LANDING_PER_MET*); }
- effectivement sortir le calcul de ces resultats de ComputeMonth()
*************************** Autre aspect, j'ai des pops saisonnières qui sont à 0 en janvier, leur F est donc tjs nul... - est ce utile de spécifier un mois auquel regarder l'abondance pour le calcul de F ou est ce une situation trop rare ? (Steph ?)
réponse oui et ça peut servir ailleurs ( ex export de la biomasse uniquement a ce mois)
si c est utile : - ajouter un param "mois de considération de l abondance pour le calcul de F" (!), surnommé "*mcacf*"
Ca va comme nom de champ "representativeAbundanceMonth" ? Faut-il que cela soit specifique à F ? ('mcacf', c'est très francais).
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Le 22 juin 2015 10:35, Eric Chatellier <chatellier@codelutin.com> a écrit :
On 12/06/2015 17:13, Eric Chatellier wrote:
Le 12/06/2015 12:02, Sigrid Lehuta a écrit :
- ajouter une tickBox dans l onglet structure de pop a coté de
"group min"
et "group max" disant "calcul de F sur les débarquements"
Validé. + renommer "group min" et "group max" en "Fbar group min" et "Fbar
group max" J'ai remplacé par "Fbar group min" et "Fbar group max" dans l'interface graphique.
merci
Dans l'API Isis, c'est toujours "groupMin", "groupMax". Ca ne veux pas dire grand chose pour l'API, faut-il les renommer ? (ca implique une migration des scripts, mais normalement, seul SiMatrix utilise ce champs).
Je ne mesure pas la complexité de migrer. Si c'est trop compliqué ça ne me parait pas génant de garder groupMin ds l'API rien d'autre ne s'appelle comme ça.
Changer la methode fishingMortalityPerGroup comme suit
if( ! *tickBox* cochée){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop,
ResultName.*MATRIX_LANDING_PER_MET*);
}
- effectivement sortir le calcul de ces resultats de ComputeMonth()
*************************** Autre aspect, j'ai des pops saisonnières qui sont à 0 en janvier,
leur F
est donc tjs nul... - est ce utile de spécifier un mois auquel regarder l'abondance
pour le
calcul de F ou est ce une situation trop rare ? (Steph ?)
réponse oui et ça peut servir ailleurs ( ex export de la biomasse
uniquement a
ce mois)
si c est utile : - ajouter un param "mois de considération de l abondance pour le calcul de F" (!), surnommé "*mcacf*" Ca va comme nom de champ "representativeAbundanceMonth" ?
pas mal, peut-être "abundanceReferenceMonth" plutot comme tjs il faut l ajouter au manuel, je vais essayer de mettre a jour le site Faut-il que cela soit specifique à F ?
que veux tu dire ? je dirais non...
('mcacf', c'est très francais).
oui c etait une blague ;-)
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
_______________________________________________ Isis-fish-devel mailing list Isis-fish-devel@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-devel
On 09/06/2015 16:12, Sigrid Lehuta wrote:
if( ! *tickBox* cochée){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.*MATRIX_LANDING_PER_MET*); }
C'est confirmé aussi cette "tickBox" ? Quelle est son intitulé (fr/en) et à quel concept fait-elle référence ?
- effectivement sortir le calcul de ces resultats de ComputeMonth()
Ce n'est pas possible non ? computeMonth est relatif à une population, donc si on le seul, on perd le contexte de la population. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Dans l'interface Section "Paramètres du modèle d'évaluation de stock : " - "Fbar group min" / "Fbar group max" - tick box : "F calculé sur les débarquements (rejets ignorés)" En anglais: "Parameters of the assessment model: " - "Fbar group min" / "Fbar group max" - tick box : "F computed on landings (discards ignored)" Le 22 juin 2015 14:22, Eric Chatellier <chatellier@codelutin.com> a écrit :
On 09/06/2015 16:12, Sigrid Lehuta wrote:
if( ! *tickBox* cochée){ MatrixND catchPerStrategyTemp = resManager.getMatrix(loopstep, pop, ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP); }else { catchPerStrategyTemp =
resManager.getMatrix(loopstep,
pop, ResultName.*MATRIX_LANDING_PER_MET*); } C'est confirmé aussi cette "tickBox" ? Quelle est son intitulé (fr/en) et à quel concept fait-elle référence ?
- effectivement sortir le calcul de ces resultats de ComputeMonth()
Ce n'est pas possible non ? computeMonth est relatif à une population, donc si on le seul, on perd le contexte de la population.
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
_______________________________________________ Isis-fish-devel mailing list Isis-fish-devel@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-devel
participants (2)
-
Eric Chatellier -
Sigrid Lehuta