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-bin.zip

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