Isis-fish-community-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
May 2013
- 2 participants
- 13 discussions
Author: loic
Date: 2013-05-02 18:53:01 +0200 (Thu, 02 May 2013)
New Revision: 28
Url: http://forge.codelutin.com/projects/isis-fish-community/repository/revision…
Log:
gravity_VPUE
Added:
trunk/rules/GraviteVPUE1_Ponderation.java
Added: trunk/rules/GraviteVPUE1_Ponderation.java
===================================================================
--- trunk/rules/GraviteVPUE1_Ponderation.java (rev 0)
+++ trunk/rules/GraviteVPUE1_Ponderation.java 2013-05-02 16:53:01 UTC (rev 28)
@@ -0,0 +1,337 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2006 - 2011 Ifremer, CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-2.0.html>.
+ * #L%
+ */
+package rules;
+
+import static org.nuiton.i18n.I18n._;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import scripts.ResultName;
+import scripts.SiMatrix;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Collection;
+
+import org.nuiton.math.matrix.*;
+
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.types.TimeStep;
+import fr.ifremer.isisfish.types.Month;
+import fr.ifremer.isisfish.entities.*;
+import fr.ifremer.isisfish.rule.AbstractRule;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.util.Doc;
+
+/**
+ * GraviteVPUE1_Ponderation.java
+ *
+ * Created: 26 aout 2008
+ *
+ * @author anonymous <anonymous(a)labs.libre-entreprise.org>
+ * @version $Revision: 257 $
+ *
+ * Last update: $Date: 2011-07-08 15:04:29 +0200 (ven., 08 juil. 2011) $
+ * by : $Author: 2SY- Sigrid+Youen+Stephanie $
+ */
+public class GraviteVPUE1_Ponderation extends AbstractRule {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(GraviteVPUE1_Ponderation.class);
+
+ ////Essai de passage de alpha en paramètre de la règle.
+ @Doc("fishers behaviour parameter (between 0 and 1)")
+ public double param_alpha = 0;
+
+ /** stocke la somme des prop initiales [str x month] */
+ private MatrixND SommePropInitial = null;
+ /** stocke par strat*met, la dernière attractivite pour chaque mois [str x met x month] */
+
+ /** permet de stocker les CPUE nominales [str x met] */
+ private MatrixND valuePerUnitOfEffort = null;
+
+ /** declare here all the parameters describing the different scenarios investigated; */
+ //public double alpha; //fishers behaviour parameter;
+
+ public String[] necessaryResult = {
+ // put here all necessary result for this rule
+ // example:
+ // ResultName.MATRIX_BIOMASS,
+ // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
+ ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
+ //ResultName.MATRIX_EFFORT_PER_STRATEGY_MET,
+ ResultName.MATRIX_EFFORT_NOMINAL_PER_STRATEGY_MET, // garder la ,
+
+ };
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+ /**
+ * Permet d'afficher a l'utilisateur une aide sur la regle.
+ * @return L'aide ou la description de la regle
+ */
+ @Override
+ public String getDescription() throws Exception {
+ return _("Calcule les proportion par metier chaque mois en fonction de la VPUE du metier l'annee precedante");
+ /*"HYPOTHESES GRAVITE"
+ " attention cette règle doit toujours être mise avant les mesures de gestion"+
+ " si pour un metier Effort(metier annee-1,mois) = 0 et propinitiale (metier, mois) !=0 (ie metier potentiellement pratique), alors "+
+ on remet propInitiale pour tous les metiers (premiere vue complete pour tous les metiers de la strategie - GraviteVPUE1_Ponderation-, une alternative
+ pourrait être de chercher lapremiere annee avant annee -1 pour laquelle le metier, ayant une propInitiale non nulle , aurait une VPUE (metier,mois) non nulle
+ et recuperer la propStr (metier,mois) pour cette annee et on l'affecte annee courante - mois, les autres metiers se partageant la proportion d'effort restante
+ en fonction de leur VPUE - graviteVPUE2-, une alternative pourrait etre de chercher la premiere annee avant annee -1 pour laquelle tous les metiers,
+ ayant une propInitiale non nulle, auraient eu une propStr non nulle, (surement difficile a trouver) - - graviteVPUE3- d'autres hypothèses pourraient etre envisagees)
+ "*/
+ }
+
+ /**
+ * function used to initialise MatrixND to NaN double
+ */
+ private MapFunction nanFunction = new MapFunction() {
+ @Override
+ public double apply(double value) {
+ return Double.NaN;
+ }
+ };
+
+ /**
+ * Appele au demarrage de la simulation, cette methode permet d'initialiser
+ * des valeurs
+ * @param context La simulation pour lequel on utilise cette regle
+ */
+ @Override
+ public void init(SimulationContext context) throws Exception {
+ TimeStep step = new TimeStep(0);
+
+ List<Strategy> strs = SiMatrix.getSiMatrix(context).getStrategies(step);
+ List<Metier> metiers = SiMatrix.getSiMatrix(context).getMetiers(step);
+ List<Month> months = Arrays.asList(Month.MONTH);
+
+ SommePropInitial = MatrixFactory.getInstance().create(
+ "SommePropInitial", new List[] { strs, months },
+ new String[] { "Strategies", "Months" });
+ SommePropInitial.map(nanFunction);
+
+ valuePerUnitOfEffort = MatrixFactory.getInstance().create(
+ "ValuePerUnitOfEffort", new List[] { strs, metiers },
+ new String[] { "Strategies", "Metiers" });
+ valuePerUnitOfEffort.map(nanFunction);
+
+ for (Strategy str : strs) {
+ List<Metier> strMetiers = SiMatrix.getSiMatrix(context).getMetiers(
+ str, step);
+ List<StrategyMonthInfo> infos = str.getStrategyMonthInfo();
+ for (StrategyMonthInfo info : infos) {
+ double somme = 0;
+ for (Metier strMetier : strMetiers) {
+ somme += info.getProportionMetier(strMetier);
+ }
+ // FIXME soit on somme pour toutes les str le meme metier; donc pas de notion de str.getName dans la cle
+ // soit pour une str on somme tous ces metiers (mais ce doit etre 1; donc pas de notion de metier.getName dans la cle
+ SommePropInitial.setValue(str, info.getMonth(), somme);
+ }
+ }
+
+ /** Setting the different scenarios parameters; */
+ //fishers behavior: alpha varies between 0 (fully static) to 1 (fully dynamic);
+ //alpha = 0.5;
+
+ }
+
+ /**
+ * La condition qui doit etre vrai pour faire les actions.
+ *
+ * @param context la simulation pour lequel on utilise cette regle
+ * @param step le pas de temps courant
+ * @param metier le metier concerne
+ * @return vrai si on souhaite que les actions soit faites
+ */
+ @Override
+ public boolean condition(SimulationContext context, TimeStep step, Metier metier)
+ throws Exception {
+ // Il faut etre au moins au deuxieme pas de temps.
+ return step.getYear() > 0;
+ }
+
+ // Booleen permettant que ne boucler que sur un seul metier dans la preaction :
+ boolean first = true;
+
+ /**
+ * Si la condition est vrai alors cette action est executee avant le pas
+ * de temps de la simulation.
+ *
+ * @param context la simulation pour lequel on utilise cette regle
+ * @param step le pas de temps courant
+ * @param metier le metier concerne
+ */
+ @Override
+ public void preAction(SimulationContext context, TimeStep step, Metier metier)
+ throws Exception {
+ if (log.isDebugEnabled()) {
+ log.debug("first = " + first + "step:" + step);
+ }
+ //log.info("first = " + first + " ,on passe dans la preaction ?");
+ if (first) { // on passe dans preaction pour la premiere fois
+ //log.info("Oui, preaction : ");
+
+ List<Strategy> strs = SiMatrix.getSiMatrix(context).getStrategies(
+ step);
+ //List<Population> populations = SiMatrix.getSiMatrix(context)
+ // .getPopulations(date);
+ ResultStorage resultmanager = context.getSimulationStorage()
+ .getResultStorage();
+
+ ////////Initialisation des matrices qui resultent de la simulation////////////////////////////////////////////////////////////
+
+ //Calcul de l effort nominal par strategy met
+ MatrixND EffortNominalPerStrMet = null;
+ EffortNominalPerStrMet = resultmanager.getMatrix(step.previousYear(),
+ ResultName.MATRIX_EFFORT_NOMINAL_PER_STRATEGY_MET);
+ //System.out.println("EffortNominalPerStrMet calculee "
+ // + EffortNominalPerStrMet);
+
+ //on commence par creer une matrice de valeurs (somme sur ttes les especes capturees) par strategie met
+ MatrixND GrossValuePerStrMet = null;
+ GrossValuePerStrMet = resultmanager.getMatrix(step.previousYear(),
+ ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET);
+
+ //System.out.println("GrossValuePerStrMet calculee " + GrossValuePerStrMet);
+
+ //ajouter pour tous les metiers les valeurs liees aux autres espèces calculees par modele lineaire
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////
+ valuePerUnitOfEffort.map(nanFunction); //reinitialisation avant calcul pour date
+
+ for (Strategy str : strs) {
+
+ //log.info("INFO: Boucle creation valuePerUnitEffort : " + str.getName());
+ // log.info("Boucle creation catchperuniteffort : "+ str.getName());
+ StrategyMonthInfo smi = str.getStrategyMonthInfo(step.getMonth());
+ StrategyMonthInfo smi_1 = str.getStrategyMonthInfo(step.previousYear().getMonth());
+ Collection<EffortDescription> strMet = str.getSetOfVessels().getPossibleMetiers();
+ //SiMatrix.getSiMatrix(context).getMetiers(str, date);
+
+ // boucle pour tester s'il existe un metier pour lequel effort(metier)=0 et PropInitiale(metier)=0 (Condition)
+ boolean testCondition = false;
+ double somme = 0;//initialisation de la somme des VPUE des metiers de la strategie
+
+ for (EffortDescription ed : strMet) {
+ Metier strMetier = ed.getPossibleMetiers();
+ //log.info("Pour str=" + str.getName() + " et metier=" + strMetier.getName());
+ double effort = EffortNominalPerStrMet.getValue(str,strMetier);
+ // on teste effort pour le calcul des VPUE
+ // si effort != 0 , valeur/effort
+ //sinon (effort =0) , deux cas de figure :
+ // 1. soit propInitiale =0 pour ce metier et dans ce cas VPUE =0 et ca ne doit pas impacter le calcul de la gravite pour les autres metiers de str
+ // 2. soit propInitiale! =0 et dans ce cas, on mettra PropInitiale pour tous les metiers de str
+ if (effort > 0) {// a peche au mois, annee-1
+ //on recupere la capture tot
+ double value = GrossValuePerStrMet.getValue(str,strMetier);
+ //log.debug("DEBUG: value : " + value);
+ //log.debug("DEBUG: effort : " + effort);
+ double vpue = value / effort;
+ valuePerUnitOfEffort.setValue(str, strMetier, vpue);
+ //log.info("value/effort= " + vpue);
+ somme += value / effort;
+ } else if ((effort == 0)
+ & (smi.getProportionMetier(strMetier) == 0)) {// n'a jamais pêche avec ce metier
+ valuePerUnitOfEffort.setValue(str, strMetier, 0);
+ //log.info("n'a jamais pêche avec ce metier");
+ } else {// n'a pas peche au mois, annee -1, mais avait une prop d'effort non nul a l'annee=0
+ testCondition = true;// ie somme est incomplète mais pas grave car on mettra PropInitiale a tous les metiers
+ //log.info("n'a pas peche au mois, annee -1, mais avait une prop d'effort non nul a l'annee=0");
+ }
+ }
+ //log.info("testCondition pour str" + str.getName()
+ // + ":" + testCondition);
+ // A partir des VPUE stockees dans valuePerUnitOfEffort, on calcule la gravite
+ double newProp=0.0;
+ double newProp2=0.0;
+ //log.info("A partir des VPUE stockees dans valuePerUnitOfEffort, on calcule la gravite");
+ if (!testCondition) {
+ double SommeVPUEstrat = somme;
+ //System.out.println("SommeVPUEstrat=" + SommeVPUEstrat);
+ for (EffortDescription ed : strMet) {
+ Metier strMetier = ed.getPossibleMetiers();
+ //System.out.println("PropStrInitiale(metier="
+ // + strMetier.getName() + ")"
+ // + smi.getProportionMetier(strMetier));
+ //System.out.println("SommePropInitial.getValue(str, date.getMonth()="
+ // + SommePropInitial.getValue(str, date
+ // .getMonth()));
+ //System.out.println("valuePerUnitOfEffort.getValue(str, strMetier)"
+ // + valuePerUnitOfEffort.getValue(str,
+ // strMetier));
+ // si le profit anticipe pour une strategie est negatif ou nul, on abandonne cette strategie
+ if (SommeVPUEstrat <= 0.0) {
+ newProp=0.0;
+ newProp2=0.0;
+ } else {
+ // VPUE du metier / VPUE de la strategie
+ newProp = valuePerUnitOfEffort.getValue(str,strMetier) / SommeVPUEstrat; //Ce sont bien les VPUE de l'annee precedente (step.PreviousYear() dans l'appel)
+ // Allocation de l'annee precedente
+ newProp2 = smi_1.getProportionMetier(strMetier);
+ }
+ //System.out.println("newProp(metier="
+ // + strMetier.getName() + ")" + newProp);
+ // L'allocation de l'effort a un metier vient a hauteur de param_alpha de newProp et a hauteur de 1-param_alpha de l'allocation de l'anne precedente
+ smi.setProportionMetier(strMetier,param_alpha*newProp+(1-param_alpha)*newProp2);
+ //System.out.println("PropStrNouvelle(metier="
+ // + strMetier.getName() + ")"
+ // + smi.getProportionMetier(strMetier));
+ }
+ }
+ // else ie on met propInitiale dans PropStr(str,annee,mois)
+ // rien n'a faire car au debut de chaque pas de temps, PropStr
+ // est par defaut initialise a la valeur de la base de donnees (val initiales)
+
+ }//fin de boucle sur strategy
+
+ first = false;
+
+ }// fin de first= true
+
+ if (log.isDebugEnabled()) {
+ log.debug("fin Gravite CPUEAction avant");
+ }
+
+ }
+
+ ///////////////////////////////fin Gravite CPUEAction avant////////////////////////////
+
+ /**
+ * Si la condition est vrai alors cette action est executee apres le pas
+ * de temps de la simulation.
+ *
+ * @param context La simulation pour lequel on utilise cette regle
+ * @param step le pas de temps courant
+ * @param metier le metier concerne
+ */
+ @Override
+ public void postAction(SimulationContext context, TimeStep step, Metier metier) throws Exception {
+ first = true;
+ }
+}
1
0
Author: loic
Date: 2013-05-02 18:52:28 +0200 (Thu, 02 May 2013)
New Revision: 27
Url: http://forge.codelutin.com/projects/isis-fish-community/repository/revision…
Log:
export_biomasse_feconde
Added:
trunk/exports/BiomasseFeconde.java
Added: trunk/exports/BiomasseFeconde.java
===================================================================
--- trunk/exports/BiomasseFeconde.java (rev 0)
+++ trunk/exports/BiomasseFeconde.java 2013-05-02 16:52:28 UTC (rev 27)
@@ -0,0 +1,96 @@
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2006 - 2011 Ifremer, CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-2.0.html>.
+ * #L%
+ */
+package exports;
+
+import static org.nuiton.i18n.I18n._;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.Writer;
+
+import org.nuiton.math.matrix.*;
+
+import scripts.ResultName;
+
+import fr.ifremer.isisfish.entities.*;
+import fr.ifremer.isisfish.export.Export;
+import fr.ifremer.isisfish.types.TimeStep;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+
+/**
+ * Biomasses.java
+ *
+ * Created: 23 novembre 2006
+ *
+ * @author anonymous <anonymous(a)labs.libre-entreprise.org>
+ * @version $Revision: $
+ *
+ * Last update: $Date: 28/08/2012$
+ * by : $Author:lgasche $
+ */
+public class BiomasseFeconde implements Export {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(BiomasseFeconde.class);
+
+ protected String [] necessaryResult = {
+ ResultName.MATRIX_BIOMASS
+ };
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "BiomasseFeconde";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Exporte les biomasses fecondes, tableau avec des lignes pop;id;zone;date;nombre");
+ }
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out) throws Exception {
+ for (Population pop : simulation.getParameter().getPopulations()) {
+ MatrixND mat = simulation.getResultStorage().getMatrix(pop, ResultName.MATRIX_BIOMASS);
+ for (MatrixIterator i=mat.iterator(); i.hasNext();) {
+ i.next();
+ Object [] sems = i.getSemanticsCoordinates();
+ TimeStep step = (TimeStep)sems[0];
+ PopulationGroup group = (PopulationGroup)sems[1];
+ Zone zone = (Zone)sems[2];
+
+ double val = i.getValue()* group.getMaturityOgive();
+ out.write(pop.getName() +";"+ group.getId() +";"+ zone.getName() +";"+ step.getStep() +";"+ val +"\n");
+ }
+ }
+ }
+}
1
0
Author: echatellier
Date: 2013-05-02 16:59:39 +0200 (Thu, 02 May 2013)
New Revision: 26
Url: http://forge.codelutin.com/projects/isis-fish-community/repository/revision…
Log:
Mise ?\195?\160 jour de la date de copyright
Modified:
trunk/exports/MortalitePecheGroupe.java
Modified: trunk/exports/MortalitePecheGroupe.java
===================================================================
--- trunk/exports/MortalitePecheGroupe.java 2012-12-20 11:01:12 UTC (rev 25)
+++ trunk/exports/MortalitePecheGroupe.java 2013-05-02 14:59:39 UTC (rev 26)
@@ -1,107 +1,107 @@
-/*
- * #%L
- * IsisFish data
- * %%
- * Copyright (C) 2006 - 2011 Ifremer, CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-2.0.html>.
- * #L%
- */
-package exports;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.Writer;
-
-import static org.nuiton.i18n.I18n._;
-import org.nuiton.math.matrix.*;
-
-import scripts.ResultName;
-
-import fr.ifremer.isisfish.entities.*;
-import fr.ifremer.isisfish.export.Export;
-import fr.ifremer.isisfish.types.TimeStep;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-/**
- * FishingMortality.java
- *
- * Created: 19 Avril 2012
- *
- * @author anonymous <anonymous(a)labs.libre-entreprise.org>
- * @version $Revision: 0.1 $
- *
- * Last update: $Date: 0000-00-00 00:00:00 $ by : $Author: $
- */
-public class MortalitePecheGroupe implements Export {
-
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(MortalitePecheGroupe.class);
-
- protected String[] necessaryResult = { ResultName.MATRIX_FISHING_MORTALITY_PER_GROUP,
- ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP,
- ResultName.MATRIX_ABUNDANCE,
- };
-
- @Override
- public String[] getNecessaryResult() {
- return this.necessaryResult;
- }
-
- @Override
- public String getExportFilename() {
- return "MortalitePecheGroupe";
- }
-
- @Override
- public String getExtensionFilename() {
- return ".csv";
- }
-
- @Override
- public String getDescription() {
- return _("Exporte la mortalite par peche par groupe et par population de la simulation (Fgroup par an calcule en decembre)");
- }
-
- @Override
- public void export(SimulationStorage simulation, Writer out)
- throws Exception {
- TimeStep lastStep = simulation.getResultStorage().getLastStep();
-
- for (Population pop : simulation.getParameter().getPopulations()) {
-// for (PopulationGroup group : pop.getPopulationGroup()) { // Rajouter une boucle sur les groupes ??
- for (TimeStep step = new TimeStep(0); !step.after(lastStep); step = step.next()) {
-
- MatrixND mat = simulation.getResultStorage().getMatrix(step,
- pop, ResultName.MATRIX_FISHING_MORTALITY_PER_GROUP); // group
-
- if (mat != null) { // can be null if simulation is stopped before last year simulation
- for (MatrixIterator i = mat.iterator(); i.hasNext();) {
- i.next();
- Object[] sems = i.getSemanticsCoordinates();
- PopulationGroup group = (PopulationGroup)sems[1];
- double val = i.getValue();
-
- out.write(pop.getName() + ";" + step.getStep() + ";" + group.getAge() + ";" + val + "\n"); // + ";" + group.getAge()
- }
- }
- }
- //}
- }
- }
- }
-
-
+/*
+ * #%L
+ * IsisFish data
+ * %%
+ * Copyright (C) 2006 - 2013 Ifremer, CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-2.0.html>.
+ * #L%
+ */
+package exports;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.Writer;
+
+import static org.nuiton.i18n.I18n._;
+import org.nuiton.math.matrix.*;
+
+import scripts.ResultName;
+
+import fr.ifremer.isisfish.entities.*;
+import fr.ifremer.isisfish.export.Export;
+import fr.ifremer.isisfish.types.TimeStep;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+
+/**
+ * FishingMortality.java
+ *
+ * Created: 19 Avril 2012
+ *
+ * @author anonymous <anonymous(a)labs.libre-entreprise.org>
+ * @version $Revision: 0.1 $
+ *
+ * Last update: $Date: 0000-00-00 00:00:00 $ by : $Author: $
+ */
+public class MortalitePecheGroupe implements Export {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(MortalitePecheGroupe.class);
+
+ protected String[] necessaryResult = { ResultName.MATRIX_FISHING_MORTALITY_PER_GROUP,
+ ResultName.MATRIX_CATCH_PER_STRATEGY_MET_PER_ZONE_POP,
+ ResultName.MATRIX_ABUNDANCE,
+ };
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+ @Override
+ public String getExportFilename() {
+ return "MortalitePecheGroupe";
+ }
+
+ @Override
+ public String getExtensionFilename() {
+ return ".csv";
+ }
+
+ @Override
+ public String getDescription() {
+ return _("Exporte la mortalite par peche par groupe et par population de la simulation (Fgroup par an calcule en decembre)");
+ }
+
+ @Override
+ public void export(SimulationStorage simulation, Writer out)
+ throws Exception {
+ TimeStep lastStep = simulation.getResultStorage().getLastStep();
+
+ for (Population pop : simulation.getParameter().getPopulations()) {
+// for (PopulationGroup group : pop.getPopulationGroup()) { // Rajouter une boucle sur les groupes ??
+ for (TimeStep step = new TimeStep(0); !step.after(lastStep); step = step.next()) {
+
+ MatrixND mat = simulation.getResultStorage().getMatrix(step,
+ pop, ResultName.MATRIX_FISHING_MORTALITY_PER_GROUP); // group
+
+ if (mat != null) { // can be null if simulation is stopped before last year simulation
+ for (MatrixIterator i = mat.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sems = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup)sems[1];
+ double val = i.getValue();
+
+ out.write(pop.getName() + ";" + step.getStep() + ";" + group.getAge() + ";" + val + "\n"); // + ";" + group.getAge()
+ }
+ }
+ }
+ //}
+ }
+ }
+ }
+
+
1
0