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