Isis-fish-data-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
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
August 2009
- 3 participants
- 12 discussions
27 Aug '09
Bonjour à tous,
ISIS-fish a son propre domain isis-fish.org.
Les listes de diffusions ont été migrées et tous les utilisateurs ont
normalement du être réabonnés aux nouvelles listes.
La nouvelle adresse de cette liste: isis-fish-data-commits(a)list.isis-fish.org
Nous sommes désolés des désagréments causés et vous remercions de votre
soutien.
Cordialement,
L'équipe de développement.
----------------------------
Dear all,
ISIS-fish has its own domain isis-fish.org.
The mailing-lists have been migrated and everybody should have been
automatically subscribing the new lists.
New mail address for this list: isis-fish-data-commits(a)list.isis-fish.org
We are sorry for the inconvenience, and thank you for your support.
Best regards,
The development team.
--
Benjamin
--------------------
tél: +33 (0) 2 40 50 29 28
email: poussin(a)codelutin.com () campagne du ruban ascii
http://www.codelutin.com /\ pour les mails en ascii
1
0
Author: bpoussin
Date: 2009-08-26 17:09:48 +0000 (Wed, 26 Aug 2009)
New Revision: 171
Modified:
trunk/scripts/SiMatrix.java
Log:
- ajout de la dimension cell qui manquait pour la recuperation de la totalFishingMortalityPerCell (l783)
Modified: trunk/scripts/SiMatrix.java
===================================================================
--- trunk/scripts/SiMatrix.java 2009-08-25 12:16:13 UTC (rev 170)
+++ trunk/scripts/SiMatrix.java 2009-08-26 17:09:48 UTC (rev 171)
@@ -780,8 +780,10 @@
MatrixND matrixFishingMortalityPerCell) throws TopiaException,
IsisFishException {
- double totalFishingMortality = totalFishingMortalityPerCell(date,
- matrixFishingMortalityPerCell).getValue(group, zone);
+ MatrixND totalFishingMortalityPerCell = totalFishingMortalityPerCell(
+ date, matrixFishingMortalityPerCell);
+ double totalFishingMortality = totalFishingMortalityPerCell.getValue(
+ group, zone, cell);
if (totalFishingMortality == 0) {
if (log.isDebugEnabled()) {
1
0
Author: chatellier
Date: 2009-08-25 12:16:13 +0000 (Tue, 25 Aug 2009)
New Revision: 170
Modified:
trunk/rules/InterdictionEngin.java
trunk/rules/InterdictionEnginPreSimu.java
trunk/rules/TACpoids.java
trunk/rules/TailleMin.java
Log:
Mise ?\195?\160 jour de la documentation des regles.
Modified: trunk/rules/InterdictionEngin.java
===================================================================
--- trunk/rules/InterdictionEngin.java 2009-08-25 12:15:50 UTC (rev 169)
+++ trunk/rules/InterdictionEngin.java 2009-08-25 12:16:13 UTC (rev 170)
@@ -1,7 +1,6 @@
package rules;
import static org.codelutin.i18n.I18n._;
-import static org.codelutin.i18n.I18n.n_;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -9,7 +8,6 @@
import scripts.ResultName;
import scripts.SiMatrix;
-import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -22,9 +20,6 @@
import fr.ifremer.isisfish.types.Month;
import fr.ifremer.isisfish.entities.*;
import fr.ifremer.isisfish.rule.AbstractRule;
-import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.util.Doc; // pour pouvoir afficher une aide contextuelle (BUG#1605)
@@ -44,13 +39,13 @@
/** to use log facility, just put in your code: log.info("..."); */
static private Log log = LogFactory.getLog(InterdictionEngin.class);
- @Doc(value="do the doc of param gear")
+ @Doc(value="Prohibited gear")
public Gear param_gear = null;
- @Doc(value="do the doc of param beginDate")
+ @Doc(value="Begin date")
public Date param_beginDate = new Date(0);
- @Doc(value="do the doc of param endDate")
+ @Doc(value="End date")
public Date param_endDate = new Date(119);
- @Doc(value="do the doc of param beginMonth")
+ @Doc(value="Begin month")
public Month param_beginMonth = Month.JANUARY;
@Doc(value="do the doc of param endMonth")
public Month param_endMonth = Month.DECEMBER;
@@ -71,20 +66,22 @@
* @return L'aide ou la description de la regle
*/
public String getDescription() throws Exception {
+ // interdiction des metiers utilisant cet engin
return _("Prohibited gear");
}
/**
* Appelé au démarrage de la simulation, cette méthode permet d'initialiser
* des valeurs
- * @param simulation La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void init(SimulationContext context) throws Exception {
- // TODO
+ // nothing
}
+
/**
* La condition qui doit etre vrai pour faire les actions
- * @param simulation La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
* @return vrai si on souhaite que les actions soit faites
*/
public boolean condition(SimulationContext context, Date date, Metier metier) throws Exception {
@@ -133,7 +130,7 @@
/**
* Si la condition est vrai alors cette action est executée avant le pas
* de temps de la simulation.
- * @param simulation La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void preAction(SimulationContext context, Date date, Metier metier) throws Exception {
log.info("le metier vise par l'interdiction : " + metier);
@@ -158,12 +155,12 @@
// 1er cas:l'effort est reporte sur un metier de la meme strategie,
// n'ayant pas l'espece comme capture principale et pechant avec le meme engin
- List<EffortDescription> MetiersPossibles= new ArrayList<EffortDescription>(Strat.getSetOfVessels().getPossibleMetiers());
+ List<EffortDescription> MetiersPossibles = new ArrayList<EffortDescription>(Strat.getSetOfVessels().getPossibleMetiers());
// on verifie que les metiers sont bien pratiques au mois courant,
// qu'ils n'ont pas le meme engin et qu'ils ne sont pas
// interdits par ailleurs
- for (Iterator<EffortDescription> effort=MetiersPossibles.iterator(); effort.hasNext();) {
+ for (Iterator<EffortDescription> effort = MetiersPossibles.iterator(); effort.hasNext();) {
Metier met = effort.next().getPossibleMetiers();
if (StratMonthInfo.getProportionMetier(met) == 0
|| met.getGear().equals(metier.getGear())
@@ -187,7 +184,7 @@
StratMonthInfo.setProportionMetier(metier, 0); //le metier vise a alors une proportion nulle
}
// s'il n'y a pas de metier alternatif, on passe a nonActivite
- else{
+ else {
MatrixND matNonActivite = metierMon.getOrCreateNoActivity(date,
ResultName.MATRIX_NO_ACTIVITY,
siMatrix.getStrategies(date),
@@ -270,7 +267,7 @@
/**
* Si la condition est vrai alors cette action est executée apres le pas
* de temps de la simulation.
- * @param simulation La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void postAction(SimulationContext context, Date date, Metier metier) throws Exception {
// nothing
Modified: trunk/rules/InterdictionEnginPreSimu.java
===================================================================
--- trunk/rules/InterdictionEnginPreSimu.java 2009-08-25 12:15:50 UTC (rev 169)
+++ trunk/rules/InterdictionEnginPreSimu.java 2009-08-25 12:16:13 UTC (rev 170)
@@ -8,7 +8,6 @@
import scripts.ResultName;
-import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -24,8 +23,6 @@
import fr.ifremer.isisfish.entities.*;
import fr.ifremer.isisfish.rule.AbstractRule;
import fr.ifremer.isisfish.datastore.RegionStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.ResultStorage;
import fr.ifremer.isisfish.util.Doc; // pour pouvoir afficher une aide contextuelle (BUG#1605)
@@ -77,13 +74,13 @@
/**
* Appelé au démarrage de la simulation, cette méthode permet d'initialiser
* des valeurs
- * @param simulation La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void init(SimulationContext context) throws Exception {
MetierMonitor metierMon = context.getMetierMonitor();
- Month moisDeb = param_beginMonth;
- Month moisFin = param_endMonth;
+ //Month moisDeb = param_beginMonth;
+ //Month moisFin = param_endMonth;
Gear EnginInterdit = param_gear;
log.info("nom de l'engin interdit "+EnginInterdit.getName());
@@ -224,7 +221,7 @@
}
/**
* La condition qui doit etre vrai pour faire les actions
- * @param simulation La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
* @return vrai si on souhaite que les actions soit faites
*/
public boolean condition(SimulationContext context, Date date, Metier metier) throws Exception {
@@ -251,7 +248,7 @@
/**
* Si la condition est vrai alors cette action est executée avant le pas
* de temps de la simulation.
- * @param simulation La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void preAction(SimulationContext context, Date date, Metier metier) throws Exception {
// on ne doit le faire qu'une seul fois quelque soit le nombre de metier
@@ -261,10 +258,10 @@
MetierMonitor metierMon = context.getMetierMonitor();
MatrixND noActivity = metierMon.getNoActivity(date);
- if (noActivity == null){
+ if (noActivity == null) {
metierMon.setNoActivity(date, mat.copy());
}
- else{
+ else {
noActivity = noActivity.add(mat);
}
// fin
@@ -287,7 +284,7 @@
/**
* Si la condition est vrai alors cette action est executée apres le pas
* de temps de la simulation.
- * @param simulation La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void postAction(SimulationContext context, Date date, Metier metier) throws Exception {
affectNonActivite = false;
Modified: trunk/rules/TACpoids.java
===================================================================
--- trunk/rules/TACpoids.java 2009-08-25 12:15:50 UTC (rev 169)
+++ trunk/rules/TACpoids.java 2009-08-25 12:16:13 UTC (rev 170)
@@ -30,18 +30,6 @@
import fr.ifremer.isisfish.util.Doc;
/**
- * TAC.java
- *
- * Created: 7 septembre 2006
- *
- * @author anonymous <anonymous(a)labs.libre-entreprise.org>
- * @version $Revision: 1.3 $
- *
- * Last update: $Date: 290607 $
- * by : $Author: sigrid $
- */
-
-/**
* TAC peut-etre utilise pour les differents TAC, en proportion des effectifs
* et/ou avec survie ou non.
*
@@ -50,25 +38,32 @@
* <li>Pour utiliser la survie il faut mettre dans le parametre propSurvie une
* valeur > 0, automatiquement les suvie seront ajoute aux effectifs
*
+ * Created: 7 septembre 2006
+ *
+ * @author anonymous <anonymous(a)labs.libre-entreprise.org>
+ * @version $Revision: 1.3 $
+ *
+ * Last update: $Date: 290607 $
+ * by : $Author: sigrid $
*/
public class TACpoids extends AbstractRule {
/** to use log facility, just put in your code: log.info("..."); */
static private Log log = LogFactory.getLog(TACpoids.class);
- @Doc(value = "do the doc of param species")
+ @Doc("Affected species")
public Species param_species = null;
- @Doc(value = "do the doc of param beginDate")
+ @Doc("Debin date")
public Date param_beginDate = new Date(0);
- @Doc(value = "do the doc of param endDate")
+ @Doc("End date")
public Date param_endDate = new Date(90);
- @Doc(value = "do the doc of param propSurvie")
+ @Doc("Proportion de survie")
public double param_propSurvie = 0;
- @Doc(value = "do the doc of param propTac")
+ @Doc("Proportionnal TAC")
public double param_propTac = 0;
/** TAC in tonnes */
- @Doc(value = "TAC in tons")
+ @Doc("TAC in tons")
public double param_tacInTons = 900;
boolean affectation = false;
@@ -100,8 +95,7 @@
* Appele au demarrage de la simulation, cette methode permet d'initialiser
* des valeurs
*
- * @param simulation
- * La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void init(SimulationContext context) throws Exception {
}
@@ -109,8 +103,7 @@
/**
* La condition qui doit etre vrai pour faire les actions
*
- * @param simulation
- * La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
* @return vrai si on souhaite que les actions soit faites
*/
public boolean condition(SimulationContext context, Date date, Metier metier)
@@ -152,8 +145,7 @@
* Si la condition est vrai alors cette action est executee avant le pas de
* temps de la simulation.
*
- * @param simulation
- * La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void preAction(SimulationContext context, Date date, Metier metier)
throws Exception {
@@ -274,8 +266,7 @@
* Si la condition est vrai alors cette action est executee apres le pas de
* temps de la simulation.
*
- * @param simulation
- * La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void postAction(SimulationContext context, Date date, Metier metier)
throws Exception {
@@ -321,7 +312,7 @@
resultmanager.addResult(date, pop, discard);
if (param_propSurvie > 0) {
MatrixND eff = popMon.getN(pop);
- //on r�ajoute les survivants aux effectifs
+ //on réajoute les survivants aux effectifs
for (MatrixIterator i = discard.iterator(); i
.next();) {
Object[] coord = i.getSemanticsCoordinates();
Modified: trunk/rules/TailleMin.java
===================================================================
--- trunk/rules/TailleMin.java 2009-08-25 12:15:50 UTC (rev 169)
+++ trunk/rules/TailleMin.java 2009-08-25 12:16:13 UTC (rev 170)
@@ -24,8 +24,8 @@
import fr.ifremer.isisfish.util.Doc;
/**
- * TailleMin.java
- *
+ * Cette methode remplace aussi TailleMinSurvieRejet si propSurvie est > 0
+ *
* Created: 30 novembre 2006
*
* @author anonymous <anonymous(a)labs.libre-entreprise.org>
@@ -34,24 +34,20 @@
* Last update: $Date: 2007-01-24 18:25:34 $
* by : $Author: bpoussin $
*/
-
-/**
- * Cette methode remplace aussi TailleMinSurvieRejet si propSurvie est > 0
- */
public class TailleMin extends AbstractRule {
/** to use log facility, just put in your code: log.info("..."); */
static private Log log = LogFactory.getLog(TailleMin.class);
- @Doc(value = "do the doc of param beginDate")
+ @Doc(value = "Begin date")
public Date param_beginDate = new Date(0);
- @Doc(value = "do the doc of param endDate")
+ @Doc(value = "End date")
public Date param_endDate = new Date(119);
- @Doc(value = "do the doc of param species")
+ @Doc(value = "Affected species")
public Species param_species = null;
- @Doc(value = "do the doc of param TailleMin")
+ @Doc(value = "Taille minimale")
public double param_TailleMin = 27;
- @Doc(value = "do the doc of param propSurvie")
+ @Doc(value = "Proportion de survie")
public double param_propSurvie = 0;
public String[] necessaryResult = {
@@ -71,16 +67,14 @@
* @return L'aide ou la description de la regle
*/
public String getDescription() throws Exception {
- // TODO
- return _("TODO description rule");
+ return _("");
}
/**
* Appelé au démarrage de la simulation, cette méthode permet d'initialiser
* des valeurs
*
- * @param simulation
- * La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void init(SimulationContext context) throws Exception {
}
@@ -103,8 +97,7 @@
/**
* La condition qui doit etre vrai pour faire les actions
*
- * @param simulation
- * La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
* @return vrai si on souhaite que les actions soit faites
*/
public boolean condition(SimulationContext context, Date date, Metier metier)
@@ -147,8 +140,7 @@
* Si la condition est vrai alors cette action est executée avant le pas de
* temps de la simulation.
*
- * @param simulation
- * La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void preAction(SimulationContext context, Date date, Metier metier)
throws Exception {
@@ -159,8 +151,7 @@
* Si la condition est vrai alors cette action est executée apres le pas de
* temps de la simulation.
*
- * @param simulation
- * La simulation pour lequel on utilise cette regle
+ * @param context La simulation pour lequel on utilise cette regle
*/
public void postAction(SimulationContext context, Date date, Metier metier)
throws Exception {
1
0
Author: chatellier
Date: 2009-08-25 12:15:50 +0000 (Tue, 25 Aug 2009)
New Revision: 169
Removed:
trunk/rules/RecrutementLangoustine.java
Log:
Suppression de RecrutementLangoustine (non g?\195?\169n?\195?\169rique)
Deleted: trunk/rules/RecrutementLangoustine.java
===================================================================
--- trunk/rules/RecrutementLangoustine.java 2009-08-25 12:15:22 UTC (rev 168)
+++ trunk/rules/RecrutementLangoustine.java 2009-08-25 12:15:50 UTC (rev 169)
@@ -1,184 +0,0 @@
-package rules;
-
-import static org.codelutin.i18n.I18n._;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import scripts.ResultName;
-
-import java.io.Writer;
-
-import org.codelutin.math.matrix.*;
-import org.codelutin.topia.TopiaContext;
-import org.codelutin.util.StringUtil;
-
-import fr.ifremer.isisfish.IsisFishDAOHelper;
-import fr.ifremer.isisfish.simulator.PopulationMonitor;
-import fr.ifremer.isisfish.simulator.SimulationContext;
-import fr.ifremer.isisfish.types.Date;
-import fr.ifremer.isisfish.types.Month;
-import fr.ifremer.isisfish.entities.*;
-import fr.ifremer.isisfish.rule.AbstractRule;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.ResultStorage;
-
-import fr.ifremer.isisfish.util.Doc; // pour pouvoir afficher une aide contextuelle (BUG#1605)
-
-/**
- * RecrutementLangoustine.java
- *
- * Created: 22 mars 2007
- *
- * @author stephanie MAHEVAS <smahevas(a)ifremer.fr>
- * @version $Revision: 1.1 $
- *
- * Last update: $Date: 2007-03-22 17:33:56 $
- * by : $Author: bpoussin $
- */
-public class RecrutementLangoustine extends AbstractRule {
-
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(RecrutementLangoustine.class);
-
- @Doc(value="do the doc of param recrut1998")
- public double param_recrut1998 =0;
- @Doc(value="do the doc of param recrut1999")
- public double param_recrut1999 =0;
- @Doc(value="do the doc of param recrut2000")
- public double param_recrut2000 =0;
- @Doc(value="do the doc of param recrut2001")
- public double param_recrut2001 =0;
- @Doc(value="do the doc of param recrut2002")
- public double param_recrut2002 =0;
- @Doc(value="do the doc of param recrut2003")
- public double param_recrut2003 =0;
- @Doc(value="do the doc of param recrut2004")
- public double param_recrut2004 =0;
- @Doc(value="do the doc of param recrut2005")
- public double param_recrut2005 =0;
-
- public double [] recru = null;
-
- public String [] necessaryResult = {
- // put here all necessary result for this rule
- // example:
- // ResultName.MATRIX_BIOMASS,
- // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
- };
-
- 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
- */
- public String getDescription() throws Exception {
- // TODO
- return _("TODO description rule");
- }
-
- /**
- * Appelé au démarrage de la simulation, cette méthode permet d'initialiser
- * des valeurs
- * @param simulation La simulation pour lequel on utilise cette regle
- */
- public void init(SimulationContext context) throws Exception {
- // remarque on pourrait aussi avoir un seul parametre de regle
- // par exemple param_recru_depuis_1998 = "0;0;0;0;0;0;0;0";
- // on ferait alors
- // recru = StringUtil.toArrayDouble(param_recru_depuis_1998.split(";"));
-
- recru = new double[]{
- param_recrut1998,
- param_recrut1999,
- param_recrut2000,
- param_recrut2001,
- param_recrut2002,
- param_recrut2003,
- param_recrut2004,
- param_recrut2005,
- };
- }
- /**
- * La condition qui doit etre vrai pour faire les actions
- * @param simulation La simulation pour lequel on utilise cette regle
- * @return vrai si on souhaite que les actions soit faites
- */
- public boolean condition(SimulationContext context, Date date, Metier metier) throws Exception {
- boolean result = false;
- if (date.getMonth().equals(Month.SEPTEMBER) ||
- date.getMonth().equals(Month.OCTOBER)
- || date.getMonth().equals(Month.NOVEMBER)
- ||date.getMonth().equals(Month.DECEMBER)) {
- result = true;
- }
- return result;
-/*
-writeln("recrutement CIEM");
-var mois = p.date.getMois().getNumMois();
-//si le recrutement a lieu en octobre
-if( mois==8 ||mois==9 || mois==10 || mois==11){
-//??&& p.oprfaite==false{
-var result = true;
-}
- return result ;
-*/
-
- }
-
- /**
- * Si la condition est vrai alors cette action est executée avant
-le pas
- * de temps de la simulation.
- * @param simulation La simulation pour lequel on utilise cette regle
- */
- public void preAction(SimulationContext context, Date date, Metier metier) throws Exception {
- TopiaContext db = context.getDB();
-
- PopulationDAO popDao = IsisFishDAOHelper.getPopulationDAO(db);
- Population pop = popDao.findByName("nephrops");
- PopulationGroup group0 = pop.getPopulationGroup().get(0);
-
- ZoneDAO zoneDao = IsisFishDAOHelper.getZoneDAO(db);
- Zone zone1 = zoneDao.findByName("zone L21E7");
- Zone zone2 = zoneDao.findByName("zone L21E8");
- Zone zone3 = zoneDao.findByName("zone L22E6");
- Zone zone4 = zoneDao.findByName("zone L22E7");
- Zone zone5 = zoneDao.findByName("zone L23E5");
- Zone zone6 = zoneDao.findByName("zone L23E6");
- Zone zone7 = zoneDao.findByName("zone L23E7");
- Zone zone8 = zoneDao.findByName("zone L24E5");
- Zone zone9 = zoneDao.findByName("zone L24E6");
-
- int year = date.getYear();
- MatrixND matN = context.getPopulationMonitor().getN(pop);
-
- double coefR =4/(Math.exp(-0.6/12))*(1+ Math.exp(-0.3/12)+ Math.exp(-0.6/12)+ Math.exp(-0.9/12));
-
- double R = recru[year] * coefR / 9.0;
-
- matN.setValue(group0, zone1, R);
- matN.setValue(group0, zone2, R);
- matN.setValue(group0, zone3, R);
- matN.setValue(group0, zone4, R);
- matN.setValue(group0, zone5, R);
- matN.setValue(group0, zone6, R);
- matN.setValue(group0, zone7, R);
- matN.setValue(group0, zone8, R);
- matN.setValue(group0, zone9, R);
-
- }
-
- /**
- * Si la condition est vrai alors cette action est executée apres le pas
- * de temps de la simulation.
- * @param simulation La simulation pour lequel on utilise cette regle
- */
- public void postAction(SimulationContext context, Date date, Metier metier) throws Exception {
- // TODO
- }
-
-}
\ No newline at end of file
1
0
Author: chatellier
Date: 2009-08-25 12:15:22 +0000 (Tue, 25 Aug 2009)
New Revision: 168
Added:
trunk/rules/TotalClosure.java
Log:
Ajout de l'export TotalClosure
Added: trunk/rules/TotalClosure.java
===================================================================
--- trunk/rules/TotalClosure.java (rev 0)
+++ trunk/rules/TotalClosure.java 2009-08-25 12:15:22 UTC (rev 168)
@@ -0,0 +1,119 @@
+package rules;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixND;
+
+import scripts.ResultName;
+import scripts.SiMatrix;
+import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.entities.StrategyMonthInfo;
+import fr.ifremer.isisfish.rule.AbstractRule;
+import fr.ifremer.isisfish.simulator.MetierMonitor;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.types.Month;
+
+/**
+ * Remplace aussi Cantonnement Engin.
+ *
+ * Created: 29 aout 2007
+ * @author sigrid
+ * @version $Revision$
+ */
+public class TotalClosure extends AbstractRule {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(TotalClosure.class);
+
+ public Date param_beginDate = new Date(100);
+ public Date param_endDate = new Date(119);
+ public Month param_beginMonth = Month.JANUARY;
+ public Month param_endMonth = Month.JANUARY;
+
+ public String[] necessaryResult = {
+ ResultName.MATRIX_NO_ACTIVITY
+ };
+
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+ public String getDescription() throws Exception {
+ return _("Total closure of the fishery");
+ }
+
+ /**
+ * Appelé au démarrage de la simulation, cette methode permet d'initialiser des valeurs.
+ * @param context La simulation pour lequel on utilise cette regle
+ */
+ public void init(SimulationContext context) throws Exception {
+ }
+
+ /**
+ * La condition qui doit etre vrai pour faire les actions.
+ * @param context La simulation pour lequel on utilise cette regle
+ * @return vrai si on souhaite que les actions soit faites
+ */
+ public boolean condition(SimulationContext context, Date date, Metier metier)
+ throws Exception {
+ boolean result = true;
+ if (date.before(param_beginDate)) {
+ result = false;
+ } else if (date.after(param_endDate)) {
+ result = false;
+ }
+
+ if (date.getMonth().before(param_beginMonth)) {
+ result = false;
+ } else if (date.getMonth().after(param_endMonth)) {
+ result = false;
+ }
+ return result;
+ }
+
+ /**
+ * 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
+ */
+ public void preAction(SimulationContext context, Date date, Metier metier)
+ throws Exception {
+ MetierMonitor metierMon = context.getMetierMonitor();
+
+ //MetierSeasonInfo infoMetier = metier.getMetierSeasonInfo(date
+ // .getMonth());
+
+ SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
+ MatrixND noActivity = metierMon.getOrCreateNoActivity(date,
+ ResultName.MATRIX_NO_ACTIVITY, siMatrix.getStrategies(date),
+ siMatrix.getMetiers(date));
+ metierMon.addforbiddenMetier(metier);
+ List<Strategy> strategies = siMatrix.getStrategies(date);
+
+ for (Strategy str : strategies) {
+ StrategyMonthInfo info = str.getStrategyMonthInfo(date.getMonth());
+ double prop = info.getProportionMetier(metier);
+ if (prop != 0) {
+ noActivity.setValue(str, metier, prop);
+ info.setProportionMetier(metier, 0);
+ }
+ }
+ }
+
+ /**
+ * 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
+ */
+ public void postAction(SimulationContext context, Date date, Metier metier)
+ throws Exception {
+ // nothing
+ }
+
+}
Property changes on: trunk/rules/TotalClosure.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
1
0
Author: chatellier
Date: 2009-08-25 12:15:04 +0000 (Tue, 25 Aug 2009)
New Revision: 167
Added:
trunk/rules/EffortReduction.java
Log:
Ajout de l'export EffortReduction
Added: trunk/rules/EffortReduction.java
===================================================================
--- trunk/rules/EffortReduction.java (rev 0)
+++ trunk/rules/EffortReduction.java 2009-08-25 12:15:04 UTC (rev 167)
@@ -0,0 +1,139 @@
+package rules;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import scripts.SiMatrix;
+import fr.ifremer.isisfish.entities.Metier;
+import fr.ifremer.isisfish.entities.Strategy;
+import fr.ifremer.isisfish.rule.AbstractRule;
+import fr.ifremer.isisfish.simulator.SimulationContext;
+import fr.ifremer.isisfish.types.Date;
+import fr.ifremer.isisfish.util.Doc;
+
+/**
+ * EffortReduction.java
+ *
+ * Created: 3 septembre 2008
+ *
+ * @author anonymous <anonymous(a)labs.libre-entreprise.org>
+ * @version $Revision$
+ */
+public class EffortReduction extends AbstractRule {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(EffortReduction.class);
+
+ @Doc("Begin date")
+ public Date param_beginDate = new Date(0);
+ @Doc("End date")
+ public Date param_endDate = new Date(59);
+
+ @Doc("Pourcentage de reduction d effort applique.")
+ public double param_PercentReduction = 0.5;
+
+ boolean first = true;
+
+ protected String[] necessaryResult = {};
+
+ /**
+ * @return the necessaryResult
+ */
+ 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
+ */
+ public String getDescription() {
+ return _("Reduce monthly effort of each strategy of the percent indicated");
+ }
+
+ /**
+ * Appele au demarrage de la simulation, cette methode permet d'initialiser
+ * des valeurs.
+ * @param context La simulation pour lequel on utilise cette regle
+ */
+ public void init(SimulationContext context) throws Exception {
+ }
+
+ /**
+ * La condition qui doit etre vrai pour faire les actions
+ * @param context La simulation pour lequel on utilise cette regle
+ * @return vrai si on souhaite que les actions soit faites
+ */
+ public boolean condition(SimulationContext context, Date date, Metier metier)
+ throws Exception {
+
+ boolean result = true;
+ if (date.before(param_beginDate)) {
+ result = false;
+ } else if (date.after(param_endDate)) {
+ result = false;
+ }
+ if (result)
+ System.out.println("condition vraie");
+ return result;
+ }
+
+ /**
+ * 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
+ */
+ public void preAction(SimulationContext context, Date date, Metier metier)
+ throws Exception {
+ // shinte la boucle metier
+ if (first) {
+ first = false;
+ SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
+ List<Strategy> strs = siMatrix.getStrategies(date);
+ for (Strategy str : strs) {
+ System.out.println("strategy evaluee : " + str.getName());
+
+ /* Dans un premiere temps tant que l inactivit� est un entier on utilise
+ * la proportion du nombre de bateaux de la strategie pour reduire l effort
+ * ce qu on ferait aussi pour une mesure de reduction du nombre de bateaux mais
+ * comme actuellement on ne tient pas compte de l economie... ca revient au meme
+ * En fait passer par l inactivit� n est pas la meilleure facon de modifier
+ * l effort le mieux serait d agir sur un autre coeff qui est multipli� a
+ * l effort (Fstd ou ciblage) car comme ca le code serait generique mais on
+ * ne verrait pas que l effort nominal est modifi�...
+ */
+
+ double propOld = str.getProportionSetOfVessels();
+ double newProp = propOld * (1 - param_PercentReduction);
+ str.setProportionSetOfVessels(newProp);
+
+ /* int Inact = str.getStrategyMonthInfo(date.getMonth()).getMinInactivityDays();
+ System.out.println("inactivity old = "+ Inact);
+ int nbDays = date.getMonth().getNumbersOfDays();
+ System.out.println("nbDays = "+nbDays);
+ double newInact = nbDays-((nbDays-Inact)*(1-param_PercentReduction));
+ System.out.println("newInact = "+newInact);
+ int ni = (int) newInact ;
+ System.out.println("ni = "+ ni);
+ str.getStrategyMonthInfo(date.getMonth()).setMinInactivityDays(ni);
+ System.out.println("setMinInactivityDays : " + str.getStrategyMonthInfo(date.getMonth()).getMinInactivityDays());
+ */
+ }
+ }
+ }
+
+ /**
+ * 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
+ */
+ public void postAction(SimulationContext context, Date date, Metier metier)
+ throws Exception {
+ first = true;
+ }
+
+}
Property changes on: trunk/rules/EffortReduction.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL"
1
0
Author: chatellier
Date: 2009-08-25 12:14:30 +0000 (Tue, 25 Aug 2009)
New Revision: 166
Modified:
trunk/exports/Abundances.java
trunk/exports/Biomasses.java
trunk/exports/MetierZone.java
trunk/exports/OwnerMargin.java
trunk/exports/VesselMargin.java
Log:
Mise ?\195?\160 jour de la description des exports
Modified: trunk/exports/Abundances.java
===================================================================
--- trunk/exports/Abundances.java 2009-08-25 12:07:41 UTC (rev 165)
+++ trunk/exports/Abundances.java 2009-08-25 12:14:30 UTC (rev 166)
@@ -48,7 +48,7 @@
}
public String getDescription() {
- return _("Export les abondances en nombre tableau avec des lignes pop;id;zone;date;nombre.");
+ return _("Exporte les abondances en nombre tableau avec des lignes pop;id;zone;date;nombre.");
}
public void export(SimulationStorage simulation, Writer out) throws Exception {
Modified: trunk/exports/Biomasses.java
===================================================================
--- trunk/exports/Biomasses.java 2009-08-25 12:07:41 UTC (rev 165)
+++ trunk/exports/Biomasses.java 2009-08-25 12:14:30 UTC (rev 166)
@@ -49,7 +49,7 @@
}
public String getDescription() {
- return _("Export les biomasses tableau avec des lignes pop;id;zone;date;nombre");
+ return _("Exporte les biomasses tableau avec des lignes pop;id;zone;date;nombre");
}
public void export(SimulationStorage simulation, Writer out) throws Exception {
Modified: trunk/exports/MetierZone.java
===================================================================
--- trunk/exports/MetierZone.java 2009-08-25 12:07:41 UTC (rev 165)
+++ trunk/exports/MetierZone.java 2009-08-25 12:14:30 UTC (rev 166)
@@ -10,11 +10,9 @@
import scripts.ResultName;
-import fr.ifremer.isisfish.entities.*;
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.types.Date;
import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.ResultStorage;
/**
* MetierZone.java
Modified: trunk/exports/OwnerMargin.java
===================================================================
--- trunk/exports/OwnerMargin.java 2009-08-25 12:07:41 UTC (rev 165)
+++ trunk/exports/OwnerMargin.java 2009-08-25 12:14:30 UTC (rev 166)
@@ -15,7 +15,6 @@
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.types.Date;
import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.ResultStorage;
/**
* OwnerMargin.java
@@ -50,7 +49,7 @@
}
public String getDescription() {
- return _("cvs out strategy;date;value");
+ return _("Exporte les profits du patrons, retourne un tableau strategy;date;value");
}
public void export(SimulationStorage simulation, Writer out) throws Exception {
Modified: trunk/exports/VesselMargin.java
===================================================================
--- trunk/exports/VesselMargin.java 2009-08-25 12:07:41 UTC (rev 165)
+++ trunk/exports/VesselMargin.java 2009-08-25 12:14:30 UTC (rev 166)
@@ -15,7 +15,6 @@
import fr.ifremer.isisfish.export.Export;
import fr.ifremer.isisfish.types.Date;
import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.datastore.ResultStorage;
/**
* VesselMargin.java
1
0
Author: chatellier
Date: 2009-08-25 12:07:41 +0000 (Tue, 25 Aug 2009)
New Revision: 165
Added:
trunk/analyseplans/CalibrationSimplexePasVariable2Capturabilite.java
trunk/analyseplans/ExempleSimulationsIndependantes.java
Removed:
trunk/analyseplans/Calibration.java
trunk/analyseplans/Max.java
Log:
Rename analyse plans (update docs, etc...)
Deleted: trunk/analyseplans/Calibration.java
===================================================================
--- trunk/analyseplans/Calibration.java 2009-08-25 10:53:51 UTC (rev 164)
+++ trunk/analyseplans/Calibration.java 2009-08-25 12:07:41 UTC (rev 165)
@@ -1,370 +0,0 @@
-package analyseplans;
-
-import static org.codelutin.i18n.I18n._;
-
-import java.io.File;
-import java.io.FileReader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MatrixFactory;
-import org.codelutin.math.matrix.MatrixIterator;
-import org.codelutin.math.matrix.MatrixND;
-import org.codelutin.topia.TopiaContext;
-import org.codelutin.util.FileUtil;
-import org.codelutin.util.StringUtil;
-
-import scripts.ResultName;
-import fr.ifremer.isisfish.datastore.ResultStorage;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.entities.Population;
-import fr.ifremer.isisfish.entities.PopulationGroup;
-import fr.ifremer.isisfish.entities.PopulationSeasonInfo;
-import fr.ifremer.isisfish.simulator.AnalysePlan;
-import fr.ifremer.isisfish.simulator.AnalysePlanContext;
-import fr.ifremer.isisfish.types.Month;
-import fr.ifremer.isisfish.util.Doc;
-
-/**
- * Calibration.java
- *
- * Created: 8 mars 2007
- *
- * @author <>
- * @version $Revision: 1.2 $
- *
- * Last update: $Date: 2007-11-02 17:43:14 $ by : $Author: bpoussin $
- */
-public class Calibration implements AnalysePlan {
-
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(Calibration.class);
-
- protected enum State {
- STATE_INIT, STATE_0, STATE_1, STATE_2, STATE_3, STATE_4
- };
-
- //parametres de la simu 3 points initiaux d un simplex d ordre 2
- @Doc(value = "do the doc of param Population")
- public Population param_Population = null;
- @Doc(value = "do the doc of param M1 (devient un parametre du plan d analyse)")
- public String param_M1 = "1e-5;1e-6";// devient un parametre du plan d analyse
- @Doc(value = "do the doc of param M2 (devient un parametre du plan d analyse)")
- public String param_M2 = "2e-4;2e-5";// devient un parametre du plan d analyse
-
- @Doc(value = "do the doc of param M3 (devient un parametre du plan d analyse)")
- public String param_M3 = "1e-4;1e-6";// devient un parametre du plan d analyse
- @Doc(value = "do the doc of param pas (devient un parametre du plan d analyse)")
- public String param_pas = "1e-5";// devient un parametre du plan d analyse
- @Doc(value = "nom + chemin du fichier contenant les debarquements observes par groupe pour la derniere annee")
- public String param_nomfichier_debarquements = "";//nom + chemin du fichier contenant les debarquements observes par groupe pour la derniere annee
-
- protected File debarquementsObserves;
- protected MatrixND matrixDebarquement;
-
- protected State state = State.STATE_INIT;
- protected Experiences experiences = new Experiences();
-
- /**
- * @return the experiences
- */
- public Experiences getExperiences() {
- return this.experiences;
- }
-
- public String[] necessaryResult = { ResultName.MATRIX_LANDING_PER_MET };
-
- @Override
- public String[] getNecessaryResult() {
- return this.necessaryResult;
- }
-
- /**
- * Permet d'afficher a l'utilisateur une aide sur le plan.
- *
- * @return L'aide ou la description du plan
- */
- @Override
- public String getDescription() throws Exception {
- return _("Simplexe");
- }
-
- /**
- * Appele au demarrage de la simulation, cette methode permet d'initialiser
- * des valeurs
- *
- * @param simulation
- * La simulation pour lequel on utilise cette regle
- */
- @Override
- public void init(AnalysePlanContext context) throws Exception {
- if (param_nomfichier_debarquements == null
- || "".equals(param_nomfichier_debarquements)) {
- debarquementsObserves = FileUtil.getFile(".*.csv",
- "fichier csv séparateur ';'");
- } else {
- debarquementsObserves = new File(param_nomfichier_debarquements);
- }
- // int nbYear = context.getParam().getNumberOfYear();
- TopiaContext db = context.getParam().getRegion().getStorage()
- .beginTransaction();
- Population pop = (Population) db.findByTopiaId(param_Population
- .getTopiaId());
-
- int nbGroup = pop.sizePopulationGroup();
- matrixDebarquement = MatrixFactory.getInstance().create(
- new int[] { nbGroup });
- // List<PopulationGroup> groups = pop.getPopulationGroup();
- // matrixDebarquement = MatrixFactory.getInstance().create(new List[]{groups});
-
- matrixDebarquement.importCSV(new FileReader(debarquementsObserves),
- new int[] { 0 });
- db.closeContext();
- }
-
- /**
- * Call before each simulation
- *
- * @param context
- * plan context
- * @param nextSimulation
- * storage used for next simulation
- * @return true if we must do next simulation, false to stop plan
- * @throws Exception
- */
- @Override
- public boolean beforeSimulation(AnalysePlanContext context,
- SimulationStorage nextSimulation) throws Exception {
- boolean doNext = true;
-
- int number = context.getNumber();
-
- if (number < 3) {
- String[] M1 = param_M1.split(";");
- String[] M2 = param_M2.split(";");
- String[] M3 = param_M3.split(";");
- double[] q1 = StringUtil.toArrayDouble(M1[0], M2[0], M3[0]);
- double[] q2 = StringUtil.toArrayDouble(M1[1], M2[1], M3[1]);
-
- experiences.getExperience(number).q1 = q1[number];
- experiences.getExperience(number).q2 = q2[number];
-
- changeDB(experiences.getExperience(number), nextSimulation);
- } else {
- double q1 = 0;
- double q2 = 0;
-
- double lastCritere = experiences.getExperience(number - 1).criteria;
- double g1 = (experiences.current.get(2).q1 + experiences.current
- .get(1).q1) / 2.0;
- double g2 = (experiences.current.get(2).q2 + experiences.current
- .get(1).q2) / 2.0;
-
- double worst1 = experiences.current.get(0).q1;
- double worst2 = experiences.current.get(0).q2;
-
- if (state == State.STATE_INIT) {
- // on fait la 4eme simulation dans tous les cas
- state = State.STATE_0;
- Collections.sort(experiences.current);
- q1 = 2 * g1 - worst1;
- q2 = 2 * g2 - worst2;
- } else if (state == State.STATE_0) {
- // on fait la 5eme avec des q qui dependent de la 4eme dans le dernier cas
- if (lastCritere < experiences.current.get(0).criteria) {
- state = State.STATE_1;
- q1 = g1 - (g1 - worst1) / 2.0;
- q2 = g2 - (g2 - worst2) / 2.0;
- } else if (lastCritere < experiences.current.get(1).criteria) {
- state = State.STATE_2;
- q1 = g1 + (g1 - worst1) / 2.0;
- q2 = g2 + (g2 - worst2) / 2.0;
- } else if (lastCritere < experiences.current.get(2).criteria) {
- state = State.STATE_INIT;
- experiences.current.remove(3);
- } else { // dernier cas possible: if (lastCritere > experiences.current.get(2).critere) {
- state = State.STATE_4;
- q1 = experiences.current.get(3).q1 + g1 - worst1;
- q2 = experiences.current.get(3).q2 + g2 - worst2;
- }
- } else if (state == State.STATE_1) {
- // la derniere simulation a ete faite
- if (lastCritere > experiences.current.get(0).criteria) {
- experiences.current.remove(3);
- experiences.current.remove(0);
- } else {
- // FIXME on supprime les 2 derniere qui vient d'etre faite, on risque donc de boucler
- experiences.current.remove(4);
- experiences.current.remove(3);
- doNext = false;
- }
- state = State.STATE_INIT;
- } else if (state == State.STATE_2) {
- if (lastCritere > experiences.current.get(0).criteria) {
- experiences.current.remove(3);
- experiences.current.remove(0);
- } else {
- // FIXME on supprime les 2 derniere qui vient d'etre faite, on risque donc de boucler
- experiences.current.remove(4);
- experiences.current.remove(3);
- doNext = false;
- }
- state = State.STATE_INIT;
- } else if (state == State.STATE_4) {
- if (lastCritere > experiences.current.get(3).criteria) {
- experiences.current.remove(3);
- experiences.current.remove(0);
- } else {
- experiences.current.remove(4);
- experiences.current.remove(0);
- }
- state = State.STATE_INIT;
- }
-
- experiences.getExperience(number).q1 = q1;
- experiences.getExperience(number).q2 = q2;
-
- changeDB(experiences.getExperience(number), nextSimulation);
- }
-
- return doNext;
- }
-
- /**
- * Call after each simulation, compute criteria for last simulation
- *
- * @param context
- * plan context
- * @param nextSimulation
- * storage used for next simulation
- * @return true if we must do next simulation, false to stop plan
- * @throws Exception
- */
- @Override
- public boolean afterSimulation(AnalysePlanContext context,
- SimulationStorage lastSimulation) throws Exception {
- boolean doNext = true;
-
- int number = context.getNumber();
-
- ResultStorage result = lastSimulation.getResultStorage();
- log.fatal("sim: " + lastSimulation + " result: " + result);
- MatrixND L = result.getMatrix(param_Population,
- ResultName.MATRIX_LANDING_PER_MET);
- L = L.sumOverDim(0);// sum sur les mois, si on ajoute le pas (12) on peut sommer sur les annees
- L = L.sumOverDim(1);// sum sur les strategies
- L = L.sumOverDim(3);// sum sur les metiers
- L = L.sumOverDim(4);// sum sur les zones
- L = L.reduce(); // supprime les dim qui n ont qu un element
-
- double crit = 0;
- for (MatrixIterator g = L.iterator(); g.hasNext();) {
- g.next();
- int[] dim = g.getCoordinates();
- double obs = matrixDebarquement.getValue(dim);
- double simules = g.getValue();
- crit += Math.pow(obs - simules, 2);
- }
- experiences.getExperience(number).criteria = crit;
-
- return doNext;
- }
-
- /**
- * Modify nextSimulation database with q1 and q2 in exp.
- *
- * @param exp
- * @param nextSimulation
- * @throws Exception
- */
- protected void changeDB(Experience exp, SimulationStorage nextSimulation)
- throws Exception {
- TopiaContext db = nextSimulation.getStorage().beginTransaction();//ouvrir un context pour modifier les donnees
- Population pop = (Population) db.findByTopiaId(param_Population
- .getTopiaId());
- // autre solution moins efficace:
- // PopulationDAO popDAO = IsisFishDAOHelper.getPopulationDAO(db);
- // Population Nephrops = dao.findByName(param_Population.getName());
-
- MatrixND c = pop.getCapturability();
-
- for (MatrixIterator i = c.iterator(); i.hasNext();) {
- i.next();
-
- Object[] sem = i.getSemanticsCoordinates();
- PopulationGroup group = (PopulationGroup) sem[0];
- PopulationSeasonInfo season = (PopulationSeasonInfo) sem[1];
-
- if (season.getFirstMonth().after(Month.JULY) && group.getId() >= 18) { //mois >= aout
- i.setValue(exp.q2);
- } else {
- i.setValue(exp.q1);
- }
- }
- db.commitTransaction();
- db.closeContext();
- }
-
- public class Experiences {
- /** contains last simplex and potentialy 2 more simulation */
- protected List<Experience> current = new ArrayList<Experience>();
- /** contains all experience done */
- protected List<Experience> history = new ArrayList<Experience>();
-
- /**
- * @return the history
- */
- public List<Experience> getHistory() {
- return this.history;
- }
-
- /**
- * return experience requested, if this experience doesn't exist create
- * it.
- *
- * @param i
- * simulation number
- * @return experience with simulation number fixed if new experience is
- * returned
- */
- public Experience getExperience(int i) {
- Experience result;
- if (i < history.size()) {
- result = history.get(i);
- } else {
- result = new Experience();
- result.simNumber = i;
- history.add(i, result);
- current.add(result);
- }
- return result;
- }
- }
-
- /**
- * Use to keep q1, q2 and criteria of simulation
- *
- * @author poussin
- */
- public class Experience implements Comparable {
- public int simNumber;
- public double criteria;
- public double q1;
- public double q2;
-
- /**
- * Permit to order experience, first is experience with smallest
- * criteria
- */
- @Override
- public int compareTo(Object arg0) {
- Experience other = (Experience) arg0;
- int result = Double.compare(this.criteria, other.criteria);
- return result;
- }
- }
-
-}
Copied: trunk/analyseplans/CalibrationSimplexePasVariable2Capturabilite.java (from rev 161, trunk/analyseplans/Calibration.java)
===================================================================
--- trunk/analyseplans/CalibrationSimplexePasVariable2Capturabilite.java (rev 0)
+++ trunk/analyseplans/CalibrationSimplexePasVariable2Capturabilite.java 2009-08-25 12:07:41 UTC (rev 165)
@@ -0,0 +1,481 @@
+package analyseplans;
+
+import static org.codelutin.i18n.I18n._;
+
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.codelutin.math.matrix.MatrixFactory;
+import org.codelutin.math.matrix.MatrixIterator;
+import org.codelutin.math.matrix.MatrixND;
+import org.codelutin.topia.TopiaContext;
+import org.codelutin.util.FileUtil;
+import org.codelutin.util.StringUtil;
+
+import scripts.ResultName;
+import fr.ifremer.isisfish.datastore.ResultStorage;
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.entities.Population;
+import fr.ifremer.isisfish.entities.PopulationGroup;
+import fr.ifremer.isisfish.entities.PopulationSeasonInfo;
+import fr.ifremer.isisfish.simulator.AnalysePlan;
+import fr.ifremer.isisfish.simulator.AnalysePlanContext;
+import fr.ifremer.isisfish.util.Doc;
+
+/**
+ * CalibrationSimplexePasVariable2Capturabilite.
+ *
+ * Created: 17 septembre 2007
+ *
+ * @author <>
+ * @version $Revision: 1.27 $
+ *
+ * Last update: $Date: 2007/05/24 09:29:18 $
+ * by : $Author: bpoussin $
+ */
+/////***You can modify class name if you want
+/////***BUT attention : file name and class name must be the same (without the extention ".java"), ie here : "CalibrationSimplexePasVariable2Capturabilite"
+public class CalibrationSimplexePasVariable2Capturabilite implements
+ AnalysePlan {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory
+ .getLog(CalibrationSimplexePasVariable2Capturabilite.class);
+
+ enum State {
+ STATE_INIT, STATE_0, STATE_1, STATE_2, STATE_3, STATE_4
+ };
+
+ /////***here must appear the path to export the historic file ("Historic.csv")
+ //where q1, q2 and criteria computed at each simulation are written
+ /////***Attention : before beginning a new calibration rename your eventual
+ //old file Historic.csv otherwise it will be lost
+ protected File exportHistoric = new File("Historic.csv");
+ protected String exportHisto = "";
+
+ @Doc("Population which parameters are calibrated")
+ public Population param_Population = null;
+ @Doc("First initial point of the simplex: de la forme(\"xx;yy\")")
+ public String param_M1 = "2.42e-5;2.11e-6";// devient un parametre du plan d analyse
+ @Doc("Second initial point of the simplex")
+ public String param_M2 = "2.34e-5;2.59e-6";// devient un parametre du plan d analyse
+ @Doc("Third initial point of the simplex")
+ public String param_M3 = "2.59e-5;2.41e-6";// devient un parametre du plan d analyse
+
+ ///// ***put here the path and name of the file containing the data on which you calibrate your fichery ( here observed catches)
+ @Doc(value = "file name and path of observed landings")
+ public String param_nomfichier_debarquements = "Observedlandings2001-2003.csv";//in row : time ; in columns : age or length group
+ protected File debarquementsObserves;
+ protected MatrixND matrixDebarquement;
+
+ protected State state = State.STATE_INIT;
+ public Experiences experiences = new Experiences();
+ public String[] necessaryResult = { ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP };
+
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+ /**
+ * Permet d'afficher a l'utilisateur une aide sur le plan.
+ * @return L'aide ou la description du plan
+ */
+ public String getDescription() throws Exception {
+ return _("Calibration using variable step Simplex method (Walters): user gives a file of observations (here catches) by time step and group (.csv), output will try to approach oservations by changing the values of catchability");
+ }
+
+ /**
+ * Appele au demarrage de la simulation, cette methode permet d'initialiser
+ * des valeurs
+ * @param context La simulation pour lequel on utilise cette regle
+ */
+ public void init(AnalysePlanContext context) throws Exception {
+ if (param_nomfichier_debarquements == null || "".equals(param_nomfichier_debarquements)) {
+ debarquementsObserves = FileUtil.getFile(".*.csv", "fichier csv séparateur ';'");
+ } else {
+ debarquementsObserves = new File(param_nomfichier_debarquements);
+ }
+ int nbYear = context.getParam().getNumberOfYear();
+
+ //TopiaContext db = context.getParam().getRegion().getStorage().beginTransaction();
+ //Population pop = (Population) db.findByTopiaId(param_Population.getTopiaId());
+
+ /////*** specify dimention of the matrix containning observations (observed landings for instance)
+ /////*** numbers of group/columns : could be equal to your number of classes in ISIS but may also be different if your had only aggregated data
+ int nbGroup = 4;
+ /////*** enter number of observation per year (if you have observation by quarter put 4) / lines of the observations file
+ int nbTrim = nbYear * 4;
+ int[] dimMatrix = { nbTrim, nbGroup };
+ matrixDebarquement = MatrixFactory.getInstance().create(dimMatrix);
+ //matrixDebarquement = MatrixFactory.getInstance().create(new int[]{nbGroup});
+ // List<PopulationGroup> groups = pop.getPopulationGroup();
+ // matrixDebarquement = MatrixFactory.getInstance().create(new List[]{groups});
+ matrixDebarquement.importCSV(new FileReader(debarquementsObserves), new int[] { 0, 0 });
+ log.info("MatrixDebarquement : " + matrixDebarquement);
+ //db.closeContext();
+ }
+
+ double g1;
+ double g2;
+ double worst1;
+ double worst2;
+
+ /**
+ * Call before each simulation
+ * @param context plan context
+ * @param nextSimulation storage used for next simulation
+ * @return true if we must do next simulation, false to stop plan
+ * @throws Exception
+ */
+ public boolean beforeSimulation(AnalysePlanContext context,
+ SimulationStorage nextSimulation) throws Exception {
+ boolean doNext = true;
+ boolean doBoucle = true;
+ log.info("before simulation");
+
+ int number = context.getNumber();
+
+ if (number < 3) {
+ log.info("number<3");
+
+ String[] M1 = param_M1.split(";");
+ String[] M2 = param_M2.split(";");
+ String[] M3 = param_M3.split(";");
+
+ double[] q1 = StringUtil.toArrayDouble(M1[0], M2[0], M3[0]);
+ double[] q2 = StringUtil.toArrayDouble(M1[1], M2[1], M3[1]);
+ experiences.getExperience(number).q1 = q1[number];
+ experiences.getExperience(number).q2 = q2[number];
+
+ changeDB(experiences.getExperience(number), nextSimulation);
+
+ } else {
+
+ double q1 = 1000;
+ double q2 = 1000;
+ double lastCritere = experiences.getExperience(number - 1).criteria;
+ while (doBoucle) {
+ doBoucle = false;
+ if (state == State.STATE_INIT) {
+ doBoucle = false;
+ log.info("state init");
+
+ //ordonne les 3 premieres experiences selon leur critere
+ Collections.sort(experiences.current);
+ //log.info("SIMPLEXE : current 0 = " + experiences.current.get(0).criteria + "current 1 = " + experiences.current.get(1).criteria + "current 2 = " + experiences.current.get(2).criteria );
+ log.info("SIMPLEXE : current 0 = "
+ + experiences.current.get(0).criteria
+ + "current 1 = "
+ + experiences.current.get(1).criteria
+ + "current 2 = "
+ + experiences.current.get(2).criteria);
+ log.info("SIMPLEXE : Best q1 = "
+ + experiences.current.get(0).q1 + " q2 = "
+ + experiences.current.get(0).q2);
+ log.info("SIMPLEXE : NextBest q1 = "
+ + experiences.current.get(1).q1 + " q2 = "
+ + experiences.current.get(1).q2);
+ log.info("SIMPLEXE : Worst q1 = "
+ + experiences.current.get(2).q1 + " q2 = "
+ + experiences.current.get(2).q2);
+
+ //Calcul et evaluation de R
+ double g1 = (experiences.current.get(0).q1 + experiences.current
+ .get(1).q1) / 2.0;
+ double g2 = (experiences.current.get(0).q2 + experiences.current
+ .get(1).q2) / 2.0;
+ double worst1 = experiences.current.get(2).q1;
+ double worst2 = experiences.current.get(2).q2;
+
+ state = State.STATE_0;
+
+ q1 = 2 * g1 - worst1;
+ q2 = 2 * g2 - worst2;
+
+ log.info("R : q1 = " + q1 + " q2 = " + q2);
+
+ } else if (state == State.STATE_0) {
+ doBoucle = false;
+ log.info("state 0");
+
+ // on fait la 5eme avec des q qui dependent de la 4eme dans le dernier cas
+ //log.info("g1 = " + g1 + " " + "g2 = " + g2);
+ //log.info("worst1 = " + worst1 + " " + "worst2 = " + worst2);
+
+ if (lastCritere > experiences.current.get(2).criteria) {
+ log.info("State 0 : R : lastCtritere > current2 : R pire de W");
+ state = State.STATE_1;
+ //calcul de Cw
+ q1 = ((experiences.current.get(0).q1 + experiences.current
+ .get(1).q1) / 2.0)
+ - (((experiences.current.get(0).q1 + experiences.current
+ .get(1).q1) / 2.0) - experiences.current
+ .get(2).q1) / 2.0;
+ q2 = ((experiences.current.get(0).q2 + experiences.current
+ .get(1).q2) / 2.0)
+ - (((experiences.current.get(0).q2 + experiences.current
+ .get(1).q2) / 2.0) - experiences.current
+ .get(2).q2) / 2.0;
+ log.info("Cw : q1 = " + q1 + " q2 = " + q2);
+
+ } else if (lastCritere > experiences.current.get(1).criteria) {
+ log.info("State 0 :R : lastCritere > current 1 : R meilleur que W et moins bon que N");
+ state = State.STATE_2;
+ // calcul de Cr
+ q1 = ((experiences.current.get(0).q1 + experiences.current
+ .get(1).q1) / 2.0)
+ + (((experiences.current.get(0).q1 + experiences.current
+ .get(1).q1) / 2.0) - experiences.current
+ .get(2).q1) / 2.0;
+ q2 = ((experiences.current.get(0).q2 + experiences.current
+ .get(1).q2) / 2.0)
+ + (((experiences.current.get(0).q2 + experiences.current
+ .get(1).q2) / 2.0) - experiences.current
+ .get(2).q2) / 2.0;
+ log.info("Cr : q1 = " + q1 + " q2 = " + q2);
+
+ } else if (lastCritere > experiences.current.get(0).criteria) {
+ log.info("State 0 :R : lastCritere > current0 : R meilleur que N et moins bon que B");
+ state = State.STATE_INIT;
+ experiences.current.remove(2);//remove(3)avant
+ doBoucle = true;
+ log.info("remove W, simplex BNR");
+
+ } else { // dernier cas possible: if (lastCritere < experiences.current.get(0).critere) {
+ log.info("State 0 :R : lastCritere < current 0 : R meilleur que B, calcul de E");
+ state = State.STATE_4;
+
+ q1 = experiences.getExperience(number - 1).q1
+ + (experiences.current.get(0).q1 + experiences.current
+ .get(1).q1) / 2.0
+ - experiences.current.get(2).q1;
+ q2 = experiences.getExperience(number - 1).q2
+ + (experiences.current.get(0).q2 + experiences.current
+ .get(1).q2) / 2.0
+ - experiences.current.get(2).q2;
+ //q1 = experiences.current.get(3).q1 + (experiences.current.get(0).q1 + experiences.current.get(1).q1) / 2.0 - experiences.current.get(2).q1;
+ //q2 = experiences.current.get(3).q2 + (experiences.current.get(0).q2 + experiences.current.get(1).q2) / 2.0 - experiences.current.get(2).q2;
+ log.info("E : q1 = " + q1 + " q2 = " + q2);
+ }
+
+ } else if (state == State.STATE_1) {
+ log.info("state 1, simplex BNCw");
+ experiences.current.remove(3);
+ experiences.current.remove(2);
+ state = State.STATE_INIT;
+ doBoucle = true;
+
+ } else if (state == State.STATE_2) {
+ log.info("state 2, simplex BNCr");
+ experiences.current.remove(3);
+ experiences.current.remove(2);
+ state = State.STATE_INIT;
+ doBoucle = true;
+
+ } else if (state == State.STATE_4) {
+ log.info("state 4 :comparaison de E a B");
+ doBoucle = true;
+ if (lastCritere < experiences.current.get(0).criteria) {
+ log.info("E meilleur que B, remove 2 et 3 : simplex BNE");
+ experiences.current.remove(3);
+ experiences.current.remove(2);
+ } else {
+ log.info("E moins bon que B, remove 2 et 4, simplex BNR");
+ experiences.current.remove(4);
+ experiences.current.remove(2);
+ }
+
+ state = State.STATE_INIT;
+ }
+
+ }//fin du while
+ //on remplit la table experiences
+ experiences.getExperience(number).q1 = q1;
+ experiences.getExperience(number).q2 = q2;
+
+ log.info("on change Q dans la DB avec : q1 = " + q1 + " " + "q2 = " + q2);
+
+ // on change la valeur de q dans la DB
+ changeDB(experiences.getExperience(number), nextSimulation);
+ }// fin du else (number > 3)
+ return doNext;
+ }// fin du before simulation
+
+ /**
+
+ * Call after each simulation, compute criteria for last simulation
+ * @param context plan context
+ * @param lastSimulation storage used for next simulation
+ * @return true if we must do next simulation, false to stop plan
+ * @throws Exception
+ */
+ public boolean afterSimulation(AnalysePlanContext context,
+ SimulationStorage lastSimulation) throws Exception {
+ boolean doNext = true;
+ log.info("after simulation");
+ int number = context.getNumber();
+ ResultStorage result = lastSimulation.getResultStorage();
+
+ /////*** Simulated catches are cumulated over strategies, areas and metiers
+
+ MatrixND L2 = result.getMatrix(param_Population,
+ ResultName.MATRIX_CATCH_WEIGHT_PER_STRATEGY_MET_PER_ZONE_POP);
+ // log.info("dim de L2" + " " + Arrays.toString(L2.getDim()));
+ /////*** If some strategies, metiers or areas must not be included in the cumulated catches see below else put "//" at the beginning of line 297 and replace "L2" by "L" at line 289
+ /////*** the strategies or so to exclude must be at the begining or end of the list you enter in the parameters interface
+ /////*** fill the line MatrixND L = L2.getSubMatrix(a,b,c).copy(); as follow :
+ /////*** a = 1 if you want to exclude strategies, 2 if metiers and 4 if areas
+ /////*** b = indice of the first object considered
+ /////*** c = number of object to keep after b, b included
+ MatrixND L = L2.getSubMatrix(1, 2, 4).copy(); // for instance : keep strategies 2,3,4,5
+ //log.info("sous matrice extraite");
+ L = L.sumOverDim(1);// sum over strategies
+ L = L.sumOverDim(2);// sum over metiers
+ L = L.sumOverDim(4);// sum over zones
+ log.info("sommes sur les strategies, metiers et zones faites");
+
+ /////*** if observations are cumulated by groups else put "//" at the beginning of the following line
+ L = L.sumOverDim(3);
+ /////*** else if number of groups in your database differs from number of groups in observations ... write me an e-mail
+
+ ////*** if observations are cumulated over quarter put 3, over year 12, else put "//" at the beginning of the following line
+ L = L.sumOverDim(0, 3);
+
+ L = L.reduce();
+
+ ///////////////////Calcul du critere//////////////////
+ log.info("calcul du critere");
+ log.info("dim de L" + " " + Arrays.toString(L.getDim()));
+ log.info("dim de obs" + " "
+ + Arrays.toString(matrixDebarquement.getDim()));
+ double crit = 0;
+ for (MatrixIterator g = L.iterator(); g.hasNext();) {
+ g.next();
+ //boucle sur les trimestres et les classes d age
+
+ int[] dim = g.getCoordinates();
+
+ double obs = matrixDebarquement.getValue(dim);
+ double simules = g.getValue();
+
+ crit += Math.pow(obs - simules, 2); // crit = crit + (obs-simules)^2
+ }// fin du for
+ log.info("critere " + number + " = " + crit);
+
+ //ajoute le critere dans la table experiences
+ experiences.getExperience(number).criteria = crit;
+
+ //ecriture de la table historic
+ exportHisto += experiences.getExperience(number).q1 + ";"
+ + experiences.getExperience(number).q2 + ";"
+ + experiences.getExperience(number).criteria + "\n";
+ org.codelutin.util.FileUtil.writeString(exportHistoric, exportHisto);
+
+ return doNext;
+
+ }// fin du after simulation
+
+ /**
+ * Modify nextSimulation database with q1 and q2 in exp.
+ *
+ * @param exp
+ * @param nextSimulation
+ * @throws Exception
+ */
+ protected void changeDB(Experience exp, SimulationStorage nextSimulation)
+ throws Exception {
+ //methode appelee dans before simualtion
+ TopiaContext db = nextSimulation.getStorage().beginTransaction();//ouvrir un context pour modifier les donnees
+ Population pop = (Population) db.findByTopiaId(param_Population.getTopiaId()); //reccupere la pop ciblee
+ MatrixND c = pop.getCapturability(); // reccupere la matrice de capturabilité
+
+ //log.info("Pour cette simulation : q1 = " + exp.q1 + ";" + "q2 = " + exp.q2 );
+
+ /////*** that is where you explain how to fill the catchability matrix with q1 and q2
+ for (MatrixIterator i = c.iterator(); i.hasNext();) {
+ i.next();
+ Object[] sem = i.getSemanticsCoordinates();
+ PopulationGroup group = (PopulationGroup) sem[0];
+ //PopulationSeasonInfo season = (PopulationSeasonInfo) sem[1];
+
+ ////*** exemple when q2 corresponds to the 12 first groups (groups 0 to 11)
+ if (group.getId() < 12) {
+ i.setValue(exp.q2);
+ } else {
+ i.setValue(exp.q1);
+ }
+
+ /////*** exemple when it depends on seasons and groups
+ /* if (season.getFirstMonth().after(Month.JULY) && group.getId() >=18){ //month >= aout && groupID >= 18
+ i.setValue(exp.q2);
+ }else {
+ i.setValue(exp.q1);
+ }
+ */
+
+ }//fin du for
+
+ db.commitTransaction(); // effectue la modification
+ db.closeContext(); // ferme le context
+ }
+
+ static public class Experiences {
+ // cree la liste experiences ou sont stoqués q1,q2 et critere pour chaque simulation
+
+ /** contains last simplex and potentialy 2 more simulation */
+ public List<Experience> current = new ArrayList<Experience>();
+
+ /** contains all experience done */
+ public List<Experience> history = new ArrayList<Experience>();
+
+ /**
+ * return experience requested, if this experience doesn't exist
+ * create it.
+ *
+ * @param i simulation number
+ * @return experience with simulation number fixed if new experience
+ * is returned
+ */
+ public Experience getExperience(int i) {
+ Experience result;
+ if (i < history.size()) {
+ result = history.get(i);
+ } else {
+ result = new Experience();
+ result.simNumber = i;
+ history.add(i, result);
+ current.add(result);
+ }
+ return result;
+ }//fin de la definition de getExperience
+
+ /**
+ * @return the history
+ */
+ public List<Experience> getHistory() {
+ return this.history;
+ }
+ }// fin de la creation des listes experiences
+
+ static public class Experience implements Comparable<Experience> {
+ public int simNumber;
+ public double criteria;
+ public double q1;
+ public double q2;
+
+ /**
+ * Permit to order experience, first is experience with smallest criteria
+ */
+ public int compareTo(Experience other) {
+ int result = Double.compare(this.criteria, other.criteria);
+ return result;
+ }
+ }
+
+}
\ No newline at end of file
Copied: trunk/analyseplans/ExempleSimulationsIndependantes.java (from rev 161, trunk/analyseplans/Max.java)
===================================================================
--- trunk/analyseplans/ExempleSimulationsIndependantes.java (rev 0)
+++ trunk/analyseplans/ExempleSimulationsIndependantes.java 2009-08-25 12:07:41 UTC (rev 165)
@@ -0,0 +1,96 @@
+package analyseplans;
+
+import static org.codelutin.i18n.I18n._;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import fr.ifremer.isisfish.datastore.SimulationStorage;
+import fr.ifremer.isisfish.simulator.AnalysePlanContext;
+import fr.ifremer.isisfish.simulator.AnalysePlanIndependent;
+import fr.ifremer.isisfish.util.Doc;
+
+/**
+ * ExempleSimulationsIndependantes.java
+ *
+ * Created: 2 mars 2007
+ *
+ * @author bpoussin <bpoussin(a)labs.libre-entreprise.org>
+ * @version $Revision: 1.2 $
+ *
+ * Last update: $Date: 2007-03-09 15:27:21 $ by : $Author: bpoussin $
+ */
+public class ExempleSimulationsIndependantes implements AnalysePlanIndependent {
+
+ /** to use log facility, just put in your code: log.info("..."); */
+ static private Log log = LogFactory.getLog(ExempleSimulationsIndependantes.class);
+
+ @Doc(value = "do the doc of param max")
+ public int param_max = 10;
+
+ public String[] necessaryResult = {
+ // put here all necessary result for this rule
+ // example:
+ // ResultName.MATRIX_BIOMASS,
+ // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
+ };
+
+ @Override
+ public String[] getNecessaryResult() {
+ return this.necessaryResult;
+ }
+
+ /**
+ * Permet d'afficher a l'utilisateur une aide sur le plan.
+ *
+ * @return L'aide ou la description du plan
+ */
+ @Override
+ public String getDescription() throws Exception {
+ return _("Permit to specify maximum simulation numbers");
+ }
+
+ /**
+ * Appelé au démarrage de la simulation, cette méthode permet d'initialiser
+ * des valeurs
+ *
+ * @param context La simulation pour lequel on utilise cette regle
+ */
+ @Override
+ public void init(AnalysePlanContext context) throws Exception {
+
+ }
+
+ /**
+ * Call before each simulation
+ *
+ * @param context
+ * plan context
+ * @param nextSimulation
+ * storage used for next simulation
+ * @return true if we must do next simulation, false to stop plan
+ * @throws Exception
+ */
+ @Override
+ public boolean beforeSimulation(AnalysePlanContext context,
+ SimulationStorage nextSimulation) throws Exception {
+ boolean result = context.getNumber() < param_max;
+ return result;
+ }
+
+ /**
+ * Call after each simulation
+ *
+ * @param context
+ * plan context
+ * @param lastSimulation storage used for last simulation
+ * @return true if we must do next simulation, false to stop plan
+ * @throws Exception
+ */
+ @Override
+ public boolean afterSimulation(AnalysePlanContext context,
+ SimulationStorage lastSimulation) throws Exception {
+ return true;
+ }
+
+}
Deleted: trunk/analyseplans/Max.java
===================================================================
--- trunk/analyseplans/Max.java 2009-08-25 10:53:51 UTC (rev 164)
+++ trunk/analyseplans/Max.java 2009-08-25 12:07:41 UTC (rev 165)
@@ -1,96 +0,0 @@
-package analyseplans;
-
-import static org.codelutin.i18n.I18n._;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-import fr.ifremer.isisfish.simulator.AnalysePlanContext;
-import fr.ifremer.isisfish.simulator.AnalysePlanIndependent;
-import fr.ifremer.isisfish.util.Doc;
-
-/**
- * Max.java
- *
- * Created: 2 mars 2007
- *
- * @author bpoussin <bpoussin(a)labs.libre-entreprise.org>
- * @version $Revision: 1.2 $
- *
- * Last update: $Date: 2007-03-09 15:27:21 $ by : $Author: bpoussin $
- */
-public class Max implements AnalysePlanIndependent {
-
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(Max.class);
-
- @Doc(value = "do the doc of param max")
- public int param_max = 10;
-
- public String[] necessaryResult = {
- // put here all necessary result for this rule
- // example:
- // ResultName.MATRIX_BIOMASS,
- // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
- };
-
- @Override
- public String[] getNecessaryResult() {
- return this.necessaryResult;
- }
-
- /**
- * Permet d'afficher a l'utilisateur une aide sur le plan.
- *
- * @return L'aide ou la description du plan
- */
- @Override
- public String getDescription() throws Exception {
- return _("Permit to specify maximum simulation numbers");
- }
-
- /**
- * Appelé au démarrage de la simulation, cette méthode permet d'initialiser
- * des valeurs
- *
- * @param context La simulation pour lequel on utilise cette regle
- */
- @Override
- public void init(AnalysePlanContext context) throws Exception {
-
- }
-
- /**
- * Call before each simulation
- *
- * @param context
- * plan context
- * @param nextSimulation
- * storage used for next simulation
- * @return true if we must do next simulation, false to stop plan
- * @throws Exception
- */
- @Override
- public boolean beforeSimulation(AnalysePlanContext context,
- SimulationStorage nextSimulation) throws Exception {
- boolean result = context.getNumber() < param_max;
- return result;
- }
-
- /**
- * Call after each simulation
- *
- * @param context
- * plan context
- * @param lastSimulation storage used for last simulation
- * @return true if we must do next simulation, false to stop plan
- * @throws Exception
- */
- @Override
- public boolean afterSimulation(AnalysePlanContext context,
- SimulationStorage lastSimulation) throws Exception {
- return true;
- }
-
-}
1
0
Author: chatellier
Date: 2009-08-25 10:53:51 +0000 (Tue, 25 Aug 2009)
New Revision: 164
Removed:
trunk/exports/GrossValueOfLandingsOtherSpecies.java
Log:
Suppression de ce script (li?\195?\169 a une regles non g?\195?\169n?\195?\169rique)
Deleted: trunk/exports/GrossValueOfLandingsOtherSpecies.java
===================================================================
--- trunk/exports/GrossValueOfLandingsOtherSpecies.java 2009-08-25 10:01:22 UTC (rev 163)
+++ trunk/exports/GrossValueOfLandingsOtherSpecies.java 2009-08-25 10:53:51 UTC (rev 164)
@@ -1,102 +0,0 @@
-package exports;
-
-import static org.codelutin.i18n.I18n._;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.Writer;
-
-import org.codelutin.math.matrix.*;
-
-import scripts.ResultName;
-
-import fr.ifremer.isisfish.entities.*;
-import fr.ifremer.isisfish.export.Export;
-import fr.ifremer.isisfish.types.Date;
-import fr.ifremer.isisfish.datastore.SimulationStorage;
-
-/**
- * GrossValueOfLandingsOtherSpecies.java
- *
- * Created: 23 novembre 2006
- *
- * @author anonymous <anonymous(a)labs.libre-entreprise.org>
- * @version $Revision: 1.3 $
- *
- * Last update: $Date: 2007-05-24 09:30:07 $
- * by : $Author: bpoussin $
- */
-public class GrossValueOfLandingsOtherSpecies implements Export {
-
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory.getLog(GrossValueOfLandingsOtherSpecies.class);
-
- protected String [] necessaryResult = {
- ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_OTHER_SPECIES_PER_STRATEGY_MET
- };
-
- public String[] getNecessaryResult() {
- return this.necessaryResult;
- }
-
- public String getExportFilename() {
- return "GrossValueOfLandingsOtherSpecies";
- }
-
- public String getExtensionFilename() {
- return ".csv";
- }
-
- public String getDescription() {
- return _("CSV out strategy;metier;date;value (rule GraviteVPUE1LangEtGrossValueOtherSpeciesECOMOD must be selected for this export)");
- }
-
- public void export(SimulationStorage simulation, Writer out) throws Exception {
- MatrixND mat = simulation.getResultStorage().getMatrix(ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_OTHER_SPECIES_PER_STRATEGY_MET);
- if (mat == null) {
- if (log.isWarnEnabled()) {
- log.warn(_("Can't export GrossValueOfLandingsOtherSpecies, no '" +
- ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_OTHER_SPECIES_PER_STRATEGY_MET + "' result"));
- }
- }
- else {
- for (MatrixIterator i=mat.iterator(); i.hasNext();) {
- i.next();
- Object [] sems = i.getSemanticsCoordinates();
- Date date = (Date)sems[0];
- Strategy str = (Strategy)sems[1];
- Metier met = (Metier) sems[2];
- double val = i.getValue();
- out.write(str.getName() +";"+met.getName() +";"+ date.getDate() +";"+ val +"\n");
- }
- }
- /*
-var Parametre=sim.getParametre();
-var PDate=Packages.fr.ifremer.nodb.Date;
-var finsimu=resultats.getLastDate().getDate();
-
-
-var result="";
-writeln("debut export vesselmargin");
-var dateexport=new Packages.java.util.Date();
-var formatteur= new Packages.java.text.SimpleDateFormat();
-writeln("heure de debut: "+formatteur.format(dateexport));
-
-
-for (var idate=0;idate<=finsimu;idate++){
- var date=new PDate(idate);
- var matrice=resultats.getMatrix(date, "matriceVesselMarginOverVariableCostsPerStrategyPerVessel");
- for(var iiterateur=matrice.iterator(); iiterateur.next();){
- var coordonnees=iiterateur.getSemanticsCoordinates();
- var str=coordonnees[0];
- result+=str.getName()+";"+idate+";"+iiterateur.getValue()+"\n";
- }
-}
-writeln("fin export vesselmargin");
-
-return ""+result;
-*/
- }
-
-}
1
0
Author: chatellier
Date: 2009-08-25 10:01:22 +0000 (Tue, 25 Aug 2009)
New Revision: 163
Removed:
trunk/rules/GraviteVPUE1LangEtGrossValueOtherSpeciesECOMOD.java
Log:
Suppression de GraviteAnchois (non g?\195?\169n?\195?\169rique)
Deleted: trunk/rules/GraviteVPUE1LangEtGrossValueOtherSpeciesECOMOD.java
===================================================================
--- trunk/rules/GraviteVPUE1LangEtGrossValueOtherSpeciesECOMOD.java 2009-08-25 09:59:39 UTC (rev 162)
+++ trunk/rules/GraviteVPUE1LangEtGrossValueOtherSpeciesECOMOD.java 2009-08-25 10:01:22 UTC (rev 163)
@@ -1,547 +0,0 @@
-package rules;
-
-import static org.codelutin.i18n.I18n._;
-import static org.codelutin.i18n.I18n.n_;
-
-import java.io.File;
-import java.io.FileReader;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.codelutin.math.matrix.MapFunction;
-import org.codelutin.math.matrix.MatrixFactory;
-import org.codelutin.math.matrix.MatrixND;
-import org.codelutin.util.FileUtil;
-
-import scripts.ResultName;
-import scripts.SiMatrix;
-import fr.ifremer.isisfish.datastore.ResultStorage;
-import fr.ifremer.isisfish.entities.EffortDescription;
-import fr.ifremer.isisfish.entities.Metier;
-import fr.ifremer.isisfish.entities.Population;
-import fr.ifremer.isisfish.entities.Strategy;
-import fr.ifremer.isisfish.entities.StrategyMonthInfo;
-import fr.ifremer.isisfish.rule.AbstractRule;
-import fr.ifremer.isisfish.simulator.SimulationContext;
-import fr.ifremer.isisfish.types.Date;
-import fr.ifremer.isisfish.types.Month;
-import fr.ifremer.isisfish.util.Doc;
-
-/**
- * GraviteVPUE1Anchois.java
- *
- * Created: 26 aout 2008
- *
- * @author anonymous <anonymous(a)labs.libre-entreprise.org>
- * @version $Revision: 1.2 $
- *
- * Last update: $Date: 2008-10-23 08:59:38 $ by : $Author: Stephanie $
- */
-public class GraviteVPUE1LangEtGrossValueOtherSpeciesECOMOD extends
- AbstractRule {
- /** to use log facility, just put in your code: log.info("..."); */
- static private Log log = LogFactory
- .getLog(GraviteVPUE1LangEtGrossValueOtherSpeciesECOMOD.class);
-
- @Doc(value = "do the doc of param coeffOthers0")
- public String param_nomfichier_coeffOthers0 = "Inputs_Langoustine/CoeffOthers_Intercept_Langoustine/CoeffOthersNephrops.csv";
- @Doc(value = "do the doc of param coeffOthers1")
- public String param_nomfichier_coeffOthers1 = "Inputs_Langoustine/CoeffOthers_Intercept_Langoustine/CoeffOthersHake.csv";
- @Doc(value = "do the doc of param coeffOthers2")
- public String param_nomfichier_coeffOthers2 = "Inputs_Langoustine/CoeffOthers_Intercept_Langoustine/CoeffOthersBenthic.csv";
- @Doc(value = "do the doc of param gravite")
- public boolean param_gravite = false;
- // doit etre a vrai si gravite s'applique sinon la methode calcul uniquement les grossvalue otherspecies
-
- static final protected String BETA_O = "BetaOthers";
- static final protected String ALPHA_O = "AlphaOthers";
-
- protected File CoeffOthers0;
- protected File CoeffOthers1;
- protected File CoeffOthers2;
-
- protected MatrixND matrixCoeffOthers;
-
- protected List<Metier> metiers;
- // interdit de faire des set sur les strategies de la map, il faut recuperer les strategies de la date courante
- protected Map<String, Strategy> mesStrategies;
-
- /** 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;
-
- 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 ,
-
- };
-
- 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
- */
- public String getDescription() throws Exception {
- return _("calcule les proportion par metier chaque mois en fonction de la VPUE du metier l'annee precedante et les gross Values otherSpecies");
- /*"HYPOTHESES GRAVITE"
- " attention cette regle doit toujours etre 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-, une alternative
- pourrait etre 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 hypotheses pourraient etre envisagees)
- "*/
- /*Calcul des gross Value Other Species en fonction de l'effort par strategie et par metier a date
- Avant annee 1 (premiere annee d'appliaction de Gravite) - il faut deja faire les calculs des grossValues des autres especes
- A partir de l'annee 1 : Gravite s'applique, il faut donc attendre de connaitre l'allocation de l'effort a date (dependant des gross values species et otherspecies a date - 1)
- pour pouvoir calculer les grossValueOtherSpecies a date
-
- */
- }
-
- /**
- * function used to initialise MatrixND to NaN double
- */
- private MapFunction nanFunction = new MapFunction() {
- public double apply(double value) {
- return Double.NaN;
- }
- };
-
- /**
- * Appele au demarrage de la simulation, cette methode permet d'initialiser
- * des valeurs
- *
- * @param simulation
- * La simulation pour lequel on utilise cette regle
- */
- public void init(SimulationContext context) throws Exception {
- Date date = new Date(0);
-
- List<Strategy> strs = SiMatrix.getSiMatrix(context).getStrategies(date);
- List<Metier> metiers = SiMatrix.getSiMatrix(context).getMetiers(date);
- 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, date);
- 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);
- }
- }
-
- // load coefficients of relation others file in a matrix
- if (param_nomfichier_coeffOthers0 == null
- || "".equals(param_nomfichier_coeffOthers0)) {
- CoeffOthers0 = FileUtil.getFile(".*.csv",
- "fichier 0 csv separateur ';'");
- CoeffOthers1 = FileUtil.getFile(".*.csv",
- "fichier 1 csv separateur ';'");
- CoeffOthers2 = FileUtil.getFile(".*.csv",
- "fichier 2 csv separateur ';'");
- } else {
- CoeffOthers0 = new File(param_nomfichier_coeffOthers0);
- CoeffOthers1 = new File(param_nomfichier_coeffOthers1);
- CoeffOthers2 = new File(param_nomfichier_coeffOthers2);
- }
-
- // reccuperation des metiers et strategies
- SiMatrix siMatrix = SiMatrix.getSiMatrix(context);
- List<String> coeffs = Arrays.asList(new String[] { ALPHA_O, BETA_O });
-
- // creation de mes strategies qui ne contient pas les espagnols
- //mesStrategies = new HashMap<String, Strategy>();
- //for(Strategy str : strs) {
- // mesStrategies.put(str.getName(), str);
- //}
-
- MatrixND matCoeffOthers0 = MatrixFactory.getInstance().create(
- "matCoeffOthers0", new List[] { metiers, coeffs },
- new String[] { "Metiers", "Coeff" });
- MatrixND matCoeffOthers1 = MatrixFactory.getInstance().create(
- "matCoeffOthers1", new List[] { metiers, coeffs },
- new String[] { "Metiers", "Coeff" });
- MatrixND matCoeffOthers2 = MatrixFactory.getInstance().create(
- "matCoeffOthers2", new List[] { metiers, coeffs },
- new String[] { "Metiers", "Coeff" });
-
- matCoeffOthers0.importCSV(new FileReader(CoeffOthers0), new int[] { 0,
- 0 });
- matCoeffOthers1.importCSV(new FileReader(CoeffOthers1), new int[] { 0,
- 0 });
- matCoeffOthers2.importCSV(new FileReader(CoeffOthers2), new int[] { 0,
- 0 });
-
- // captures non simulees
- matrixCoeffOthers = MatrixFactory.getInstance().create(
- "matrixCoeffOthers", new List[] { strs, metiers, coeffs },
- new String[] { "Strategies", "Metiers", "Coeff" });
-
- MatrixND matImport = MatrixFactory.getInstance().create(
- new int[] { 14, 2 });
- ;
- for (Strategy str : strs) {
- log.info("str =" + str.getName());
- for (Metier met : metiers) {
- for (String coeff : coeffs) {
- if ("NephropsLargeLesSables".equals(str.getName())
- || "NephropsLargeGuilvinec".equals(str.getName())
- || "NephropsIntermediateLesSables".equals(str
- .getName())
- || "NephropsIntermediateGuilvinec".equals(str
- .getName())) {
- matImport = matCoeffOthers0;
- } else if ("HakeLargeLesSables".equals(str.getName())
- || "HakeLargeGuilvinec".equals(str.getName())
- || "HakeIntermediateLesSables"
- .equals(str.getName())
- || "HakeIntermediateGuilvinec"
- .equals(str.getName())) {
- matImport = matCoeffOthers1;
- } else if ("BenthicLargeLesSables".equals(str.getName())
- || "BenthicLargeGuilvinec".equals(str.getName())
- || "BenthicIntermediateLesSables".equals(str
- .getName())
- || "BenthicIntermediateGuilvinec".equals(str
- .getName())) {
- matImport = matCoeffOthers2;
- }
- matrixCoeffOthers.setValue(str, met, coeff, matImport
- .getValue(met, coeff));
- }// fin de for coeff
- }// fin de for met
- }// fin de for strategy
- log.info("matrixCoeffOthers : " + matrixCoeffOthers);
-
- }
-
- /**
- * La condition qui doit etre vrai pour faire les actions
- *
- * @param simulation
- * La simulation pour lequel on utilise cette regle
- * @return vrai si on souhaite que les actions soit faites
- */
- public boolean condition(SimulationContext context, Date date, Metier metier)
- throws Exception {
-
- return true; // on y passe a chaque pas de temps
- }
-
- /**
- * Si la condition est vrai alors cette action est executee avant le pas de
- * temps de la simulation.
- *
- * @param simulation
- * La simulation pour lequel on utilise cette regle
- */
- // Booleen permettant que ne boucler que sur un seul metier dans la preaction :
- boolean first = true;
-
- public void preAction(SimulationContext context, Date date, Metier metier)
- throws Exception {
- if (log.isDebugEnabled()) {
- log.debug("first = " + first + "date:" + date);
- }
- 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(
- date);
- List<Population> populations = SiMatrix.getSiMatrix(context)
- .getPopulations(date);
- List<Metier> metiers = SiMatrix.getSiMatrix(context).getMetiers(
- date);
- ResultStorage resultmanager = context.getSimulationStorage()
- .getResultStorage();
- //on commence par creer une instance de resultats de matrice GrossValuesOtherSpecies
- MatrixND GrossValueOtherSpeciesPerStrMet = MatrixFactory
- .getInstance()
- .create(
- ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_OTHER_SPECIES_PER_STRATEGY_MET,
- new List[] { strs, metiers },
- new String[] { n_("Strategies"), n_("Metiers") });
- log.info("GrossValueOtherSpeciesPerStrMet initialisee "
- + GrossValueOtherSpeciesPerStrMet);
-
- // si annee>=1 alors on fait le calcul des gravite puis on met a jour les gross value otherspecies
- if ((date.getYear() > 0) & (param_gravite == true)) {
- ////////Initialisation des matrices qui resultent de la simulation////////////////////////////////////////////////////////////
- log.info("calcul de Gravite");
- //Calcul de l effort nominal par strategy met
- MatrixND EffortNominalPerStrMet = null;
- EffortNominalPerStrMet = resultmanager.getMatrix(date
- .previousYear(),
- ResultName.MATRIX_EFFORT_NOMINAL_PER_STRATEGY_MET);
- log.info("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(
- date.previousYear(),
- ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_PER_STRATEGY_MET)
- .copy();
- log.info("GrossValuePerStrMet calculee " + GrossValuePerStrMet);
-
- //ajouter pour tous les metiers les valeurs liees qux autres especes calculees par modele lineaire
- // Boucle sur les strategies de mes strategies
- //List <Strategy> mStr = strs;
- for (Strategy strIndex : strs) {
- // interdit de faire des set sur les strategies de la semantique de la matrice, il faut recuperer les strategies de la date courante
- Strategy str = (Strategy) context.getDB().findByTopiaId(
- strIndex.getTopiaId());
-
- StrategyMonthInfo smi = str.getStrategyMonthInfo(date
- .getMonth());
- Collection<EffortDescription> strMet = str
- .getSetOfVessels().getPossibleMetiers();
- //2) calcul les valeurs non simulees du mois l annee precedante
- for (EffortDescription effort : strMet) {
- Metier met = effort.getPossibleMetiers();
- log.info("Boucle metier 1, metier possible: "
- + met.getName());
- double eff = EffortNominalPerStrMet.getValue(str, met);
- log.info("effort str" + str.getName() + met.getName()
- + " : " + eff);
-
- //GrossValueAutres par strategie
- // Hypothese 1 = pas de distinction entre les metiers n'agira donc pas sur la gravite)
- // Hypothese 2 = a distinguer selon les metiers - agira sur la gravite
- // l'hypothese est le resultat des coef dans la matrice en entree si tous identiques quelque soit le metier dans la strategie alors H1
- // sinon H2
- double valMetOther = matrixCoeffOthers.getValue(str,
- met, ALPHA_O)
- + matrixCoeffOthers.getValue(str, met, BETA_O)
- * eff;
- if (valMetOther < 0) {
- valMetOther = 0;
- }
- double valMet = valMetOther
- + GrossValuePerStrMet.getValue(str, met);
- //log.info("valOtherMetAnchois :"+matrixCoeffOthers.getValue(str,met)*eff);
- //log.info("GrossValuePerStrMet avant : "+GrossValuePerStrMet.getValue(str,met));
- GrossValuePerStrMet.setValue(str, met, valMet);
- log.info("valOtherMetLangoustine : " + valMet);
- log.info("GrossValuePerStrMet apres : "
- + GrossValuePerStrMet.getValue(str, met));
-
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- 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(date
- .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.info("DEBUG: value : " + value);
- log.info("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 peche avec ce metier
- valuePerUnitOfEffort.setValue(str, strMetier, 0);
- log.info("n'a jamais peche 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 incomplete 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;
- log
- .info("a partir des VPUE stockees dans valuePerUnitOfEffort, on calcule la gravite");
- if (!testCondition) {
- double SommeVPUEstrat = somme;
- log.info("SommeVPUEstrat=" + SommeVPUEstrat);
- for (EffortDescription ed : strMet) {
- Metier strMetier = ed.getPossibleMetiers();
- log.info("PropStrInitiale(metier="
- + strMetier.getName() + ")"
- + smi.getProportionMetier(strMetier));
- log
- .info("SommePropInitial.getValue(str, date.getMonth()="
- + SommePropInitial.getValue(str,
- date.getMonth()));
- log
- .info("valuePerUnitOfEffort.getValue(str, strMetier)"
- + valuePerUnitOfEffort.getValue(
- str, strMetier));
- if (SommeVPUEstrat == 0) {
- newProp = 0;
- } else {
- newProp = SommePropInitial.getValue(str, date
- .getMonth())
- * valuePerUnitOfEffort.getValue(str,
- strMetier) / SommeVPUEstrat;
- }
- log.info("newProp(metier=" + strMetier.getName()
- + ")" + newProp);
- smi.setProportionMetier(strMetier, newProp);
- log.info("PropStrNouvelle(metier="
- + strMetier.getName() + ")"
- + smi.getProportionMetier(strMetier));
- // annee>= 1 calcul des gross Value otherSpecies avec les nouvelles valeurs d'effort calculees par gravite
- //avec la nouvelle proportion on en deduit la gross Value of Species de date pour ce str-met
- double valMetOtherSpecies = matrixCoeffOthers
- .getValue(str, strMetier, ALPHA_O)
- + matrixCoeffOthers.getValue(str,
- strMetier, BETA_O) * newProp;
- //tester si valMetOtherSpecies <= alors mettre a 0
- if (valMetOtherSpecies < 0) {
- valMetOtherSpecies = 0;
- }
- GrossValueOtherSpeciesPerStrMet.setValue(str,
- strMetier, valMetOtherSpecies);
- log.info("valOtherMetLangoustine : "
- + valMetOtherSpecies);
- log.info("GrossValuePerStrMet apres : "
- + GrossValueOtherSpeciesPerStrMet.getValue(
- str, 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
- // resultats grossvalue otherspecies mis dans le resultManager
- resultmanager
- .addResult(
- date,
- ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_OTHER_SPECIES_PER_STRATEGY_MET,
- GrossValueOtherSpeciesPerStrMet);
-
- } else if ((date.getYear() == 0) || (param_gravite == false)) {
- //si annee==0 alors on ne fait que le calcul des gross value other species
- for (Strategy str : strs) {
- log.info("INFO: Boucle creation valuePerUnitEffort : "
- + str.getName());
- //log.info("Boucle creation catchperuniteffort : "+ str.getName());
- StrategyMonthInfo smi = str.getStrategyMonthInfo(date
- .getMonth());
- Collection<EffortDescription> strMet = str
- .getSetOfVessels().getPossibleMetiers();
- for (EffortDescription ed : strMet) {
- Metier strMetier = ed.getPossibleMetiers();
- log.info("PropStrInitiale(metier="
- + strMetier.getName() + ")"
- + smi.getProportionMetier(strMetier));
- double valMetOtherSpecies = matrixCoeffOthers.getValue(
- str, strMetier, ALPHA_O)
- + matrixCoeffOthers.getValue(str, strMetier,
- BETA_O)
- * smi.getProportionMetier(strMetier);
- //tester si valMetOtherSpecies <= alors mettre a 0
- if (valMetOtherSpecies < 0) {
- valMetOtherSpecies = 0;
- }
- GrossValueOtherSpeciesPerStrMet.setValue(str,
- strMetier, valMetOtherSpecies);
- log.info("valOtherMetLangoustine : "
- + valMetOtherSpecies);
- log.info("GrossValuePerStrMet apres : "
- + GrossValueOtherSpeciesPerStrMet.getValue(str,
- strMetier));
- }
- }
- // resultats grossvalue otherspecies mis dans le resultManager
- resultmanager
- .addResult(
- date,
- ResultName.MATRIX_GROSS_VALUE_OF_LANDINGS_OTHER_SPECIES_PER_STRATEGY_MET,
- GrossValueOtherSpeciesPerStrMet);
- } // fin de calcul pour annee ==0
- first = false;
-
- }// fin de first= true
-
- if (log.isDebugEnabled()) {
- log.debug("fin Gravite CPUEAction avant");
- }
-
- }
-
- /**
- * Si la condition est vrai alors cette action est executee apres le pas de
- * temps de la simulation.
- *
- * @param simulation
- * La simulation pour lequel on utilise cette regle
- */
- public void postAction(SimulationContext context, Date date, Metier metier)
- throws Exception {
- first = true;
-
- }
-
-}
1
0