Re-bonjour,
j'ai reussi à contourner le souci des variables en en creant des nouvelles, pas super propre mais bon ca marche.
Par contre j'ai un nouveau problème:

Voila ce que je fais jusqu'a present. L'objectif est de remettre dans la population les captures excédentes par rapport au TAC.

1)Je recupère la matrice des captures, que j'appelle capt, en sommant sur les metiers et les strategies.J'utilise la fonction suivante :

    public static MatrixND getTotalCatchinN(SimulationContext context, Species species, Date date) {
     MatrixND result2=null;
        for (Population pop : species.getPopulation()) {
              MatrixND mat = context.getPopulationMonitor().getCatch(pop);
               mat = mat.sumOverDim(0); // sum over Strategies
              mat = mat.sumOverDim(1); // sum over metiers
             result2= mat;
        }
        return result2;
    }
}


J'ai verifié avec le log, ca marche et me ressort bien la matrice désirée.

A partir de cette matrice, je calcule une nouvelle matrice qui contiendra les captures à transférer dans la population,propATransferer est la proportion de captures non désirées :

 MatrixND transfertCapt=capt.mults(propATransferer);


Vérifié aussi, ca me ressort bien les valeurs voulues.

Maintenant je veux additionner les effectifs actuels de la population avec cette matrice de transfert :
On récupère les effectifs actuels :

 PopulationMonitor popMon = context.getPopulationMonitor();
MatrixND eff = popMon.getN(param_pop);


On additionne :
MatrixND effCorriges=eff.add(transfertCapt) ;

Ca fonctionne, mais apres verification les valeurs obtenues sont incohérentes.

En fait il semble que si on se refere aux matrices telles qu'on peut les visualiser dans l'interface d'isis.
La fonction getN retourne les valeurs lues dans le sens vertical. (zone par zone)
La fonction getCatch retourne les valeurs lues dans le sens horizontal (groupe par groupe).

L'opération fonctionne car les dimensions restent les mêmes mais évidemment les résultats ne sont pas attendus.
Il faudrait reformater une des matrices (la matrice des captures probablement) pour que l'ordre des valeurs collent à ceux des effectifs. Mais je ne sais pas comment faire, surement la parcourir avec iterator etc mais je bloque la dessus et mon planning est assez serré :(

Sinon, une fois ce problème dépassé, il faut que je remplace les effectifs dans isis par mes nouveaux effectifs calculés, fonction setN() ?
Par contre, pour remplacer les captures, je n'ai pas trouvé de fonction, est-ce possible ?

Merci,j'espère avoir été clair
Benoit


2010/7/31 Benoit Archambault <benarcha@gmail.com>
Coucou

2010/7/29 <Sigrid.Lehuta@ifremer.fr>

Si j'ai bien compris tu déclare la variable en protected...
(c est bien ca les "informaticiens"?)


Ca n'a pas l'air de fonctionner ? J'ai toujours un "illegal start of expression", ca m'enerve car j'avais deja eu le probleme et trouvé la solution mais je bloque là !

 
pour reinjecté la pop, je pense qu'avec la regle tacPoids, c est deja écrit pour les rejets en post action. Il y a propSurvie, la proportion des rejets qui survie t as qu a mettre 100% !


Merci pour l'info, ca va bien m'aider
 


A+