Bonjour à tous,
Afin de la dynamiser un peu, je relance sur la liste cette
discussion qui avait été commencée en off (j'y synthétise
les réponses à quelques questions que cette proposition avait déjà
soulevées).
Un petit mot de contexte pour ceux qui ne sont pas au courant : dans
le cadre de mon postdoc, j'ai pour mission de faire un couplage
entre une approche de planification spatiale de conservation
(utilisant Marxan with Zones, qui permet d'optimiser le design
d'aires marines protégées) avec un modèle ISIS-Fish en Manche Est.
La première étape est d'utiliser dans ISIS des zones de réduction
d'effort définies par engin à l'aide de Marxan.
Après discussion avec Stéphanie et Sigrid, il apparait que
l'utilisation du simulateur par cellule est (i)
plus simple (inutile de redéfinir autant de métiers et zones métiers
que de pourcentage de réduction d'effort par engin, comme ce serait
le cas avec le simulateur par défaut) et (ii) bien plus à
même de retranscrire les effets d'une gestion spatialisée à une
échelle fine.
Il a donc été choisi de s'inspirer de l'actuel simulateur par
cellule et de modifier les scripts afin d'introduire dans l'équation
de mortalité par pêche un terme de limitation d'effort (dans
SiMatrix) estimé, le cas échéant, à l'échelle de la cellule par
évaluation d'intersection avec des zones de réduction d'effort pour
l'engin courant. La limitation d'effort serait bien entendu fixée à
zéro en l'absence de zones de limitation d'effort.
J'ai donc codé, en m'inspirant d'un premier travail de préparation
fait avec Éric, quelques modifications qui devraient permettre de
réaliser ce couplage. Et je souhaiterais les soumettre à vos
critiques et éventuelle approbation.
Le code que vous trouverez ci-joint, adapté de la version
4.2.1.2, aspire à être le plus générique possible et se
caractérise par :
- un nouveau simulateur,
SimulatorEffortByCellMarxanWithZones.java qui, comme le script
du simulateur par cellule, ne fait que définir un tag dans le
context : "effortByCellMarxanWithZones" = "true".
- une modification de la fonction isEffortByCell()
(lignes 342+ de DefaultSimulator.java) afin d'entrer en mode
simulation par cellule également lorsque ce nouveau tag est
défini. À noter que pour éviter cette modification il devrait
être possible - et sûrement souhaitable - de définir deux tags effortMarxanWithZones
et effortByCell distincts à l'aide du nouveau
simulateur. Je vous l'envoie toutefois en l'état, en attendant
d'avoir pu tester cette solution.
- une nouvelle règle de gestion (ReductionEffortMwZPreSimu.java)
qui définit en présimulation les zones de réduction d'effort et
le paramètre (proportion) de réduction associé pour chaque
engin, à partir d'un fichier de sorties Marxan (fichier joint
effortRedISIS_3.csv, une ligne par zone : <engin>;<proportion
réduction>;<Cell1>,<Cell2>,...). De plus,
si la proportion de réduction d'effort est 1.0 sur une zone,
celle-ci est ajoutée à la table NoActivity de l'engin.
- une modification de SiMatrix.java qui se décline en deux
parties :
- ajout d'une fonction locale qui permet de tester si on est
dans une simu Marxan (lignes 82+ ; teste le tag définit par le
nouveau simulateur).
- modification (lignes 885-912) de la fonction qui calcule la
mortalité par pêche au niveau de la cellule (matrixFishingMortalityPerCell)
:
- ajout d'un facteur de réduction d'effort, à 0.0 par
défaut, utilisé dans l'équation de mortalité.
- modulation de ce facteur en fonction de l'intersection
avec les zones de réduction d'effort de l'engin, uniquement
si on est dans une simu Marxan (reste 0.0 sinon).
Du coup le script reste parfaitement utilisable avec les autres
simulateurs :
- simulateur par défaut : cette fonction modifiée n'est
simplement pas utilisée.
- simulateur par cellule simple : l'effort est multiplié par
(1.0 - 0.0) dans tous les cas.
Les modifications apportées au code des fonctions fondamentales
d'ISIS (hors règle) sont donc relativement légère et - à mon avis -
faciles à maintenir : toute amélioration/correction de bug
apporté(e) au simulateur par cellule bénéficierait systématiquement
au simulateur "Marxan".
Ces scripts ont été testés et donnent des sorties qui paraissent
cohérentes avec la base Manche Est, datée du 21/10/2013, de Sigrid.
Toutes vos remarques et suggestions seront les bienvenues.
N'hésitez pas a demander des précisions si quelque chose ne semble
pas clair.
Yves
--
------------------------------------------------------------
Yves REECHT
Laboratoire Ressources Halieutiques
IFREMER - Centre Manche Mer du Nord
150, Quai Gambetta
62200 Boulogne-sur-Mer
FRANCE
tel. +33 (0)3 21 99 56 09
--------------------------------------------------)><))))°>