[Isis-fish-users] Erreur en cours de simulation avec TAC.
Benoit Archambault
benarcha at gmail.com
Sam 31 Juil 19:17:56 CEST 2010
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 at gmail.com>
> *Coucou*
>
> 2010/7/29 <Sigrid.Lehuta at 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+
>>
>
>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://list.isis-fish.org/pipermail/isis-fish-users/attachments/20100731/67202052/attachment.html>
Plus d'informations sur la liste de diffusion Isis-fish-users