Plan d'analyse Selectivité
Bonjour, Je voudrais faire un plan d'analyse pour faire plusieurs simulations à la suite avec chacune une sélectivité différente pour les engins "chalut". J'ai 7 sélectivités à tester. Je vous envoie mon script qui ne compile pas. Merci !! Camille
Bonjour Camille ca ne me semble pas correct comme maniere d'ecrire le plan. Si tu vas à sur le site d'ISIS (http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java) tu verras comment proceder. 1. il te faudrait deux fichiers de parametres : selectiviteLangoustine.txt et selectiviteMerlu.txt chacun de ces fichiers doit contenir autant de lignes qu'il y a de courbes à tester (et le meme nombre pour les 2 fichiers) 1 = "equationselectivite1" 2= "equationselectivite2" ... 2. tu construis un fichier matrix.txt avec 2 colonnes (selectiviteLangoustine et selectiviteMerlu) et n lignes (le nombre de courbes à tester) 1;1 2;2 ... n;n 3. tu suis les instructions pour que dans la boucle tu reaffactes la courbe de selectivite pour chaque population et chaque engin concerné je te prepare un essai de script stephanie camille de la Vega a écrit :
Bonjour,
Je voudrais faire un plan d'analyse pour faire plusieurs simulations à la suite avec chacune une sélectivité différente pour les engins "chalut". J'ai 7 sélectivités à tester. Je vous envoie mon script qui ne compile pas.
Merci !!
Camille ------------------------------------------------------------------------
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
Ok. Je ne pensais pas que j'avais besoin de passer par des fichiers .txt obligatoirement. Et pour les sélectivités des langoustines, je n'ai pas de courbes de sélectivité à tester pour l'instant. Si les sélectivités ne change pas, est-il nécessaire de créer un fichier "selectivité langoustine" ? Si oui ça veut dire que je mettrais 7 fois (si j'ai 7 courbes à tester pour le merlu) la même equation de sélectivité langoustine dans le fichier "langoustine" ? Le 7 juillet 2011 11:01, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr> a écrit :
Bonjour Camille
ca ne me semble pas correct comme maniere d'ecrire le plan. Si tu vas à sur le site d'ISIS (http://isis-fish.labs.libre-** entreprise.org/wiki-moin/**instance/cgi-bin/moin.cgi/v3/** usermanual/tuto/PlanAnalyse?**action=AttachFile&do=view&** target=Exemple_PlanAnalyse.**java<http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java> ) tu verras comment proceder. 1. il te faudrait deux fichiers de parametres : selectiviteLangoustine.txt et selectiviteMerlu.txt chacun de ces fichiers doit contenir autant de lignes qu'il y a de courbes à tester (et le meme nombre pour les 2 fichiers) 1 = "equationselectivite1" 2= "equationselectivite2" ... 2. tu construis un fichier matrix.txt avec 2 colonnes (selectiviteLangoustine et selectiviteMerlu) et n lignes (le nombre de courbes à tester) 1;1 2;2 ... n;n 3. tu suis les instructions pour que dans la boucle tu reaffactes la courbe de selectivite pour chaque population et chaque engin concerné
je te prepare un essai de script stephanie
camille de la Vega a écrit :
Bonjour, Je voudrais faire un plan d'analyse pour faire plusieurs simulations à la suite avec chacune une sélectivité différente pour les engins "chalut". J'ai 7 sélectivités à tester. Je vous envoie mon script qui ne compile pas. Merci !! Camille ------------------------------**------------------------------** ------------
______________________________**_________________ Isis-fish-users mailing list Isis-fish-users@list.isis-**fish.org <Isis-fish-users@list.isis-fish.org> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
-- ..............................**..............................**.......... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ..............................**..............................**..........
______________________________**_________________ Isis-fish-users mailing list Isis-fish-users@list.isis-**fish.org <Isis-fish-users@list.isis-fish.org> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
Tu n'es pas obligée mais c'est plus simple d'autant qu'il y a deja des exemples de scripts avec ce format. Pour l'instant tu n'as pas de nouvelles courbes de selectivite pour la langoustine. Donc deux choix tu recopies la courbe de la base les 7 fois; ou tu modifies le script pour que ça colle avec une matrice une colonne. Je prefererais la premiere solution car ensuite on aura des courbes de selectivite pour la langoustine. Voici un script à compiler et à tester. je t'ai mis le fichier matrix + un debut de fichier selectiviteMerlu. ce dernier est à finir de remplir + mettre les valeurs a1, b1 .... A+ stephanie camille de la Vega a écrit :
Ok. Je ne pensais pas que j'avais besoin de passer par des fichiers .txt obligatoirement. Et pour les sélectivités des langoustines, je n'ai pas de courbes de sélectivité à tester pour l'instant. Si les sélectivités ne change pas, est-il nécessaire de créer un fichier "selectivité langoustine" ? Si oui ça veut dire que je mettrais 7 fois (si j'ai 7 courbes à tester pour le merlu) la même equation de sélectivité langoustine dans le fichier "langoustine" ?
Le 7 juillet 2011 11:01, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr <mailto:Stephanie.Mahevas@ifremer.fr>> a écrit :
Bonjour Camille
ca ne me semble pas correct comme maniere d'ecrire le plan. Si tu vas à sur le site d'ISIS (http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java <http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java>) tu verras comment proceder. 1. il te faudrait deux fichiers de parametres : selectiviteLangoustine.txt et selectiviteMerlu.txt chacun de ces fichiers doit contenir autant de lignes qu'il y a de courbes à tester (et le meme nombre pour les 2 fichiers) 1 = "equationselectivite1" 2= "equationselectivite2" ... 2. tu construis un fichier matrix.txt avec 2 colonnes (selectiviteLangoustine et selectiviteMerlu) et n lignes (le nombre de courbes à tester) 1;1 2;2 ... n;n 3. tu suis les instructions pour que dans la boucle tu reaffactes la courbe de selectivite pour chaque population et chaque engin concerné
je te prepare un essai de script stephanie
camille de la Vega a écrit :
Bonjour, Je voudrais faire un plan d'analyse pour faire plusieurs simulations à la suite avec chacune une sélectivité différente pour les engins "chalut". J'ai 7 sélectivités à tester. Je vous envoie mon script qui ne compile pas. Merci !! Camille ------------------------------------------------------------------------
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org <mailto:Isis-fish-users@list.isis-fish.org> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr <mailto:Stephanie.Mahevas@ifremer.fr>) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org <mailto:Isis-fish-users@list.isis-fish.org> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
------------------------------------------------------------------------
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ...................................................................... 0 = "Math.exp(a1+b1*group.getLength())/(1+Math.exp((a1)+b1* group.getLength()))" 1= "Math.exp(a2+b2*group.getLength())/(1+Math.exp((a2)+b2* group.getLength())); " A COMPLETER 0;0 1;1 2;2 3;3 4;4 5;5 6;6 /* * Copyright (C) 2011 Camille * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package analyseplans; import static org.nuiton.i18n.I18n._; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import scripts.ResultName; import java.io.Writer; import org.nuiton.math.matrix.*; import org.nuiton.util.*; import org.nuiton.topia.*; import fr.ifremer.isisfish.util.Doc; import fr.ifremer.isisfish.*; import fr.ifremer.isisfish.simulator.SimulationContext; import fr.ifremer.isisfish.types.Date; import fr.ifremer.isisfish.entities.*; import fr.ifremer.isisfish.simulator.AnalysePlan; import fr.ifremer.isisfish.simulator.AnalysePlanContext; import fr.ifremer.isisfish.simulator.SimulationParameter; import fr.ifremer.isisfish.datastore.SimulationStorage; import fr.ifremer.isisfish.datastore.ResultStorage; /** * SELECTIVITY.java * * Created: 27 juin 2011 * * @author Camille <user.name@vcs.hostName> * @version $Revision: 1545 $ * Last update: $Date: 27 juin 2011 $ * by : $Author: Camille $ */ public class SELECTIVITY implements AnalysePlan { /** to use log facility, just put in your code: log.info("..."); */ private static Log log = LogFactory.getLog(SELECTIVITY.class); static private final String MATRIXSELECTIVITE = "matrixSelectivite"; /// Le fichier est donc matrixSelectivite.txt static private final String SELECTIVITYMERLU = "selectivityMerlu"; static private final String SELECTIVITYLANGOUSTINE = "selectivityLangoustine"; int param_parameterNumber = 2; public int param_first = 0; public param_simulationNumber = 7; //nombre de courbes de selectivite a tester public String param_directory = ""; //repertoir ou sont ranges les fichiers matrixSelectivite.txt,selectivityMerlu.txt,selectivityLangoustine.txt 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 { // TODO change descrition return _("TODO SELECTIVITY description plan"); } /** * 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 { File dir = new File(param_directory); matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber}); matrix.importCSV(new FileReader(new File(dir, MATRIXSELECTIVITE + ".txt")), new int[]{0,0}); matrix.setSemantics(1, Arrays.asList(new String[]{SELECTIVITYMERLU, SELECTIVITYLANGOUSTINE})); System.out.println(matrix); } /** * @param name le nom de l'element a recuperer * @param simulation le numero de la simulation * @return */ private String getString(String name, int simulation) throws Exception { File dir = new File(param_directory); Properties prop = new Properties(); prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt")))); int ligne = simulation + param_first; int mod = (int)matrix.getValue(ligne , name); String result = prop.getProperty(""+mod); return result; } /** * 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 */ // partie ou on decide si on refait une simulation ou si on s'arrete. public boolean beforeSimulation(AnalysePlanContext context, SimulationStorage nextSimulation) throws Exception { int simNum = nextSimulation.getParameter().getAnalysePlanNumber(); if (simNum + param_first < param_simulationNumber) { String selectivityMerlu = getString (SELECTIVITYMERLU, simNum); String selectivityLangoustine = getString (SELECTIVITYLANGOUSTINE, simNum); nextSimulation.getInformation().addInformation("Selectivity Merlu ("+context.getNumber()+")= " + selectivityMerlu); nextSimulation.getInformation().addInformation("Selectivity Langoustine ("+context.getNumber()+")= " + selectivityLangoustine); /// modif les parametres dans la base de données : TopiaContext tx = nextSimulation.getStorage().beginTransaction(); /// On récupère les objets ISIS a modifier dans la base de données PopulationDAO popDAO = IsisFishDAOHelper.getPopulationDAO(tx); Population popMerlu = popDAO.findByName("merluccius"); Population popLangoustine = popDAO.findByName("nephrops"); GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx); Gear gearChalutSimple = GearDAO.findByName("chalut simple"); Gear gearChalutJumeau = GearDAO.findByName("Chalut jumeau"); Selectivity selMerlu = gearChalutSimple.getPopulationSelectivity(popMerlu); Equation eqMerlu = selMerlu.getEquation(); eqMerlu.setContent(selectivityMerlu); Selectivity selLangoustine = gearChalutSimple.getPopulationSelectivity(popLangoustine); Equation eqLangoustine = selLangoustine.getEquation(); eqLangoustine.setContent(selectivityLangoustine); Selectivity selMerlu = gearChalutJumeau.getPopulationSelectivity(popMerlu); Equation eqMerlu = selMerlu.getEquation(); eqMerlu.setContent(selectivityMerlu); Selectivity selLangoustine = gearChalutJumeau.getPopulationSelectivity(popLangoustine); Equation eqLangoustine = selLangoustine.getEquation(); eqLangoustine.setContent(selectivityLangoustine); tx.commitTransaction(); return true; } else { return false; } } /** * Call after each simulation. * * @param context plan context * @param lastSimulation storage used for 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; }
merci beaucoup !
A bientôt !
Camille
Le 7 juillet 2011 11:41, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr> a
écrit :
> Tu n'es pas obligée mais c'est plus simple d'autant qu'il y a deja des
> exemples de scripts avec ce format.
> Pour l'instant tu n'as pas de nouvelles courbes de selectivite pour la
> langoustine. Donc deux choix
> tu recopies la courbe de la base les 7 fois; ou tu modifies le script pour
> que ça colle avec une matrice une colonne.
> Je prefererais la premiere solution car ensuite on aura des courbes de
> selectivite pour la langoustine.
> Voici un script à compiler et à tester.
> je t'ai mis le fichier matrix + un debut de fichier selectiviteMerlu. ce
> dernier est à finir de remplir + mettre les valeurs a1, b1 ....
> A+
>
> stephanie
>
> camille de la Vega a écrit :
>
>> Ok. Je ne pensais pas que j'avais besoin de passer par des fichiers .txt
>> obligatoirement.
>>
>> Et pour les sélectivités des langoustines, je n'ai pas de courbes de
>> sélectivité à tester pour l'instant. Si les sélectivités ne change pas,
>> est-il nécessaire de créer un fichier "selectivité langoustine" ? Si oui ça
>> veut dire que je mettrais 7 fois (si j'ai 7 courbes à tester pour le merlu)
>> la même equation de sélectivité langoustine dans le fichier "langoustine" ?
>>
>>
>> Le 7 juillet 2011 11:01, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr<mailto:
>> Stephanie.Mahevas@**ifremer.fr <Stephanie.Mahevas@ifremer.fr>>> a écrit :
>>
>>
>>
>> Bonjour Camille
>>
>> ca ne me semble pas correct comme maniere d'ecrire le plan.
>> Si tu vas à sur le site d'ISIS
>> (http://isis-fish.labs.libre-**entreprise.org/wiki-moin/**
>> instance/cgi-bin/moin.cgi/v3/**usermanual/tuto/PlanAnalyse?**
>> action=AttachFile&do=view&**target=Exemple_PlanAnalyse.**java<http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java>
>> <http://isis-fish.labs.libre-**entreprise.org/wiki-moin/**
>> instance/cgi-bin/moin.cgi/v3/**usermanual/tuto/PlanAnalyse?**
>> action=AttachFile&do=view&**target=Exemple_PlanAnalyse.**java<http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java>
>> >)
>> tu verras comment proceder.
>> 1. il te faudrait deux fichiers de parametres :
>> selectiviteLangoustine.txt et selectiviteMerlu.txt
>> chacun de ces fichiers doit contenir autant de lignes qu'il y a de
>> courbes à tester (et le meme nombre pour les 2 fichiers)
>> 1 = "equationselectivite1"
>> 2= "equationselectivite2"
>> ...
>> 2. tu construis un fichier matrix.txt avec 2 colonnes
>> (selectiviteLangoustine et selectiviteMerlu) et n lignes (le
>> nombre de courbes à tester)
>> 1;1
>> 2;2
>> ...
>> n;n
>> 3. tu suis les instructions pour que dans la boucle tu reaffactes
>> la courbe de selectivite pour chaque population et chaque engin
>> concerné
>>
>> je te prepare un essai de script
>> stephanie
>>
>> camille de la Vega a écrit :
>>
>> Bonjour,
>> Je voudrais faire un plan d'analyse pour faire plusieurs
>> simulations à la suite avec chacune une sélectivité différente
>> pour les engins "chalut". J'ai 7 sélectivités à tester. Je
>> vous envoie mon script qui ne compile pas.
>> Merci !!
>> Camille
>> ------------------------------**------------------------------**
>> ------------
>>
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org<Isis-fish-users@list.isis-fish.org>
>> <mailto:Isis-fish-users@list.**isis-fish.org<Isis-fish-users@list.isis-fish.org>>
>>
>>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**
>> fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>> -- ..............................**..............................*
>> *..........
>> Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr
>> <mailto:Stephanie.Mahevas@**ifremer.fr <Stephanie.Mahevas@ifremer.fr>>)
>>
>>
>> IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2
>> 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __|
>> \ / |__ o _ \ o / o
>> /|\ | /\ ___\o \o | o/ o/__ /\ | /|\
>> / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \
>> ..............................**..............................**
>> ..........
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org<Isis-fish-users@list.isis-fish.org>
>> <mailto:Isis-fish-users@list.**isis-fish.org<Isis-fish-users@list.isis-fish.org>>
>>
>>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>> ------------------------------**------------------------------**
>> ------------
>>
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org <Isis-fish-users@list.isis-fish.org>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>
> --
> ..............................**..............................**..........
> Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr)
> IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41
> 81 Fax: (33) 2 40 37 40 75
> o \ o / _ o __| \ / |__ o _ \ o / o
> /|\ | /\ ___\o \o | o/ o/__ /\ | /|\
> / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \
> ..............................**..............................**..........
>
>
> 0 = "Math.exp(a1+b1*group.getLength())/(1+Math.exp((a1)+b1*
> group.getLength()))"
> 1= "Math.exp(a2+b2*group.getLength())/(1+Math.exp((a2)+b2*
> group.getLength())); "
>
> A COMPLETER
>
> 0;0
> 1;1
> 2;2
> 3;3
> 4;4
> 5;5
> 6;6
> /*
> * Copyright (C) 2011 Camille
> *
> * This program is free software; you can redistribute it and/or
> * modify it under the terms of the GNU General Public License
> * as published by the Free Software Foundation; either version 2
> * of the License, or (at your option) any later version.
> *
> * This program is distributed in the hope that it will be useful,
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> * GNU General Public License for more details.
> *
> * You should have received a copy of the GNU General Public License
> * along with this program; if not, write to the Free Software
> * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
> USA.
> */
>
> package analyseplans;
>
> import static org.nuiton.i18n.I18n._;
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>
> import scripts.ResultName;
>
> import java.io.Writer;
> import org.nuiton.math.matrix.*;
> import org.nuiton.util.*;
> import org.nuiton.topia.*;
>
> import fr.ifremer.isisfish.util.Doc;
> import fr.ifremer.isisfish.*;
> import fr.ifremer.isisfish.simulator.SimulationContext;
> import fr.ifremer.isisfish.types.Date;
> import fr.ifremer.isisfish.entities.*;
> import fr.ifremer.isisfish.simulator.AnalysePlan;
> import fr.ifremer.isisfish.simulator.AnalysePlanContext;
> import fr.ifremer.isisfish.simulator.SimulationParameter;
> import fr.ifremer.isisfish.datastore.SimulationStorage;
> import fr.ifremer.isisfish.datastore.ResultStorage;
>
> /**
> * SELECTIVITY.java
> *
> * Created: 27 juin 2011
> *
> * @author Camille <user.name@vcs.hostName>
> * @version $Revision: 1545 $
> * Last update: $Date: 27 juin 2011 $
> * by : $Author: Camille $
> */
> public class SELECTIVITY implements AnalysePlan {
>
> /** to use log facility, just put in your code: log.info("..."); */
> private static Log log = LogFactory.getLog(SELECTIVITY.class);
>
> static private final String MATRIXSELECTIVITE = "matrixSelectivite"; ///
> Le fichier est donc matrixSelectivite.txt
> static private final String SELECTIVITYMERLU = "selectivityMerlu";
> static private final String SELECTIVITYLANGOUSTINE =
> "selectivityLangoustine";
>
> int param_parameterNumber = 2;
> public int param_first = 0;
> public param_simulationNumber = 7; //nombre de courbes de
> selectivite a tester
> public String param_directory = ""; //repertoir ou sont ranges les
> fichiers
> matrixSelectivite.txt,selectivityMerlu.txt,selectivityLangoustine.txt
>
> 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 {
> // TODO change descrition
> return _("TODO SELECTIVITY description plan");
> }
>
> /**
> * 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 {
> File dir = new File(param_directory);
>
> matrix = MatrixFactory.getInstance().create(new
> int[]{param_simulationNumber, param_parameterNumber});
> matrix.importCSV(new FileReader(new File(dir, MATRIXSELECTIVITE +
> ".txt")), new int[]{0,0});
> matrix.setSemantics(1, Arrays.asList(new String[]{SELECTIVITYMERLU,
> SELECTIVITYLANGOUSTINE}));
> System.out.println(matrix);
> }
>
>
>
>
> /**
> * @param name le nom de l'element a recuperer
> * @param simulation le numero de la simulation
> * @return
> */
> private String getString(String name, int simulation) throws Exception {
> File dir = new File(param_directory);
> Properties prop = new Properties();
> prop.load(new BufferedReader(new FileReader(new File(dir, name +
> ".txt"))));
> int ligne = simulation + param_first;
> int mod = (int)matrix.getValue(ligne , name);
> String result = prop.getProperty(""+mod);
> return result;
> }
>
> /**
> * 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
> */
>
>
> // partie ou on decide si on refait une simulation ou si on s'arrete.
> public boolean beforeSimulation(AnalysePlanContext context,
> SimulationStorage nextSimulation) throws Exception {
> int simNum =
> nextSimulation.getParameter().getAnalysePlanNumber();
> if (simNum + param_first < param_simulationNumber) {
> String selectivityMerlu = getString (SELECTIVITYMERLU,
> simNum);
> String selectivityLangoustine = getString
> (SELECTIVITYLANGOUSTINE, simNum);
>
>
> nextSimulation.getInformation().addInformation("Selectivity Merlu
> ("+context.getNumber()+")= " + selectivityMerlu);
>
> nextSimulation.getInformation().addInformation("Selectivity Langoustine
> ("+context.getNumber()+")= " + selectivityLangoustine);
>
> /// modif les parametres dans la base de données :
> TopiaContext tx =
> nextSimulation.getStorage().beginTransaction();
> /// On récupère les objets ISIS a modifier dans la base de
> données
> PopulationDAO popDAO =
> IsisFishDAOHelper.getPopulationDAO(tx);
> Population popMerlu =
> popDAO.findByName("merluccius");
> Population popLangoustine =
> popDAO.findByName("nephrops");
> GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx);
>
> Gear gearChalutSimple = GearDAO.findByName("chalut
> simple");
> Gear gearChalutJumeau = GearDAO.findByName("Chalut
> jumeau");
>
> Selectivity selMerlu =
> gearChalutSimple.getPopulationSelectivity(popMerlu);
> Equation eqMerlu = selMerlu.getEquation();
> eqMerlu.setContent(selectivityMerlu);
> Selectivity selLangoustine =
> gearChalutSimple.getPopulationSelectivity(popLangoustine);
> Equation eqLangoustine =
> selLangoustine.getEquation();
> eqLangoustine.setContent(selectivityLangoustine);
>
> Selectivity selMerlu =
> gearChalutJumeau.getPopulationSelectivity(popMerlu);
> Equation eqMerlu = selMerlu.getEquation();
> eqMerlu.setContent(selectivityMerlu);
> Selectivity selLangoustine =
> gearChalutJumeau.getPopulationSelectivity(popLangoustine);
> Equation eqLangoustine =
> selLangoustine.getEquation();
> eqLangoustine.setContent(selectivityLangoustine);
>
>
> tx.commitTransaction();
> return true;
> } else {
> return false;
> }
> }
>
>
>
> /**
> * Call after each simulation.
> *
> * @param context plan context
> * @param lastSimulation storage used for 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;
> }
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users@list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
>
J'ai réussi à corriger pas mal d'erreur dans le script mais il en reste une
que j'arrive pas à enlever et j'ai trop message d'erreur "deprecation" par
exemple pour matrix.setSemantics. Il y a le même code dans le script de
Sigrid et ça me met le même méssage d'erreur. Je suppose donc que le code a
été remplacé par un autre mais je ne trouve pas dans le site d'ISIS le
nouveau code.
Camille
Le 7 juillet 2011 11:41, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr> a
écrit :
> Tu n'es pas obligée mais c'est plus simple d'autant qu'il y a deja des
> exemples de scripts avec ce format.
> Pour l'instant tu n'as pas de nouvelles courbes de selectivite pour la
> langoustine. Donc deux choix
> tu recopies la courbe de la base les 7 fois; ou tu modifies le script pour
> que ça colle avec une matrice une colonne.
> Je prefererais la premiere solution car ensuite on aura des courbes de
> selectivite pour la langoustine.
> Voici un script à compiler et à tester.
> je t'ai mis le fichier matrix + un debut de fichier selectiviteMerlu. ce
> dernier est à finir de remplir + mettre les valeurs a1, b1 ....
> A+
>
> stephanie
>
> camille de la Vega a écrit :
>
>> Ok. Je ne pensais pas que j'avais besoin de passer par des fichiers .txt
>> obligatoirement.
>>
>> Et pour les sélectivités des langoustines, je n'ai pas de courbes de
>> sélectivité à tester pour l'instant. Si les sélectivités ne change pas,
>> est-il nécessaire de créer un fichier "selectivité langoustine" ? Si oui ça
>> veut dire que je mettrais 7 fois (si j'ai 7 courbes à tester pour le merlu)
>> la même equation de sélectivité langoustine dans le fichier "langoustine" ?
>>
>>
>> Le 7 juillet 2011 11:01, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr<mailto:
>> Stephanie.Mahevas@**ifremer.fr <Stephanie.Mahevas@ifremer.fr>>> a écrit :
>>
>>
>>
>> Bonjour Camille
>>
>> ca ne me semble pas correct comme maniere d'ecrire le plan.
>> Si tu vas à sur le site d'ISIS
>> (http://isis-fish.labs.libre-**entreprise.org/wiki-moin/**
>> instance/cgi-bin/moin.cgi/v3/**usermanual/tuto/PlanAnalyse?**
>> action=AttachFile&do=view&**target=Exemple_PlanAnalyse.**java<http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java>
>> <http://isis-fish.labs.libre-**entreprise.org/wiki-moin/**
>> instance/cgi-bin/moin.cgi/v3/**usermanual/tuto/PlanAnalyse?**
>> action=AttachFile&do=view&**target=Exemple_PlanAnalyse.**java<http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java>
>> >)
>> tu verras comment proceder.
>> 1. il te faudrait deux fichiers de parametres :
>> selectiviteLangoustine.txt et selectiviteMerlu.txt
>> chacun de ces fichiers doit contenir autant de lignes qu'il y a de
>> courbes à tester (et le meme nombre pour les 2 fichiers)
>> 1 = "equationselectivite1"
>> 2= "equationselectivite2"
>> ...
>> 2. tu construis un fichier matrix.txt avec 2 colonnes
>> (selectiviteLangoustine et selectiviteMerlu) et n lignes (le
>> nombre de courbes à tester)
>> 1;1
>> 2;2
>> ...
>> n;n
>> 3. tu suis les instructions pour que dans la boucle tu reaffactes
>> la courbe de selectivite pour chaque population et chaque engin
>> concerné
>>
>> je te prepare un essai de script
>> stephanie
>>
>> camille de la Vega a écrit :
>>
>> Bonjour,
>> Je voudrais faire un plan d'analyse pour faire plusieurs
>> simulations à la suite avec chacune une sélectivité différente
>> pour les engins "chalut". J'ai 7 sélectivités à tester. Je
>> vous envoie mon script qui ne compile pas.
>> Merci !!
>> Camille
>> ------------------------------**------------------------------**
>> ------------
>>
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org<Isis-fish-users@list.isis-fish.org>
>> <mailto:Isis-fish-users@list.**isis-fish.org<Isis-fish-users@list.isis-fish.org>>
>>
>>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**
>> fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>> -- ..............................**..............................*
>> *..........
>> Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr
>> <mailto:Stephanie.Mahevas@**ifremer.fr <Stephanie.Mahevas@ifremer.fr>>)
>>
>>
>> IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2
>> 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __|
>> \ / |__ o _ \ o / o
>> /|\ | /\ ___\o \o | o/ o/__ /\ | /|\
>> / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \
>> ..............................**..............................**
>> ..........
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org<Isis-fish-users@list.isis-fish.org>
>> <mailto:Isis-fish-users@list.**isis-fish.org<Isis-fish-users@list.isis-fish.org>>
>>
>>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>> ------------------------------**------------------------------**
>> ------------
>>
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org <Isis-fish-users@list.isis-fish.org>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>
> --
> ..............................**..............................**..........
> Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr)
> IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41
> 81 Fax: (33) 2 40 37 40 75
> o \ o / _ o __| \ / |__ o _ \ o / o
> /|\ | /\ ___\o \o | o/ o/__ /\ | /|\
> / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \
> ..............................**..............................**..........
>
>
> 0 = "Math.exp(a1+b1*group.getLength())/(1+Math.exp((a1)+b1*
> group.getLength()))"
> 1= "Math.exp(a2+b2*group.getLength())/(1+Math.exp((a2)+b2*
> group.getLength())); "
>
> A COMPLETER
>
> 0;0
> 1;1
> 2;2
> 3;3
> 4;4
> 5;5
> 6;6
> /*
> * Copyright (C) 2011 Camille
> *
> * This program is free software; you can redistribute it and/or
> * modify it under the terms of the GNU General Public License
> * as published by the Free Software Foundation; either version 2
> * of the License, or (at your option) any later version.
> *
> * This program is distributed in the hope that it will be useful,
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> * GNU General Public License for more details.
> *
> * You should have received a copy of the GNU General Public License
> * along with this program; if not, write to the Free Software
> * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
> USA.
> */
>
> package analyseplans;
>
> import static org.nuiton.i18n.I18n._;
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>
> import scripts.ResultName;
>
> import java.io.Writer;
> import org.nuiton.math.matrix.*;
> import org.nuiton.util.*;
> import org.nuiton.topia.*;
>
> import fr.ifremer.isisfish.util.Doc;
> import fr.ifremer.isisfish.*;
> import fr.ifremer.isisfish.simulator.SimulationContext;
> import fr.ifremer.isisfish.types.Date;
> import fr.ifremer.isisfish.entities.*;
> import fr.ifremer.isisfish.simulator.AnalysePlan;
> import fr.ifremer.isisfish.simulator.AnalysePlanContext;
> import fr.ifremer.isisfish.simulator.SimulationParameter;
> import fr.ifremer.isisfish.datastore.SimulationStorage;
> import fr.ifremer.isisfish.datastore.ResultStorage;
>
> /**
> * SELECTIVITY.java
> *
> * Created: 27 juin 2011
> *
> * @author Camille <user.name@vcs.hostName>
> * @version $Revision: 1545 $
> * Last update: $Date: 27 juin 2011 $
> * by : $Author: Camille $
> */
> public class SELECTIVITY implements AnalysePlan {
>
> /** to use log facility, just put in your code: log.info("..."); */
> private static Log log = LogFactory.getLog(SELECTIVITY.class);
>
> static private final String MATRIXSELECTIVITE = "matrixSelectivite"; ///
> Le fichier est donc matrixSelectivite.txt
> static private final String SELECTIVITYMERLU = "selectivityMerlu";
> static private final String SELECTIVITYLANGOUSTINE =
> "selectivityLangoustine";
>
> int param_parameterNumber = 2;
> public int param_first = 0;
> public param_simulationNumber = 7; //nombre de courbes de
> selectivite a tester
> public String param_directory = ""; //repertoir ou sont ranges les
> fichiers
> matrixSelectivite.txt,selectivityMerlu.txt,selectivityLangoustine.txt
>
> 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 {
> // TODO change descrition
> return _("TODO SELECTIVITY description plan");
> }
>
> /**
> * 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 {
> File dir = new File(param_directory);
>
> matrix = MatrixFactory.getInstance().create(new
> int[]{param_simulationNumber, param_parameterNumber});
> matrix.importCSV(new FileReader(new File(dir, MATRIXSELECTIVITE +
> ".txt")), new int[]{0,0});
> matrix.setSemantics(1, Arrays.asList(new String[]{SELECTIVITYMERLU,
> SELECTIVITYLANGOUSTINE}));
> System.out.println(matrix);
> }
>
>
>
>
> /**
> * @param name le nom de l'element a recuperer
> * @param simulation le numero de la simulation
> * @return
> */
> private String getString(String name, int simulation) throws Exception {
> File dir = new File(param_directory);
> Properties prop = new Properties();
> prop.load(new BufferedReader(new FileReader(new File(dir, name +
> ".txt"))));
> int ligne = simulation + param_first;
> int mod = (int)matrix.getValue(ligne , name);
> String result = prop.getProperty(""+mod);
> return result;
> }
>
> /**
> * 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
> */
>
>
> // partie ou on decide si on refait une simulation ou si on s'arrete.
> public boolean beforeSimulation(AnalysePlanContext context,
> SimulationStorage nextSimulation) throws Exception {
> int simNum =
> nextSimulation.getParameter().getAnalysePlanNumber();
> if (simNum + param_first < param_simulationNumber) {
> String selectivityMerlu = getString (SELECTIVITYMERLU,
> simNum);
> String selectivityLangoustine = getString
> (SELECTIVITYLANGOUSTINE, simNum);
>
>
> nextSimulation.getInformation().addInformation("Selectivity Merlu
> ("+context.getNumber()+")= " + selectivityMerlu);
>
> nextSimulation.getInformation().addInformation("Selectivity Langoustine
> ("+context.getNumber()+")= " + selectivityLangoustine);
>
> /// modif les parametres dans la base de données :
> TopiaContext tx =
> nextSimulation.getStorage().beginTransaction();
> /// On récupère les objets ISIS a modifier dans la base de
> données
> PopulationDAO popDAO =
> IsisFishDAOHelper.getPopulationDAO(tx);
> Population popMerlu =
> popDAO.findByName("merluccius");
> Population popLangoustine =
> popDAO.findByName("nephrops");
> GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx);
>
> Gear gearChalutSimple = GearDAO.findByName("chalut
> simple");
> Gear gearChalutJumeau = GearDAO.findByName("Chalut
> jumeau");
>
> Selectivity selMerlu =
> gearChalutSimple.getPopulationSelectivity(popMerlu);
> Equation eqMerlu = selMerlu.getEquation();
> eqMerlu.setContent(selectivityMerlu);
> Selectivity selLangoustine =
> gearChalutSimple.getPopulationSelectivity(popLangoustine);
> Equation eqLangoustine =
> selLangoustine.getEquation();
> eqLangoustine.setContent(selectivityLangoustine);
>
> Selectivity selMerlu =
> gearChalutJumeau.getPopulationSelectivity(popMerlu);
> Equation eqMerlu = selMerlu.getEquation();
> eqMerlu.setContent(selectivityMerlu);
> Selectivity selLangoustine =
> gearChalutJumeau.getPopulationSelectivity(popLangoustine);
> Equation eqLangoustine =
> selLangoustine.getEquation();
> eqLangoustine.setContent(selectivityLangoustine);
>
>
> tx.commitTransaction();
> return true;
> } else {
> return false;
> }
> }
>
>
>
> /**
> * Call after each simulation.
> *
> * @param context plan context
> * @param lastSimulation storage used for 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;
> }
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users@list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
>
Le 07/07/2011 16:17, camille de la Vega a écrit :
J'ai réussi à corriger pas mal d'erreur dans le script mais il en reste une que j'arrive pas à enlever et j'ai trop message d'erreur "deprecation" par exemple pour matrix.setSemantics. http://maven-site.nuiton.org/nuiton-matrix/apidocs/org/nuiton/math/matrix/Ma... Il y a le même code dans le script de Sigrid et ça me met le même méssage d'erreur. Je suppose donc que le code a été remplacé par un autre mais je ne trouve pas dans le site d'ISIS le nouveau code.
Il reste une seule vrai erreur, dans la methode getString() int mod = (int) matrix.getValue(ligne , name); L'object "matrix" n'existe pas. -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
Merci Eric ! Camille Le 7 juillet 2011 16:28, Eric Chatellier <chatellier@codelutin.com> a écrit :
J'ai réussi à corriger pas mal d'erreur dans le script mais il en reste une que j'arrive pas à enlever et j'ai trop message d'erreur "deprecation"
Le 07/07/2011 16:17, camille de la Vega a écrit : par
exemple pour matrix.setSemantics.
http://maven-site.nuiton.org/nuiton-matrix/apidocs/org/nuiton/math/matrix/Ma...
Il y a le même code dans le script de Sigrid et ça me met le même méssage d'erreur. Je suppose donc que le code a été remplacé par un autre mais je ne trouve pas dans le site d'ISIS le nouveau code.
Il reste une seule vrai erreur, dans la methode getString() int mod = (int) matrix.getValue(ligne , name);
L'object "matrix" n'existe pas.
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
C'est bon j'ai réglé les problème de changement de code mais je ne comprend pas pourquoi "matrix" n'existe pas puisqu'elle est définie à la ligne 118 par "MatrixND matrix=..." Camille Le 7 juillet 2011 16:28, Eric Chatellier <chatellier@codelutin.com> a écrit :
J'ai réussi à corriger pas mal d'erreur dans le script mais il en reste une que j'arrive pas à enlever et j'ai trop message d'erreur "deprecation"
Le 07/07/2011 16:17, camille de la Vega a écrit : par
exemple pour matrix.setSemantics.
http://maven-site.nuiton.org/nuiton-matrix/apidocs/org/nuiton/math/matrix/Ma...
Il y a le même code dans le script de Sigrid et ça me met le même méssage d'erreur. Je suppose donc que le code a été remplacé par un autre mais je ne trouve pas dans le site d'ISIS le nouveau code.
Il reste une seule vrai erreur, dans la methode getString() int mod = (int) matrix.getValue(ligne , name);
L'object "matrix" n'existe pas.
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Le 07/07/2011 17:08, camille de la Vega a écrit :
C'est bon j'ai réglé les problème de changement de code mais je ne comprend pas pourquoi "matrix" n'existe pas puisqu'elle est définie à la ligne 118 par "MatrixND matrix=..." Tout ce qui est définit dans un methode ne vie que dans la methode. A la fin de la methode il disparait.
Je pense que ce que tu veux, c'est l'initialiser dans l'init pour l'utiliser apres. Pour ca il faut declarer la matrice dans la classe entiere et non dans la methode: public class PlanSimuSelectivite implements AnalysePlan { protected MatrixND matrix; // <<< declaration hors de la méthode public void init(AnalysePlanContext context) throws Exception { File dir = new File(param_directory); // plus de declaration ici, seulement initialisation matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber}); matrix.importCSV(new FileReader(new File(dir, MATRIXSELECTIVITE + ".txt")), new int[]{0,0}); matrix.setSemantic(1, Arrays.asList(new String[]{SELECTIVITYMERLU, SELECTIVITYLANGOUSTINE})); System.out.println(matrix); } private String getString(String name, int simulation) throws Exception { File dir = new File(param_directory); Properties prop = new Properties(); prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt")))); int ligne = simulation + param_first; // et utilisation ici int mod = matrix.getValue(ligne , name); String result = prop.getProperty(""+mod); return result; } } -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
Merci beaucoup ! Je retiens pour la prochaine fois. Camille Le 7 juillet 2011 17:17, Eric Chatellier <chatellier@codelutin.com> a écrit :
C'est bon j'ai réglé les problème de changement de code mais je ne comprend pas pourquoi "matrix" n'existe pas puisqu'elle est définie à la ligne 118
Le 07/07/2011 17:08, camille de la Vega a écrit : par
"MatrixND matrix=..." Tout ce qui est définit dans un methode ne vie que dans la methode. A la fin de la methode il disparait.
Je pense que ce que tu veux, c'est l'initialiser dans l'init pour l'utiliser apres. Pour ca il faut declarer la matrice dans la classe entiere et non dans la methode:
public class PlanSimuSelectivite implements AnalysePlan {
protected MatrixND matrix; // <<< declaration hors de la méthode
public void init(AnalysePlanContext context) throws Exception { File dir = new File(param_directory);
// plus de declaration ici, seulement initialisation matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber}); matrix.importCSV(new FileReader(new File(dir, MATRIXSELECTIVITE + ".txt")), new int[]{0,0}); matrix.setSemantic(1, Arrays.asList(new String[]{SELECTIVITYMERLU, SELECTIVITYLANGOUSTINE})); System.out.println(matrix); }
private String getString(String name, int simulation) throws Exception { File dir = new File(param_directory); Properties prop = new Properties(); prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt")))); int ligne = simulation + param_first; // et utilisation ici int mod = matrix.getValue(ligne , name); String result = prop.getProperty(""+mod); return result; }
}
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Bonjour ! J'ai encore un problème. La simulation ne démare pas et s'arrète à janv 0. Dans le débug, il me dit "impossible d'évaluer l'équation". Ca veut dire qu'il y a un problème dans l'équation ou qu'il faut que je mette dans le code du script "public double evaluate (equation)" ? Pourtant je veux qu'il remplace l'équation de sélectivité dans la base pas qu'il trouve le résultat... Je vous envoie le fichier.txt contenant les équations. Camille Le 7 juillet 2011 17:17, Eric Chatellier <chatellier@codelutin.com> a écrit :
C'est bon j'ai réglé les problème de changement de code mais je ne comprend pas pourquoi "matrix" n'existe pas puisqu'elle est définie à la ligne 118
Le 07/07/2011 17:08, camille de la Vega a écrit : par
"MatrixND matrix=..." Tout ce qui est définit dans un methode ne vie que dans la methode. A la fin de la methode il disparait.
Je pense que ce que tu veux, c'est l'initialiser dans l'init pour l'utiliser apres. Pour ca il faut declarer la matrice dans la classe entiere et non dans la methode:
public class PlanSimuSelectivite implements AnalysePlan {
protected MatrixND matrix; // <<< declaration hors de la méthode
public void init(AnalysePlanContext context) throws Exception { File dir = new File(param_directory);
// plus de declaration ici, seulement initialisation matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber}); matrix.importCSV(new FileReader(new File(dir, MATRIXSELECTIVITE + ".txt")), new int[]{0,0}); matrix.setSemantic(1, Arrays.asList(new String[]{SELECTIVITYMERLU, SELECTIVITYLANGOUSTINE})); System.out.println(matrix); }
private String getString(String name, int simulation) throws Exception { File dir = new File(param_directory); Properties prop = new Properties(); prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt")))); int ligne = simulation + param_first; // et utilisation ici int mod = matrix.getValue(ligne , name); String result = prop.getProperty(""+mod); return result; }
}
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Le 08/07/2011 10:12, camille de la Vega a écrit :
Bonjour !
J'ai encore un problème. La simulation ne démare pas et s'arrète à janv 0. Dans le débug, il me dit "impossible d'évaluer l'équation". Ca veut dire qu'il y a un problème dans l'équation ou qu'il faut que je mette dans le code du script "public double evaluate (equation)" ? Pourtant je veux qu'il remplace l'équation de sélectivité dans la base pas qu'il trouve le résultat... Je vous envoie le fichier.txt contenant les équations.
Il manque un "return" avec une valeur de retour pour que l'equation soit correcte. -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
Je pensais que "eqMerluSimp.setContent(selectivityMerlu);" équivalait à un "return" pour les équations. Il y a un "return=TRUE" dans le "if" puisque c'est un booléen. Ce n'est pas dans cette boucle que je dois mettre le return ? Le 8 juillet 2011 10:49, Eric Chatellier <chatellier@codelutin.com> a écrit :
Bonjour !
J'ai encore un problème. La simulation ne démare pas et s'arrète à janv
Le 08/07/2011 10:12, camille de la Vega a écrit : 0.
Dans le débug, il me dit "impossible d'évaluer l'équation". Ca veut dire qu'il y a un problème dans l'équation ou qu'il faut que je mette dans le code du script "public double evaluate (equation)" ? Pourtant je veux qu'il remplace l'équation de sélectivité dans la base pas qu'il trouve le résultat... Je vous envoie le fichier.txt contenant les équations.
Il manque un "return" avec une valeur de retour pour que l'equation soit correcte.
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Le 08/07/2011 11:11, camille de la Vega a écrit :
Je pensais que "eqMerluSimp.setContent(selectivityMerlu);" équivalait à un "return" pour les équations. Il y a un "return=TRUE" dans le "if" puisque c'est un booléen. Ce n'est pas dans cette boucle que je dois mettre le return ? La chaine selectivityMerlu doit contenir une instruction return.
Je pense que le contenu de ton fichier doit etre celui-ci : 0="return Math.exp(-6.6117851+0.3487131*group.getLength())/(1+Math.exp((-6.6117851+0)+0.3487131*group.getLength()));" 1="return Math.exp(-7.0728618+0.3814865*group.getLength())/(1+Math.exp((-7.0728618)+0.3814865*group.getLength()));" 2="return Math.exp(-5.29+0.21*group.getLength())/(1+Math.exp((-5.29)+0.21*group.getLength()));" 3="return Math.exp(-9.1+0.32*group.getLength())/(1+Math.exp((-9.1)+0.32*group.getLength()));" 4="return Math.exp(-9.3+0.24*group.getLength())/(1+Math.exp((-9.3)+0.24*group.getLength()));" 5="return Math.exp(-10.1+0.53*group.getLength())/(1+Math.exp((-10.1)+0.53*group.getLength()));" -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
ok c'est dans le fichier.txt ! Merci beaucoup ! Camille Le 8 juillet 2011 11:21, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 08/07/2011 11:11, camille de la Vega a écrit :
Je pensais que "eqMerluSimp.setContent(selectivityMerlu);" équivalait à un "return" pour les équations. Il y a un "return=TRUE" dans le "if" puisque c'est un booléen. Ce n'est pas dans cette boucle que je dois mettre le return ? La chaine selectivityMerlu doit contenir une instruction return.
Je pense que le contenu de ton fichier doit etre celui-ci : 0="return
Math.exp(-6.6117851+0.3487131*group.getLength())/(1+Math.exp((-6.6117851+0)+0.3487131*group.getLength()));" 1="return
Math.exp(-7.0728618+0.3814865*group.getLength())/(1+Math.exp((-7.0728618)+0.3814865*group.getLength()));" 2="return
Math.exp(-5.29+0.21*group.getLength())/(1+Math.exp((-5.29)+0.21*group.getLength()));" 3="return
Math.exp(-9.1+0.32*group.getLength())/(1+Math.exp((-9.1)+0.32*group.getLength()));" 4="return
Math.exp(-9.3+0.24*group.getLength())/(1+Math.exp((-9.3)+0.24*group.getLength()));" 5="return
Math.exp(-10.1+0.53*group.getLength())/(1+Math.exp((-10.1)+0.53*group.getLength()));"
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
ça marche toujours pas. Ca me met le même message d'erreur (qu'il arrive pas à evaluer l'équation). Pourtant j'ai essayer de les mettre dans la base directement et elle compile bien (les équations). Le 8 juillet 2011 11:21, Eric Chatellier <chatellier@codelutin.com> a écrit :
Le 08/07/2011 11:11, camille de la Vega a écrit :
Je pensais que "eqMerluSimp.setContent(selectivityMerlu);" équivalait à un "return" pour les équations. Il y a un "return=TRUE" dans le "if" puisque c'est un booléen. Ce n'est pas dans cette boucle que je dois mettre le return ? La chaine selectivityMerlu doit contenir une instruction return.
Je pense que le contenu de ton fichier doit etre celui-ci : 0="return
Math.exp(-6.6117851+0.3487131*group.getLength())/(1+Math.exp((-6.6117851+0)+0.3487131*group.getLength()));" 1="return
Math.exp(-7.0728618+0.3814865*group.getLength())/(1+Math.exp((-7.0728618)+0.3814865*group.getLength()));" 2="return
Math.exp(-5.29+0.21*group.getLength())/(1+Math.exp((-5.29)+0.21*group.getLength()));" 3="return
Math.exp(-9.1+0.32*group.getLength())/(1+Math.exp((-9.1)+0.32*group.getLength()));" 4="return
Math.exp(-9.3+0.24*group.getLength())/(1+Math.exp((-9.3)+0.24*group.getLength()));" 5="return
Math.exp(-10.1+0.53*group.getLength())/(1+Math.exp((-10.1)+0.53*group.getLength()));"
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Le 08/07/2011 11:49, camille de la Vega a écrit :
ça marche toujours pas. Ca me met le même message d'erreur (qu'il arrive pas à evaluer l'équation). Pourtant j'ai essayer de les mettre dans la base directement et elle compile bien (les équations). Je n'avais pas fait attention, mais il y a des quotes dans le fichier "" et il le met dans le contenu de l'equation et c'est ca qui ne compile pas.
Si tu les enlèves, ca devrait être mieux. -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
Ok ! Merci ! Le 8 juillet 2011 11:57, Eric Chatellier <chatellier@codelutin.com> a écrit :
ça marche toujours pas. Ca me met le même message d'erreur (qu'il arrive
Le 08/07/2011 11:49, camille de la Vega a écrit : pas à
evaluer l'équation). Pourtant j'ai essayer de les mettre dans la base directement et elle compile bien (les équations). Je n'avais pas fait attention, mais il y a des quotes dans le fichier "" et il le met dans le contenu de l'equation et c'est ca qui ne compile pas.
Si tu les enlèves, ca devrait être mieux.
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
c'est bon ça marche ! Le 8 juillet 2011 11:57, Eric Chatellier <chatellier@codelutin.com> a écrit :
ça marche toujours pas. Ca me met le même message d'erreur (qu'il arrive
Le 08/07/2011 11:49, camille de la Vega a écrit : pas à
evaluer l'équation). Pourtant j'ai essayer de les mettre dans la base directement et elle compile bien (les équations). Je n'avais pas fait attention, mais il y a des quotes dans le fichier "" et il le met dans le contenu de l'equation et c'est ca qui ne compile pas.
Si tu les enlèves, ca devrait être mieux.
-- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Est ce que je peux utilisé getValueAt à la place ?
Le 7 juillet 2011 11:41, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr> a
écrit :
> Tu n'es pas obligée mais c'est plus simple d'autant qu'il y a deja des
> exemples de scripts avec ce format.
> Pour l'instant tu n'as pas de nouvelles courbes de selectivite pour la
> langoustine. Donc deux choix
> tu recopies la courbe de la base les 7 fois; ou tu modifies le script pour
> que ça colle avec une matrice une colonne.
> Je prefererais la premiere solution car ensuite on aura des courbes de
> selectivite pour la langoustine.
> Voici un script à compiler et à tester.
> je t'ai mis le fichier matrix + un debut de fichier selectiviteMerlu. ce
> dernier est à finir de remplir + mettre les valeurs a1, b1 ....
> A+
>
> stephanie
>
> camille de la Vega a écrit :
>
>> Ok. Je ne pensais pas que j'avais besoin de passer par des fichiers .txt
>> obligatoirement.
>>
>> Et pour les sélectivités des langoustines, je n'ai pas de courbes de
>> sélectivité à tester pour l'instant. Si les sélectivités ne change pas,
>> est-il nécessaire de créer un fichier "selectivité langoustine" ? Si oui ça
>> veut dire que je mettrais 7 fois (si j'ai 7 courbes à tester pour le merlu)
>> la même equation de sélectivité langoustine dans le fichier "langoustine" ?
>>
>>
>> Le 7 juillet 2011 11:01, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr<mailto:
>> Stephanie.Mahevas@**ifremer.fr <Stephanie.Mahevas@ifremer.fr>>> a écrit :
>>
>>
>>
>> Bonjour Camille
>>
>> ca ne me semble pas correct comme maniere d'ecrire le plan.
>> Si tu vas à sur le site d'ISIS
>> (http://isis-fish.labs.libre-**entreprise.org/wiki-moin/**
>> instance/cgi-bin/moin.cgi/v3/**usermanual/tuto/PlanAnalyse?**
>> action=AttachFile&do=view&**target=Exemple_PlanAnalyse.**java<http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java>
>> <http://isis-fish.labs.libre-**entreprise.org/wiki-moin/**
>> instance/cgi-bin/moin.cgi/v3/**usermanual/tuto/PlanAnalyse?**
>> action=AttachFile&do=view&**target=Exemple_PlanAnalyse.**java<http://isis-fish.labs.libre-entreprise.org/wiki-moin/instance/cgi-bin/moin.cgi/v3/usermanual/tuto/PlanAnalyse?action=AttachFile&do=view&target=Exemple_PlanAnalyse.java>
>> >)
>> tu verras comment proceder.
>> 1. il te faudrait deux fichiers de parametres :
>> selectiviteLangoustine.txt et selectiviteMerlu.txt
>> chacun de ces fichiers doit contenir autant de lignes qu'il y a de
>> courbes à tester (et le meme nombre pour les 2 fichiers)
>> 1 = "equationselectivite1"
>> 2= "equationselectivite2"
>> ...
>> 2. tu construis un fichier matrix.txt avec 2 colonnes
>> (selectiviteLangoustine et selectiviteMerlu) et n lignes (le
>> nombre de courbes à tester)
>> 1;1
>> 2;2
>> ...
>> n;n
>> 3. tu suis les instructions pour que dans la boucle tu reaffactes
>> la courbe de selectivite pour chaque population et chaque engin
>> concerné
>>
>> je te prepare un essai de script
>> stephanie
>>
>> camille de la Vega a écrit :
>>
>> Bonjour,
>> Je voudrais faire un plan d'analyse pour faire plusieurs
>> simulations à la suite avec chacune une sélectivité différente
>> pour les engins "chalut". J'ai 7 sélectivités à tester. Je
>> vous envoie mon script qui ne compile pas.
>> Merci !!
>> Camille
>> ------------------------------**------------------------------**
>> ------------
>>
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org<Isis-fish-users@list.isis-fish.org>
>> <mailto:Isis-fish-users@list.**isis-fish.org<Isis-fish-users@list.isis-fish.org>>
>>
>>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**
>> fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>> -- ..............................**..............................*
>> *..........
>> Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr
>> <mailto:Stephanie.Mahevas@**ifremer.fr <Stephanie.Mahevas@ifremer.fr>>)
>>
>>
>> IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2
>> 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __|
>> \ / |__ o _ \ o / o
>> /|\ | /\ ___\o \o | o/ o/__ /\ | /|\
>> / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \
>> ..............................**..............................**
>> ..........
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org<Isis-fish-users@list.isis-fish.org>
>> <mailto:Isis-fish-users@list.**isis-fish.org<Isis-fish-users@list.isis-fish.org>>
>>
>>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>> ------------------------------**------------------------------**
>> ------------
>>
>> ______________________________**_________________
>> Isis-fish-users mailing list
>> Isis-fish-users@list.isis-**fish.org <Isis-fish-users@list.isis-fish.org>
>> http://list.isis-fish.org/cgi-**bin/mailman/listinfo/isis-**fish-users<http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users>
>>
>>
>
> --
> ..............................**..............................**..........
> Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr)
> IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41
> 81 Fax: (33) 2 40 37 40 75
> o \ o / _ o __| \ / |__ o _ \ o / o
> /|\ | /\ ___\o \o | o/ o/__ /\ | /|\
> / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \
> ..............................**..............................**..........
>
>
> 0 = "Math.exp(a1+b1*group.getLength())/(1+Math.exp((a1)+b1*
> group.getLength()))"
> 1= "Math.exp(a2+b2*group.getLength())/(1+Math.exp((a2)+b2*
> group.getLength())); "
>
> A COMPLETER
>
> 0;0
> 1;1
> 2;2
> 3;3
> 4;4
> 5;5
> 6;6
> /*
> * Copyright (C) 2011 Camille
> *
> * This program is free software; you can redistribute it and/or
> * modify it under the terms of the GNU General Public License
> * as published by the Free Software Foundation; either version 2
> * of the License, or (at your option) any later version.
> *
> * This program is distributed in the hope that it will be useful,
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> * GNU General Public License for more details.
> *
> * You should have received a copy of the GNU General Public License
> * along with this program; if not, write to the Free Software
> * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
> USA.
> */
>
> package analyseplans;
>
> import static org.nuiton.i18n.I18n._;
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
>
> import scripts.ResultName;
>
> import java.io.Writer;
> import org.nuiton.math.matrix.*;
> import org.nuiton.util.*;
> import org.nuiton.topia.*;
>
> import fr.ifremer.isisfish.util.Doc;
> import fr.ifremer.isisfish.*;
> import fr.ifremer.isisfish.simulator.SimulationContext;
> import fr.ifremer.isisfish.types.Date;
> import fr.ifremer.isisfish.entities.*;
> import fr.ifremer.isisfish.simulator.AnalysePlan;
> import fr.ifremer.isisfish.simulator.AnalysePlanContext;
> import fr.ifremer.isisfish.simulator.SimulationParameter;
> import fr.ifremer.isisfish.datastore.SimulationStorage;
> import fr.ifremer.isisfish.datastore.ResultStorage;
>
> /**
> * SELECTIVITY.java
> *
> * Created: 27 juin 2011
> *
> * @author Camille <user.name@vcs.hostName>
> * @version $Revision: 1545 $
> * Last update: $Date: 27 juin 2011 $
> * by : $Author: Camille $
> */
> public class SELECTIVITY implements AnalysePlan {
>
> /** to use log facility, just put in your code: log.info("..."); */
> private static Log log = LogFactory.getLog(SELECTIVITY.class);
>
> static private final String MATRIXSELECTIVITE = "matrixSelectivite"; ///
> Le fichier est donc matrixSelectivite.txt
> static private final String SELECTIVITYMERLU = "selectivityMerlu";
> static private final String SELECTIVITYLANGOUSTINE =
> "selectivityLangoustine";
>
> int param_parameterNumber = 2;
> public int param_first = 0;
> public param_simulationNumber = 7; //nombre de courbes de
> selectivite a tester
> public String param_directory = ""; //repertoir ou sont ranges les
> fichiers
> matrixSelectivite.txt,selectivityMerlu.txt,selectivityLangoustine.txt
>
> 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 {
> // TODO change descrition
> return _("TODO SELECTIVITY description plan");
> }
>
> /**
> * 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 {
> File dir = new File(param_directory);
>
> matrix = MatrixFactory.getInstance().create(new
> int[]{param_simulationNumber, param_parameterNumber});
> matrix.importCSV(new FileReader(new File(dir, MATRIXSELECTIVITE +
> ".txt")), new int[]{0,0});
> matrix.setSemantics(1, Arrays.asList(new String[]{SELECTIVITYMERLU,
> SELECTIVITYLANGOUSTINE}));
> System.out.println(matrix);
> }
>
>
>
>
> /**
> * @param name le nom de l'element a recuperer
> * @param simulation le numero de la simulation
> * @return
> */
> private String getString(String name, int simulation) throws Exception {
> File dir = new File(param_directory);
> Properties prop = new Properties();
> prop.load(new BufferedReader(new FileReader(new File(dir, name +
> ".txt"))));
> int ligne = simulation + param_first;
> int mod = (int)matrix.getValue(ligne , name);
> String result = prop.getProperty(""+mod);
> return result;
> }
>
> /**
> * 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
> */
>
>
> // partie ou on decide si on refait une simulation ou si on s'arrete.
> public boolean beforeSimulation(AnalysePlanContext context,
> SimulationStorage nextSimulation) throws Exception {
> int simNum =
> nextSimulation.getParameter().getAnalysePlanNumber();
> if (simNum + param_first < param_simulationNumber) {
> String selectivityMerlu = getString (SELECTIVITYMERLU,
> simNum);
> String selectivityLangoustine = getString
> (SELECTIVITYLANGOUSTINE, simNum);
>
>
> nextSimulation.getInformation().addInformation("Selectivity Merlu
> ("+context.getNumber()+")= " + selectivityMerlu);
>
> nextSimulation.getInformation().addInformation("Selectivity Langoustine
> ("+context.getNumber()+")= " + selectivityLangoustine);
>
> /// modif les parametres dans la base de données :
> TopiaContext tx =
> nextSimulation.getStorage().beginTransaction();
> /// On récupère les objets ISIS a modifier dans la base de
> données
> PopulationDAO popDAO =
> IsisFishDAOHelper.getPopulationDAO(tx);
> Population popMerlu =
> popDAO.findByName("merluccius");
> Population popLangoustine =
> popDAO.findByName("nephrops");
> GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx);
>
> Gear gearChalutSimple = GearDAO.findByName("chalut
> simple");
> Gear gearChalutJumeau = GearDAO.findByName("Chalut
> jumeau");
>
> Selectivity selMerlu =
> gearChalutSimple.getPopulationSelectivity(popMerlu);
> Equation eqMerlu = selMerlu.getEquation();
> eqMerlu.setContent(selectivityMerlu);
> Selectivity selLangoustine =
> gearChalutSimple.getPopulationSelectivity(popLangoustine);
> Equation eqLangoustine =
> selLangoustine.getEquation();
> eqLangoustine.setContent(selectivityLangoustine);
>
> Selectivity selMerlu =
> gearChalutJumeau.getPopulationSelectivity(popMerlu);
> Equation eqMerlu = selMerlu.getEquation();
> eqMerlu.setContent(selectivityMerlu);
> Selectivity selLangoustine =
> gearChalutJumeau.getPopulationSelectivity(popLangoustine);
> Equation eqLangoustine =
> selLangoustine.getEquation();
> eqLangoustine.setContent(selectivityLangoustine);
>
>
> tx.commitTransaction();
> return true;
> } else {
> return false;
> }
> }
>
>
>
> /**
> * Call after each simulation.
> *
> * @param context plan context
> * @param lastSimulation storage used for 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;
> }
>
> _______________________________________________
> Isis-fish-users mailing list
> Isis-fish-users@list.isis-fish.org
> http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
>
>
participants (3)
-
camille de la Vega -
Eric Chatellier -
Stephanie MAHEVAS