test equation de recruitment passé avec (presque total) succes ! - Ca fait ce qu'on veut ! - Le probleme est independant de l equation de recrutement et concerne les multiplications de matrice. En effet, la multiplication de la matrice de repro par la matrice MappingReproRecu cf code en dessous ( zrzr.transpose().mult(oeufsm);) ne fonctionne pas. impossible de comprendre comment utiliser .mult efficacement. j ai essayé d'échanger les matrices et de transposer, rien a faire! L'API dit que .mult(matrixND) s applique a 2 matrice 2D. ici on a une matrice 1D et une matrice 2D, peut etre est ce la raison de l echec. on doit pouvoir multiplier une 2D par une 1d aussi normalement... Qu'en dit le fabriquant de la librairie MatrixND? Du coup obligé de passer par un iterateur pour faire ce qu on veut. c'est dommage. Je check FOther. A++ CODE de L EQUATION /// 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); } for(MatrixIterator i = result.iterator(); i.hasNext();) { i.next(); i.setValue(0);} 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).getRecruitementContribution(); if(p !=null){ MatrixND oeufsm = recruitmentInputs.get(m).getRepro().copy(); // ATTENTION a ne pas modifier la matrice originale oeufsm = oeufsm.mults(p); zrzr.transpose().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])); } } } return 0; Le 22 octobre 2015 17:19, Sigrid Lehuta <sigridlehuta@gmail.com> a écrit :
Déjà !!! Super! par contre je vais surement pas pouvoir tester avant lundi... je suis impatiente !
Le 22 octobre 2015 14:07, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 22/10/2015 11:42, Sigrid Lehuta a écrit :
Ou doit se trouver l'équation ?
Espece/Population/Stocks en dessous de Calcul de F
Quel sont ses parametres ?
Les mêmes que pour l'equation de mortalité Naturelle : context, pop,
group, zone.
Et qui/comment s'appele l'equation ? (ou comment influt-elle sur la simulation).
Elle s'appelle fishingMortalityOtherFleets (Foth) (dans nombreux cas elle retourne une matrice de 0, c'est la valeur par
défaut)
et partout où l'equation de mortalité natuelle est appelée, tu appelles
aussi
Foth et tu sommes les 2 avant de faire le calcul.
OK?
C'est fait ici :
http://forge.codelutin.com/attachments/download/3445/isis-fish-4.4.0.0-r4307...
Tu va devoir supprimer les regions, pour qu'elles soient à nouveau migrées en version 4.4 depuis une version 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