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