Modification en cours concernant le recrutement
Bonjour, Voici la liste des modifications à apporter pour finaliser la version 4.4. Equation de recrutement ----------------------- L'idée principale est de simplifier l'utilisation des données en utilisant l'indice du mois dans la saison (donc 0, 1...) et non un calcul compliqué en utilisant (step, etalement, et gap). Modification: * Remplacer la map ReproductionDataMap en RecruitementInputMap * dans cette map, utiliser les indices de la saison de *reproduction* Exemple, pour une saison de reproduction Janvier/Février, un gap de 6 mois, et un etalement de 3 mois, l'equation de reproduction sera appelée 4 fois (nombre de mois reproduction + nombre de mois d'étalement - 1). les indices seront les suivants: - Juillet (0: données correspondant à l'étalement de Janvier) - Aout (0: données correspondant à l'étalement de Janvier, 1: données correspondant à l'étalement de Février) - Septembre (0: données correspondant à l'étalement de Janvier, 1: données correspondant à l'étalement de Février) - Octobre (0: pas de données, 1: données correspondant à l'étalement de Février) On remarque qu'au premier appel et au dernier appel, les données ne sont pas complete. Il n'y a pas encore (ou plus) d'étalement de la reproduction sur le mois courant. RecruitementData ---------------- La solution choisie a été de TOUJOURS disposer des données (biomasse, abondance, reproduction) correspondant au mois de reproduction, et d'une nouvelle donnée "recruitementContribution" qui n'est valable que pendant la période de recrutement. Si la saison de reproduction a deux mois, l’équation de recrutement sera appeler avec deux valeurs d'indice (0 et 1), mais parmis ces deux valeurs, recruitementContribution ne sera pas toujours disponible. Il a été décider d'utiliser "null" pour "recruitementContribution" dans le cas où l’équation est appelée hors période de recrutement. Appel de l'equation ------------------- L'equation ne sera pas appélée si aucun mois ne porte sur une période de recrutement, et donc que la map RecruitementInputMap ne contient que des valeurs ou "recruitementContribution" est null. Parametres ---------- Liste des parametres de l'equation de recrutement: step pop recruitementInputs result Liste des parametres de RecruitementInput: biomass aboundance, recruitementContribution Exemple (1 seul mois de repro) ------------------------------ double k = 120000; RecruitmentInput r0 = recruitmentInputs.get(0); MatrixND biomass = r0.getBiomass(); double allBiomass = biomass.sumAll(); Double p = r0.getRecruitmentContibution(); if (p != null) { double res = k * allBiomasss * p; for (Zone z : pop.getRecruitmentZone()) { result.setValue(pop.getPopulationGroup().get(0), res); } } return 0; Exports ------- Historiquement, les exports fonctionnaient à la fin de la simulation. Mais si les résultats n'étaient pas disponibles à ce moment là, ce n'est plus possible. La version 4.4 ajoute la possibilité de faire les exports par "pas de temps", et donc de fonctionner dans tous les cas. Pour la version 4.4: réecrire les export par pas de temps autant que possible. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Le 22/09/2015 18:46, Eric Chatellier a écrit :
Appel de l'equation ------------------- L'equation ne sera pas appélée si aucun mois ne porte sur une période de recrutement, et donc que la map RecruitementInputMap ne contient que des valeurs ou "recruitementContribution" est null.
Il me semble que c'est faux ça non ? Actuellement l'equation est appelée à tous les pas de temps et l'equation peux ou pas faire des choses. Cela permet à l'utilisateur de faire des choses particulières si le veux.
Exemple (1 seul mois de repro) ------------------------------ double k = 120000; RecruitmentInput r0 = recruitmentInputs.get(0); MatrixND biomass = r0.getBiomass(); double allBiomass = biomass.sumAll(); Double p = r0.getRecruitmentContibution(); if (p != null) { double res = k * allBiomasss * p; for (Zone z : pop.getRecruitmentZone()) { result.setValue(pop.getPopulationGroup().get(0), res); } } return 0;
Si oui, que doit contenir la map recruitmentInputs hors période de recrutement ? Si elle est vide dans ce cas, la ligne "recruitmentInputs.get(0)" ne fonctionnera pas. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Le 25 septembre 2015 15:11, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 22/09/2015 18:46, Eric Chatellier a écrit :
Appel de l'equation ------------------- L'equation ne sera pas appélée si aucun mois ne porte sur une période de recrutement, et donc que la map RecruitementInputMap ne contient que des
valeurs
ou "recruitementContribution" est null. Il me semble que c'est faux ça non ?
Actuellement l'equation est appelée à tous les pas de temps et l'equation peux ou pas faire des choses. Cela permet à l'utilisateur de faire des choses particulières si le veux.
Voici ce que j'avais noté: l'équation n'est appelée QUE aux pas de temps de recrutement (=saison de repro + delta + etalement). On confirme.
Exemple (1 seul mois de repro) ------------------------------ double k = 120000; RecruitmentInput r0 = recruitmentInputs.get(0); MatrixND biomass = r0.getBiomass(); double allBiomass = biomass.sumAll(); Double p = r0.getRecruitmentContibution(); if (p != null) { double res = k * allBiomasss * p; for (Zone z : pop.getRecruitmentZone()) { result.setValue(pop.getPopulationGroup().get(0), res); } } return 0;
Si oui, que doit contenir la map recruitmentInputs hors période de recrutement ?
rien
Si elle est vide dans ce cas, la ligne "recruitmentInputs.get(0)" ne fonctionnera pas.
ca n'est pas grave car l'equation de recrutement ne sera pas appelée
--
É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
ps voici mes notes si ca t'aide Le 25 septembre 2015 16:38, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
Le 25 septembre 2015 15:11, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 22/09/2015 18:46, Eric Chatellier a écrit :
Appel de l'equation ------------------- L'equation ne sera pas appélée si aucun mois ne porte sur une période de recrutement, et donc que la map RecruitementInputMap ne contient que
des valeurs
ou "recruitementContribution" est null. Il me semble que c'est faux ça non ?
Actuellement l'equation est appelée à tous les pas de temps et l'equation peux ou pas faire des choses. Cela permet à l'utilisateur de faire des choses particulières si le veux.
Voici ce que j'avais noté: l'équation n'est appelée QUE aux pas de temps de recrutement (=saison de repro + delta + etalement). On confirme.
Exemple (1 seul mois de repro) ------------------------------ double k = 120000; RecruitmentInput r0 = recruitmentInputs.get(0); MatrixND biomass = r0.getBiomass(); double allBiomass = biomass.sumAll(); Double p = r0.getRecruitmentContibution(); if (p != null) { double res = k * allBiomasss * p; for (Zone z : pop.getRecruitmentZone()) { result.setValue(pop.getPopulationGroup().get(0), res); } } return 0;
Si oui, que doit contenir la map recruitmentInputs hors période de recrutement ?
rien
Si elle est vide dans ce cas, la ligne "recruitmentInputs.get(0)" ne fonctionnera pas.
ca n'est pas grave car l'equation de recrutement ne sera pas appelée
--
É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
Bonjour, Voici une version qui fonctionne assez bien et testée sur plusieurs base: http://forge.codelutin.com/attachments/download/3422/isis-fish-4.4.0.0-r4300...
Voici ce que j'avais noté: l'équation n'est appelée QUE aux pas de temps de recrutement (=saison de repro + delta + etalement).
J'ai testé une base de données qui avait plusieurs saison de reproduction (4 saison de un mois chacune) et toute avec la reproduction sélectionnée. Que faut-il faire dans ce cas ? - considérer les 4 saison comme une seule ? - considérer les 4 saisons différente et faire 4 recrutement différent ? Est-il possible qu'il y ai deux saisons de reproduction non continue dans une region ? -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Merci, je teste la nouvelle version des que possible. en attendant bien vu pour les multiples saisons de repro. oui ce sont des choses qui arrivent chez la sardine ou le harreng par exemple (c est d'ailleurs rarement continu plutot une ponte de printemps et une d'automne)... Le cas continu que tu as deniché, doit correspondre a une repro toute l'année mais des saisons crées pour les migrations ou la capturabilité. => Pour etre generique je dirais bien considerer les 4 ou 2 saisons différentes et faire autant de recrutements différents. le lien saison de ponte-saison de recrutement est déterminé par le delta. C'est possible ? Steph, tu valides ? Le 29 septembre 2015 17:53, Eric Chatellier <chatellier@codelutin.com> a écrit :
Bonjour,
Voici une version qui fonctionne assez bien et testée sur plusieurs base:
http://forge.codelutin.com/attachments/download/3422/isis-fish-4.4.0.0-r4300...
Voici ce que j'avais noté: l'équation n'est appelée QUE aux pas de temps
de
recrutement (=saison de repro + delta + etalement).
J'ai testé une base de données qui avait plusieurs saison de reproduction (4 saison de un mois chacune) et toute avec la reproduction sélectionnée.
Que faut-il faire dans ce cas ? - considérer les 4 saison comme une seule ? - considérer les 4 saisons différente et faire 4 recrutement différent ?
Est-il possible qu'il y ai deux saisons de reproduction non continue dans une region ?
-- É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
Salut Eric, je teste enfin - getRecuitementContribution <http://www.isis-fish.org/apidocs/fr/ifremer/isisfish/types/RecruitmentInput.html#getRecuitementContribution--> () il y a une petite coquille - j'ai sélectionné ds les paramètres de simu/résultats, AbundanceBeginMonth mais je ne l ai pas ds l interface de résultats (biomassBeginMonth fonctionne en revanche...) - ca marche pour notre exemple de relation stock recruitment (avec un seul mois de repro et utilisant la biomasse) - je galère plus avec l'exemple plus compliqué des dérives d'oeufs. On a 2 mois de repro, forcée a 100000 oeufs pour toutes zones, tous les mois. et l etalement se fait sur 3 mois (0.5,0.3,0.2). on recoupère repro. La mortalité est nulle, je m attends donc a voir 50000,80000,50000 et 20000 oeufs arriver chaque mois de recrutement pour une zone donnée pour les années sans modif. je te remets le code de recrutement: /// exemple oeufs 2 mois de repro // on veut appliquer une serie temporelle de M MatrixND zrzr = pop.getMappingZoneReproZoneRecru(); int y = context.getSimulationControl().getStep().getYear(); if(y%2 == 1){ zrzr = zrzr.divs(2); } MatrixHelper.fill(result,0); double nbM = recruitmentInputs.size(); double res = 0; PopulationGroup g0 = pop.getPopulationGroup().get(0); for(int m=0; m<nbM; m++){ Double p = recruitmentInputs.get(m).getRecuitementContribution(); if(p != null){ MatrixND oeufsm = recruitmentInputs.get(m).getRepro().mults(p); zrzr.mult(oeufsm); for(MatrixIterator it = oeufsm.iterator(); it.hasNext();) { it.next(); result.setValue(g0,it.getSemanticsCoordinates()[0], it.getValue()+result.getValue(g0,it.getSemanticsCoordinates()[0])); //System.out.println("Displayoeufs "+m+" "+p+" "+it.getValue()); } } } return 0; Avec ça je n'ai que des zéros. en supprimant "zrzr.mult(oeufsm);" j ai des chiffres mais pas ceux auxquels je m'attends. Les valeurs de p sont bonnes. mois1 de recruitment m=0 : 50000 OK m=1 : rien OK mois2 m=0 : 0 !, m=1 : 50000 OK mois3 m=0 : 0 ! , m=1 : 15000 ??!! mois4 m=0 : rien OK, m=1 : 3000 ! ca ne correspond à rien de compréhensible. confirmation en supprimant la multiplication par p: mois m=0 m=1 1 100000 - 2 0 100000 3 0 100000 4 - 100000 Tu peux regarder ça ? Merci Le 1 octobre 2015 18:59, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
Merci, je teste la nouvelle version des que possible.
en attendant bien vu pour les multiples saisons de repro. oui ce sont des choses qui arrivent chez la sardine ou le harreng par exemple (c est d'ailleurs rarement continu plutot une ponte de printemps et une d'automne)... Le cas continu que tu as deniché, doit correspondre a une repro toute l'année mais des saisons crées pour les migrations ou la capturabilité.
=> Pour etre generique je dirais bien considerer les 4 ou 2 saisons différentes et faire autant de recrutements différents. le lien saison de ponte-saison de recrutement est déterminé par le delta.
C'est possible ? Steph, tu valides ?
Le 29 septembre 2015 17:53, Eric Chatellier <chatellier@codelutin.com> a écrit :
Bonjour,
Voici une version qui fonctionne assez bien et testée sur plusieurs base:
http://forge.codelutin.com/attachments/download/3422/isis-fish-4.4.0.0-r4300...
Voici ce que j'avais noté: l'équation n'est appelée QUE aux pas de
temps de
recrutement (=saison de repro + delta + etalement).
J'ai testé une base de données qui avait plusieurs saison de reproduction (4 saison de un mois chacune) et toute avec la reproduction sélectionnée.
Que faut-il faire dans ce cas ? - considérer les 4 saison comme une seule ? - considérer les 4 saisons différente et faire 4 recrutement différent ?
Est-il possible qu'il y ai deux saisons de reproduction non continue dans une region ?
-- É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
Le 15/10/2015 09:45, Sigrid Lehuta a écrit :
Salut Eric,
je teste enfin - |getRecuitementContribution <http://www.isis-fish.org/apidocs/fr/ifremer/isisfish/types/RecruitmentInput.html#getRecuitementContribution-->() | |il y a une petite coquille | |Ok, c'est corrigé.
|
| | |- j'ai sélectionné ds les paramètres de simu/résultats, AbundanceBeginMonth mais je ne l ai pas ds l interface de résultats (biomassBeginMonth fonctionne en revanche...) | |Ok. Il y avait effectivement un problème avec ||AbundanceBeginMonth.
|
|- ca marche pour notre exemple de relation stock recruitment (avec un seul mois de repro et utilisant la biomasse)
| |OK,
|
|- je galère plus avec l'exemple plus compliqué des dérives d'oeufs. On a 2 mois de repro, forcée a 100000 oeufs pour toutes zones, tous les mois. et l etalement se fait sur 3 mois (0.5,0.3,0.2). on recoupère repro. La mortalité est nulle, je m attends donc a voir 50000,80000,50000 et 20000 oeufs arriver chaque mois de recrutement pour une zone donnée pour les années sans modif. | |je te remets le code de recrutement: /// exemple oeufs 2 mois de repro // on veut appliquer une serie temporelle de M MatrixND zrzr = pop.getMappingZoneReproZoneRecru(); int y = context.getSimulationControl().getStep().getYear(); if(y%2 == 1){ zrzr = zrzr.divs(2); } MatrixHelper.fill(result,0);
double nbM = recruitmentInputs.size(); double res = 0; PopulationGroup g0 = pop.getPopulationGroup().get(0);
for(int m=0; m<nbM; m++){ Double p = recruitmentInputs.get(m).getRecuitementContribution(); if(p != null){ MatrixND oeufsm = recruitmentInputs.get(m).getRepro().mults(p); zrzr.mult(oeufsm);
for(MatrixIterator it = oeufsm.iterator(); it.hasNext();) { it.next(); result.setValue(g0,it.getSemanticsCoordinates()[0], it.getValue()+result.getValue(g0,it.getSemanticsCoordinates()[0])); //System.out.println("Displayoeufs "+m+" "+p+" "+it.getValue()); } } } return 0;
| |Avec ça je n'ai que des zéros. | |en supprimant "zrzr.mult(oeufsm);" j ai des chiffres mais pas ceux auxquels je m'attends. Les valeurs de p sont bonnes. | |mois1 de recruitment m=0 : 50000 OK m=1 : rien OK | |mois2 m=0 : 0 !, m=1 : 50000 OK | |mois3 m=0 : 0 ! , m=1 : 15000 ??!! | |mois4 m=0 : rien OK, m=1 : 3000 ! | |ca ne correspond à rien de compréhensible. | |Qu'affiche tu ici ? la somme totale de la matrice de repro ?
Tu peux m'envoyer la simulation où tu as tester cela stp ? |
| | |confirmation en supprimant la multiplication par p: | |mois m=0 m=1 1 100000 - | |2 0 100000 3 0 100000 4 - 100000
|
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
*Voici la commande d'affichage System.out.println("Displayoeufs "+m+" "+p+" "+it.getValue()); c est donc la valeur de getRepro et la simu *Concernant AbundanceBeginMonth, faut il tester tous les resultats ou tu es sur que tout le reste marche ? Merci Le 15 octobre 2015 11:25, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 15/10/2015 09:45, Sigrid Lehuta a écrit :
Salut Eric,
je teste enfin - |getRecuitementContribution < http://www.isis-fish.org/apidocs/fr/ifremer/isisfish/types/RecruitmentInput.... () | |il y a une petite coquille | |Ok, c'est corrigé.
|
| | |- j'ai sélectionné ds les paramètres de simu/résultats, AbundanceBeginMonth mais je ne l ai pas ds l interface de résultats (biomassBeginMonth fonctionne en revanche...) | |Ok. Il y avait effectivement un problème avec ||AbundanceBeginMonth.
|
|- ca marche pour notre exemple de relation stock recruitment (avec un seul mois de repro et utilisant la biomasse)
| |OK,
|
|- je galère plus avec l'exemple plus compliqué des dérives d'oeufs. On a 2 mois de repro, forcée a 100000 oeufs pour toutes zones, tous les mois. et l etalement se fait sur 3 mois (0.5,0.3,0.2). on recoupère repro. La mortalité est nulle, je m attends donc a voir 50000,80000,50000 et 20000 oeufs arriver chaque mois de recrutement pour une zone donnée pour les années sans modif. | |je te remets le code de recrutement: /// exemple oeufs 2 mois de repro // on veut appliquer une serie temporelle de M MatrixND zrzr = pop.getMappingZoneReproZoneRecru(); int y = context.getSimulationControl().getStep().getYear(); if(y%2 == 1){ zrzr = zrzr.divs(2); } MatrixHelper.fill(result,0);
double nbM = recruitmentInputs.size(); double res = 0; PopulationGroup g0 = pop.getPopulationGroup().get(0);
for(int m=0; m<nbM; m++){ Double p = recruitmentInputs.get(m).getRecuitementContribution(); if(p != null){ MatrixND oeufsm = recruitmentInputs.get(m).getRepro().mults(p); zrzr.mult(oeufsm);
for(MatrixIterator it = oeufsm.iterator(); it.hasNext();) { it.next(); result.setValue(g0,it.getSemanticsCoordinates()[0], it.getValue()+result.getValue(g0,it.getSemanticsCoordinates()[0])); //System.out.println("Displayoeufs "+m+" "+p+" "+it.getValue()); } } } return 0;
| |Avec ça je n'ai que des zéros. | |en supprimant "zrzr.mult(oeufsm);" j ai des chiffres mais pas ceux auxquels je m'attends. Les valeurs de p sont bonnes. | |mois1 de recruitment m=0 : 50000 OK m=1 : rien OK | |mois2 m=0 : 0 !, m=1 : 50000 OK | |mois3 m=0 : 0 ! , m=1 : 15000 ??!! | |mois4 m=0 : rien OK, m=1 : 3000 ! | |ca ne correspond à rien de compréhensible. | |Qu'affiche tu ici ? la somme totale de la matrice de repro ?
Tu peux m'envoyer la simulation où tu as tester cela stp ? |
| | |confirmation en supprimant la multiplication par p: | |mois m=0 m=1 1 100000 - | |2 0 100000 3 0 100000 4 - 100000
|
-- É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
Le 16/10/2015 09:49, Sigrid Lehuta a écrit :
*Voici la commande d'affichage System.out.println("Displayoeufs "+m+" "+p+" "+it.getValue()); c est donc la valeur de getRepro
et la simu
Pour info, l'autre jour au téléphone, on a conclu que pour ta région, une période de recrutement Janvier/Févier, et étalement de 3 mois et un gap de 12 mois. La conclusion était que tu devais recevoir les données (repro) dans cet ordre: - Janvier - (rien) - Février - Janvier - Février - Janvier - (rien) - Février Ce que je ne comprend pas (niveau halieutique) c'est si la reproduction de Janvier s'étale de Janvier à Mars de l'année suivante et Févier de Février à Avril de l'année suivante, pourquoi l'ordre des mois s'inverse au milieu ? Pourquoi n'est-ce pas simplement ? - Janvier - (rien) - Janvier - Février - Janvier - Février - (rien) - Février -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
ben oui c'est : - Janvier - (rien) - Janvier - Février - Janvier - Février - (rien) - Février je ne me rappelais pas t'avoir dis l inverse sorry. Le 21 octobre 2015 11:38, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 16/10/2015 09:49, Sigrid Lehuta a écrit :
*Voici la commande d'affichage System.out.println("Displayoeufs "+m+" "+p+" "+it.getValue()); c est donc la valeur de getRepro
et la simu
Pour info, l'autre jour au téléphone, on a conclu que pour ta région, une période de recrutement Janvier/Févier, et étalement de 3 mois et un gap de 12 mois.
La conclusion était que tu devais recevoir les données (repro) dans cet ordre: - Janvier - (rien) - Février - Janvier - Février - Janvier - (rien) - Février
Ce que je ne comprend pas (niveau halieutique) c'est si la reproduction de Janvier s'étale de Janvier à Mars de l'année suivante et Févier de Février à Avril de l'année suivante, pourquoi l'ordre des mois s'inverse au milieu ?
Pourquoi n'est-ce pas simplement ? - Janvier - (rien) - Janvier - Février - Janvier - Février - (rien) - Février
-- É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
Le 21/10/2015 14:34, Sigrid Lehuta a écrit :
ben oui c'est : - Janvier - (rien) - Janvier - Février - Janvier - Février - (rien) - Février
je ne me rappelais pas t'avoir dis l inverse sorry. C'est pas grave, je pense que j'ai compris l'inverse, même si tu ne l'as pas dis :)
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Le 21/10/2015 15:36, Eric Chatellier a écrit :
C'est pas grave, je pense que j'ai compris l'inverse, même si tu ne l'as pas dis :)
C'est corrigé dans cette version : http://forge.codelutin.com/attachments/download/3444/isis-fish-4.4.0.0-r4306... -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Rectificatif, je crois que le recrutement par défaut ne fonctionne plus. lorsque je mets seulement "return 0;" ds l equation de recrutement, je n'ai aucun recrus... tu peux regarder ? merci Le 21 octobre 2015 16:08, Eric Chatellier <chatellier@codelutin.com> a écrit :
C'est pas grave, je pense que j'ai compris l'inverse, même si tu ne l'as
Le 21/10/2015 15:36, Eric Chatellier a écrit : pas dis :)
C'est corrigé dans cette version :
http://forge.codelutin.com/attachments/download/3444/isis-fish-4.4.0.0-r4306...
-- É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
Y'a aussi un problème avec Foth. Si je remplis l equation de Foth, l equation de mortalité naturelle s'efface et inversement... Tu peux corriger ? Merci Le 27 octobre 2015 09:26, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
Rectificatif, je crois que le recrutement par défaut ne fonctionne plus. lorsque je mets seulement "return 0;" ds l equation de recrutement, je n'ai aucun recrus... tu peux regarder ? merci
Le 21 octobre 2015 16:08, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 21/10/2015 15:36, Eric Chatellier a écrit :
C'est pas grave, je pense que j'ai compris l'inverse, même si tu ne l'as pas dis :)
C'est corrigé dans cette version :
http://forge.codelutin.com/attachments/download/3444/isis-fish-4.4.0.0-r4306...
-- É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
Le 27/10/2015 09:43, Sigrid Lehuta a écrit :
Y'a aussi un problème avec Foth. Si je remplis l equation de Foth, l equation de mortalité naturelle s'efface et inversement... Ha... terrible erreur.
Je l'ai corrigé ici : http://forge.codelutin.com/attachments/download/3448/isis-fish-4.4.0.0-r4308... Par contre, il est possible que ta base où tu as eu l'erreur ne soit pas dans un état très cohérent et que le problème persiste. Il faudra peut etre que tu réimporte ta base depuis la 4.3. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
OK pour le bug mentionné. par contre, il y a un petit oubli pas évident pour le calcul de la mortalité par peche par groupe, il faut aussi remplacer getNaturalDeathRate par getTotalDeathRate. Merci Le 27 octobre 2015 11:42, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 27/10/2015 09:43, Sigrid Lehuta a écrit :
Y'a aussi un problème avec Foth. Si je remplis l equation de Foth, l equation de mortalité naturelle s'efface et inversement... Ha... terrible erreur.
Je l'ai corrigé ici :
http://forge.codelutin.com/attachments/download/3448/isis-fish-4.4.0.0-r4308... Par contre, il est possible que ta base où tu as eu l'erreur ne soit pas dans un état très cohérent et que le problème persiste. Il faudra peut etre que tu réimporte ta base depuis la 4.3.
-- É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
Le 27/10/2015 16:14, Sigrid Lehuta a écrit :
OK pour le bug mentionné. par contre, il y a un petit oubli pas évident pour le calcul de la mortalité par peche par groupe, il faut aussi remplacer getNaturalDeathRate par getTotalDeathRate. C'est un calcul par moyenne ici, ca ne se remplace pas de la même façon.
C'est bon si je somme les deux moyennes des matrices ? C'est ce qui est fait là : http://forge.codelutin.com/projects/isis-fish-data/repository/revisions/378/... -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
j'étais en train de tester, ça marche. Pour la moyenne, ça me va pour le moment, c'etait déjà l'approximation qu'on faisait quand on prenait la moyenne pour la matrice de mortalité naturelle (et dans ma base la mortalité n'est pas spatialisée pour le moment). Mais je vais y réflechir... je me demande si dans l'absolu faut pas faire une moyenne pondérée par l abondance dans chaque zone... pas sûr, je te dirai... A+ Le 27 octobre 2015 18:03, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 27/10/2015 16:14, Sigrid Lehuta a écrit :
OK pour le bug mentionné. par contre, il y a un petit oubli pas évident pour le calcul de la mortalité par peche par groupe, il faut aussi remplacer getNaturalDeathRate par getTotalDeathRate. C'est un calcul par moyenne ici, ca ne se remplace pas de la même façon.
C'est bon si je somme les deux moyennes des matrices ? C'est ce qui est fait là :
http://forge.codelutin.com/projects/isis-fish-data/repository/revisions/378/...
-- É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
Le 27/10/2015 09:26, Sigrid Lehuta a écrit :
Rectificatif, je crois que le recrutement par défaut ne fonctionne plus. lorsque je mets seulement "return 0;" ds l equation de recrutement, je n'ai aucun recrus... Je viens de tester, je n'ai pas ce problème.
L'equation de recrutement n'est pas appelée dans tous les cas, mais le recrutement calculé est toujours calculé comme avant. Même en testant avec "return 0;", j'ai bien des donneés dans les résultats. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
OK je crois avoir identifié le pb : est ce que cette commande appelee ds l equation de repro fonctionne tjs avec la nouvelle structure de resultats ? MatrixND Bavril = context.getResultManager().getMatrix(avril,pop,"matrixBiomass").copy().reduceDims(0); Le 27 octobre 2015 11:32, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 27/10/2015 09:26, Sigrid Lehuta a écrit :
Rectificatif, je crois que le recrutement par défaut ne fonctionne plus. lorsque je mets seulement "return 0;" ds l equation de recrutement, je n'ai aucun recrus... Je viens de tester, je n'ai pas ce problème.
L'equation de recrutement n'est pas appelée dans tous les cas, mais le recrutement calculé est toujours calculé comme avant.
Même en testant avec "return 0;", j'ai bien des donneés dans les résultats.
-- É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
Hello, Je commente dans le texte : Le 22 septembre 2015 18:46, Eric Chatellier <chatellier@codelutin.com> a écrit :
Bonjour,
Voici la liste des modifications à apporter pour finaliser la version 4.4.
Equation de recrutement -----------------------
L'idée principale est de simplifier l'utilisation des données en utilisant l'indice du mois dans la saison (donc 0, 1...) et non un calcul compliqué en utilisant (step, etalement, et gap).
Modification: * Remplacer la map ReproductionDataMap en RecruitementInputMap * dans cette map, utiliser les indices de la saison de *reproduction*
Exemple, pour une saison de reproduction Janvier/Février, un gap de 6 mois, et un etalement de 3 mois, l'equation de reproduction sera appelée 4 fois (nombre de mois reproduction + nombre de mois d'étalement - 1). les indices seront les suivants: - Juillet (0: données correspondant à l'étalement de Janvier) - Aout (0: données correspondant à l'étalement de Janvier, 1: données correspondant à l'étalement de Février) - Septembre (0: données correspondant à l'étalement de Janvier, 1: données correspondant à l'étalement de Février) - Octobre (0: pas de données, 1: données correspondant à l'étalement de Février)
On remarque qu'au premier appel et au dernier appel, les données ne sont pas complete. Il n'y a pas encore (ou plus) d'étalement de la reproduction sur le mois courant.
OK
RecruitementData ---------------- La solution choisie a été de TOUJOURS disposer des données (biomasse, abondance, reproduction) correspondant au mois de reproduction,
****je ne me rappelle pas ce que ça veut dire
et d'une nouvelle donnée "recruitementContribution" qui n'est valable que pendant la période de recrutement.
Si la saison de reproduction a deux mois, l’équation de recrutement sera appeler avec deux valeurs d'indice (0 et 1), mais parmis ces deux valeurs, recruitementContribution ne sera pas toujours disponible.
Il a été décider d'utiliser "null" pour "recruitementContribution" dans le cas où l’équation est appelée hors période de recrutement.
Appel de l'equation ------------------- L'equation ne sera pas appélée si aucun mois ne porte sur une période de recrutement, et donc que la map RecruitementInputMap ne contient que des valeurs ou "recruitementContribution" est null.
OK
Parametres ----------
Liste des parametres de l'equation de recrutement: step pop recruitementInputs result
Liste des parametres de RecruitementInput: biomass aboundance, recruitementContribution
et repro (le nb d oeufs) ? il faudrait qu il y soit aussi. la structure c'est : par mois de repro et zone repro
Exemple (1 seul mois de repro) ------------------------------ double k = 120000; RecruitmentInput r0 = recruitmentInputs.get(0); MatrixND biomass = r0.getBiomass(); double allBiomass = biomass.sumAll(); Double p = r0.getRecruitmentContibution(); if (p != null) { double res = k * allBiomasss * p; for (Zone z : pop.getRecruitmentZone()) { result.setValue(pop.getPopulationGroup().get(0), res); } } return 0;
Exports ------- Historiquement, les exports fonctionnaient à la fin de la simulation. Mais si les résultats n'étaient pas disponibles à ce moment là, ce n'est plus possible. La version 4.4 ajoute la possibilité de faire les exports par "pas de temps", et donc de fonctionner dans tous les cas.
Pour la version 4.4: réecrire les export par pas de temps autant que possible.
-- É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