[Isis-fish-users] Calcul du nombre d'oeufs produits - boucle sur les groupes

dpellet Dominique.Pelletier at ifremer.fr
Ven 20 Mar 10:44:26 CET 2020


Merci beaucoup Sigrid, c'est noté! 

Dominique 

Le 20-03-2020 10:34, BACH Adrian a écrit :

> Wow, merci beaucoup sigrid d'avoir pris le temps de détailler tout ça, ça m'aidera aussi pour tout le reste ! J'essaye de suite. 
> 
> A bientôt, 
> 
> Adrian 
> 
> De : slehuta <Sigrid.Lehuta at ifremer.fr> 
> Envoyé : jeudi 19 mars 2020 23:45
> À : isis-fish-users at list.isis-fish.org
> Cc : BACH Adrian <Adrian.BACH at seaboost.fr>
> Objet : Re: [Isis-fish-users] Calcul du nombre d'oeufs produits - boucle sur les groupes 
> 
> Bonsoir, 
> 
> merci tout va bien.  
> 
> C'est un bon début, c 'est vrai que cette equation est sioux...  
> 
> Si tu ouvres l editeur, en en tete tu vois tous les objets auxquels tu as accès dans l equation, en particulier N la matrice d abondance de la pop. Parfois cela aide a comprendre ce que l equation qoit renvoyer. Ici c'est particulierement pas simple (on travaille sur le manuel pour que cela soit mieux expliqué) mais cette equation doit remplir une matrice a 1 dimension (zones de reproduction) nommée result et ne retourne rien. Donc... 
> 
> On declare sexRatio 
> 
> double sexRatio = 0.5; 
> 
> Je ne sais pas si tu as besoin d'une fecondité par groupe si oui utilises le taux de reproduction dans l onglet trait de vie sinon 
> 
> double fecParGonade = 5000; 
> 
> On boucle donc sur les zones de reproduction puisqu il faut remplir une valeur par zone dans result 
> 
> for(Zone zr : zoneRepro){ 
> 
> on initialise prodOeufs 
> 
> double prodOeufs = 0; 
> 
> Comme tu l'as bien fait on boucle aussi sur les groupes, mais g est un objet PopulationGroup il n'est pas comparable à un entier 4. L'identifiant du groupe lui est un entier g.getId() est comparable à 4 (tu retrouveras ca dans l'API). 
> 
> for(PopulationGroup g : groups){ 
> 
> if (g.getId() < 4) { 
> 
> Ensuite si tu mets un return il va sortir de l'equation alors qu'il n a pas finit de boucler sur les groupes et les zones et qu'il n a pas rempli result ! Cette equation est traitre car elle n a pas besoin de returner qqch, elle remplit simplement result donc on attend la fin pour le return. 
> 
> Comme on ne fait rien si g.getId()<4 je ferais l'inverse 
> 
> if(g.getId()>3){  
> 
> La matrice d abondance est une matrice [groupe x zones] pour acceder a la valeur pour le groupe g dans la zone zr : N.getValue(g,zr); 
> 
> pour le poids on utilise g.getMeanWeight() 
> 
> double res = sexRatio * 2*fecParGonade *g.getMeanWeight()*N.getValue(g,zr); 
> 
> prodOeufs += res ; // equivalent à prodOeufs + res; 
> 
> } // fin du if 
> 
> } // fin de boucle groupe 
> 
> result.setValue(zr,prodOeufs); 
> 
> } // fin de boucle zone 
> 
> return 0; // pour qu'il sorte de l equation 
> 
> j espere que ca marche ! 
> 
> Le 2020-03-19 20:27, BACH Adrian a écrit :
> 
>> Bonsoir, 
>> 
>> J'espère que votre confinement se passe bien ! 
>> 
>> Une petite question java : je voudrais calculer le nombre d'œufs produits pendant la période de fraye d'un seul mois sur une seule zone de pop avec le calcul suivant (champ 'équation de reproduction' dans le panneau 'Reproductions') 
>> 
>> // nombre d'oeufs produits = somme sur les groupes 4 à 7 du calcul sexRatio*fecondite*[nombre de poissons dans le groupe]*[leur poids] 
>> 
>> Je suis complètement nouveau en java donc je ne sais trop comment obtenir les valeurs entre crochets, mais je pensais à un truc comme ça : 
>> 
>> //double prodOeufs = 0; 
>> 
>> // 
>> 
>> //for(PopulationGroup g : pop.getPopulationGroup().get()){ 
>> 
>> //    if (g < 4) { 
>> 
>> //        return 0; 
>> 
>> //    } else { 
>> 
>> //        double res = sexRatio * 2*fecParGonade * pop.getPopulationGroup(g).getMeanWeight() * pop.getPopulationGroup(g).getAboundance().sumAll(); 
>> 
>> //        prodOeufs = prodOeufs + res; 
>> 
>> //    } 
>> 
>> //} 
>> 
>> //return prodOeufs; 
>> 
>> Mais j'obtiens les erreurs suivantes : 
>> 
>> 1. ERROR in D:\DATA\a.bach\isis-fish-4\isis-temp\tmp-20200319112700-1491086668\checkPopulationReproductionEquation1429431846243759405Equation.java (at line 23) 
>> 
>> if (g < 4) { 
>> 
>> ^^^^^ 
>> 
>> The operator < is undefined for the argument type(s) PopulationGroup, int 
>> 
>> ---------- 
>> 
>> 2. ERROR in D:\DATA\a.bach\isis-fish-4\isis-temp\tmp-20200319112700-1491086668\checkPopulationReproductionEquation1429431846243759405Equation.java (at line 26) 
>> 
>> double res = sexRatio * 2*fecParGonade * pop.getPopulationGroup(g).getMeanWeight() * pop.getPopulationGroup(g).getAboundance().sumAll(); 
>> 
>> ^^^^^^^^^^^^^^^^^^ 
>> 
>> The method getPopulationGroup() in the type Population is not applicable for the arguments (PopulationGroup) 
>> 
>> ---------- 
>> 
>> 3. ERROR in D:\DATA\a.bach\isis-fish-4\isis-temp\tmp-20200319112700-1491086668\checkPopulationReproductionEquation1429431846243759405Equation.java (at line 26) 
>> 
>> double res = sexRatio * 2*fecParGonade * pop.getPopulationGroup(g).getMeanWeight() * pop.getPopulationGroup(g).getAboundance().sumAll(); 
>> 
>> ^^^^^^^^^^^^^^^^^^ 
>> 
>> The method getPopulationGroup() in the type Population is not applicable for the arguments (PopulationGroup) 
>> 
>> ---------- 
>> 
>> 3 problems (3 errors) 
>> 
>> Pourriez-vous me donner un petit coup de main ou partager un script faisant sensiblement le même calcul ? 
>> 
>> Merci et bonne soirée, 
>> 
>> Adrian 
>> 
>> -------------------------
>> 
>> Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci. 
>> 
>> This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you. 
>> 
>> -------------------------
>> 
>> _______________________________________________
>> Isis-fish-users mailing list
>> Isis-fish-users at list.isis-fish.org
>> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
> 
> -------------------------
> Ce message et ses pièces jointes peuvent contenir des informations confidentielles ou privilégiées et ne doivent donc pas être diffusés, exploités ou copiés sans autorisation. Si vous avez reçu ce message par erreur, merci de le signaler à l'expéditeur et le détruire ainsi que les pièces jointes. Les messages électroniques étant susceptibles d'altération, Egis décline toute responsabilité si ce message a été altéré, déformé ou falsifié. Merci. 
> 
> This message and its attachments may contain confidential or privileged information that may be protected by law; they should not be distributed, used or copied without authorisation. If you have received this email in error, please notify the sender and delete this message and its attachments. As emails may be altered, Egis is not liable for messages that have been modified, changed or falsified. Thank you. 
> -------------------------
> 
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users at list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://list.isis-fish.org/pipermail/isis-fish-users/attachments/20200320/c78e00d3/attachment-0002.html>


Plus d'informations sur la liste de diffusion Isis-fish-users