[Isis-fish-user] changement paramètre controlable
Bonjour à tous, Je voudrais modifier les paramètres contrôlables de l’engin filet mer, en faisant trois simulations en modifiant la valeur du paramètre contrôlable de l’engin pour les 2 métiers(FiletMer et Filetreserve). Mais je suis confrontée au problème suivant: Les trois simulations donnent les même résulte, je pense que j’ai male transformé le double en string Si quelque un pouvait m’aider ? Je vous envoie le scripte en attache. Merci bien pour votre aide. Chirine.
Salut Chirine, En effet j ai un doute sur la manière de modifier le parametre controlable, je ne l ai jamais fait. la méthode setGearParameterValue(String) n'est pas renseignée dans l'API.... Dans l'interface il y a 3 cases : Parametre technique, Gamme de valeurs : integer- float-string, et valeur. Du coup je pense que setGearParameterValue modifie le parametre technique (son nom) mais pas sa valeur... Les lutins qu'en est il ??? comment qu on fait ?? Merci ! a+ Sigrid chirine HUSSEIN a écrit :
Bonjour à tous,
Je voudrais modifier les paramètres contrôlables de l’engin filet mer, en faisant trois simulations en modifiant la valeur du paramètre contrôlable de l’engin pour les 2 métiers (FiletMer et Filetreserve). Mais je suis confrontée au problème suivant:
Les trois simulations donnent les même résulte, je pense que j’ai male transformé le double en string
Si quelque un pouvait m’aider ?
Je vous envoie le scripte en attache.
Merci bien pour votre aide.
Chirine.
------------------------------------------------------------------------
package analyseplans;
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 java.io.*; import java.io.File; import java.io.FileReader; import java.util.*; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties;
import org.codelutin.math.matrix.*; import org.codelutin.util.*; import org.codelutin.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;
/** * ChangParFilet.java * * Created: 1 juillet 2009 * * @author HUSSEIN chirine <m475chi@yahoo.fr> * */ public class ChangParFilet implements AnalysePlan {
/** to use log facility, just put in your code: log.info("..."); */ static private Log log = LogFactory.getLog(ChangParFilet.class); static private final String MATRIX = "matrix"; static private final String PAR_VALUE = "ParameterValue";
public int param_parameterNumber = 1 ; /// ce paramètre n'est normalement pas modifié public int param_first = 0; /// on utilise ce paramètre pour indiquer à quelle ligne /// de la matrice on doit commencer à faire tourner les simulations au cas où on ait dû interompre le plan public int param_simulationNumber = 3;/// ce paramètre n'est normalement pas modifié public String param_directory = "C:/Documents and Settings/hussein/Bureau/isis-fish-3.1.3/isis-fish-3.1.3/ChangParamConrolable//";
private MatrixND matrix = 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 le plan. * @return L'aide ou la description du plan */
public String getDescription() throws Exception { // TODO return _("réalise le plan de simulation pour un paramètres à 3 modalité"); } /** * 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(AnalysePlanContext context) throws Exception { File dir = new File(param_directory);
matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber+2}); matrix.importCSV(new FileReader(new File(dir, MATRIX + ".txt")), new int[]{0,0}); matrix.setSemantics(1, Arrays.asList(new String[]{PAR_VALUE}));
//log.info("Matrix: " + matrix);
}
/** * @param name le nom de l'element a recuperer * @param simulation le numero de la simulation * @return */ private double getDouble(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"))));
// va chercher dans matrix si c est la modalité 1 ou -1 du facteur int ligne = simulation + param_first; int mod = (int)matrix.getValue(ligne, name); double result = Double.parseDouble(prop.getProperty(""+mod)); return result; }
private double [] getList(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); double [] result = StringUtil.toArrayDouble(prop.getProperty(""+mod).split(";")); return result; }
/** * @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 */ public boolean beforeSimulation(AnalysePlanContext context, SimulationStorage nextSimulation) throws Exception { //String [] values = new String[]{"ParameterValue"};// values devient un parametre du plan d analyse int simNum = context.getNumber(); if (simNum < param_simulationNumber+1) {
double ParameterValue = getDouble (PAR_VALUE, simNum);
TopiaContext tx = nextSimulation.getStorage().beginTransaction(); PopulationDAO popDAO = IsisFishDAOHelper.getPopulationDAO(tx); Population pop = popDAO.findByName("CSar"); List<PopulationGroup> groups = pop.getPopulationGroup(); MetierDAO metierDAO = IsisFishDAOHelper.getMetierDAO(tx); List<Metier> metiers = metierDAO.findAll(); GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx); List<Gear> gears = gearDAO.findAll();
for(Metier metier : metiers){ log.info("metier examiné " + metier.getName() + " son engin " + metier.getGear().getName());
String str1 = String.valueOf(ParameterValue); //System.out.println( "str1 = " + str1 ); String str2 = Double.toString(ParameterValue); //System.out.println( "str2 = " + str2 );
if ("FiletMer".equals(metier.getName()) || "FiletRreserve".equals(metier.getName())){
metier.setGearParameterValue(str2);
} } tx.commitTransaction();
return true; } else { return false; } }
public boolean afterSimulation(AnalysePlanContext context, SimulationStorage lastSimulation) throws Exception { return true; }
}
------------------------------------------------------------------------
_______________________________________________ Isis-fish-user mailing list Isis-fish-user@lists.labs.libre-entreprise.org http://lists.labs.libre-entreprise.org/mailman/listinfo/isis-fish-user
-- Sigrid LEHUTA ~ ><> ~ Doctorante Département Ecologie et Modèles pour l'Halieutique IFREMER, rue de l'ile d'Yeu BP 21105 44311 Nantes Cedex 03 Tél : +33 (0)2 40 37 41 65
Salut Changer le parametre contolable ne peut avoir d'influence que si le parametre controlable intervient dans l'equation de selectivite... Or dans la base qu'Eric a (Banuyls), la selectivite est uniqument une fonction de la taille et pas du parametre controlable, donc ca parait normal que les resultats soient identiques. Juste un petit rappel: Dans Engin, il y a 1. le nom du parametre controlable de l'engin - par definition parametre controlable est un parametre que l'on peut controler dans une mesure de gestion (par exemple la taille de la maille, ou la taille d'hameçons, ...) - son type (entier, charactère, réel, ...) et la gamme de valeur possible (maille de 10 mm à 100 mm) 2. pour chaque espece capturable par l'engin la courbe de selectivite qui est sensée faire intervenir le parametre controlable si on veut tester des mesures de gestion de sélectivité réglementant le parametre controlable. Dans métier, il y a 0. engin 1. la valeur du parametre controlable de l'engin pour ce metier (par exemple, maille = 50mm) 2. la gamme de variation du parametre pour ce metier (par exemple 40-60 mm, ie, on reste dans le metier si maille est comprise entre 40 mm et 60 mm, si la maille devient 70 mm via une mesure de gestion alors il faut definir un nouveau metier faisant intervenir cette nouvelle taille de maille) Stephanie Sigrid LEHUTA a écrit :
Salut Chirine, En effet j ai un doute sur la manière de modifier le parametre controlable, je ne l ai jamais fait. la méthodesetGearParameterValue(String) n'est pas renseignée dans l'API.... Dans l'interface il y a 3 cases : Parametre technique, Gamme de valeurs : integer- float-string, et valeur.Du coup je pense que setGearParameterValue modifie le parametre technique (son nom) mais pas sa valeur... Les lutins qu'en est il ??? comment qu on fait ?? Merci !a+Sigrid
chirine HUSSEIN a écrit :>> Bonjour à tous,>> Je voudrais modifier les paramètres contrôlables de l’engin filet mer, > en faisant trois simulations en modifiant la valeur du paramètre > contrôlable de l’engin pour les 2 métiers (FiletMer et Filetreserve). > Mais je suis confrontée au problème suivant:>> Les trois simulations donnent les même résulte, je pense que j’ai > male transformé le double en string>> Si quelque un pouvait m’aider ?>> Je vous envoie le scripte en attache.>> >> Merci bien pour votre aide.>> >> Chirine.>>> ------------------------------------------------------------------------>> package analyseplans;>> 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 java.io.*;> import java.io.File;> import java.io.FileReader;> import java.util.*;> import java.util.Arrays;> import java.util.Collection;> import java.util.Collections;> import java.util.HashMap;> import java.util.List;> import java.util.Map;> import java.util.Properties;>> import org.codelutin.math.matrix.*;> import org.codelutin.util.*;> import org.codelutin.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;>>> /**> * ChangParFilet.java> *> * Created: 1 juillet 2009> *> * @author HUSSEIN chirine <m475chi@yahoo.fr>> *> */> public class ChangParFilet implements AnalysePlan {>> /** to use log facility, just put in your code: log.info("..."); */> static private Log log = LogFactory.getLog(ChangParFilet.class);> static private final String MATRIX = "matrix";> static private final String PAR_VALUE = "ParameterValue"; >> > public int param_parameterNumber = 1 ; /// ce paramètre n'est normalement pas modifié> public int param_first = 0; /// on utilise ce paramètre pour indiquer à quelle ligne > /// de la matrice on doit commencer à faire tourner les simulations au cas où on ait dû interompre le plan> public int param_simulationNumber = 3;/// ce paramètre n'est normalement pas modifié > public String param_directory = "C:/Documents and Settings/hussein/Bureau/isis-fish-3.1.3/isis-fish-3.1.3/ChangParamConrolable//";>>> private MatrixND matrix = 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 le plan.> * @return L'aide ou la description du plan> */>> public String getDescription() throws Exception {> // TODO> return _("réalise le plan de simulation pour un paramètres à 3 modalité");> }> /**> * 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(AnalysePlanContext context) throws Exception {> File dir = new File(param_directory);> > matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber+2});> matrix.importCSV(new FileReader(new File(dir, MATRIX + ".txt")), new int[]{0,0});> matrix.setSemantics(1, Arrays.asList(new String[]{PAR_VALUE}));> > //log.info("Matrix: " + matrix);> > }> > /**> * @param name le nom de l'element a recuperer> * @param simulation le numero de la simulation> * @return> */> private double getDouble(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"))));> > // va chercher dans matrix si c est la modalité 1 ou -1 du facteur> int ligne = simulation + param_first;> int mod = (int)matrix.getValue(ligne, name);> double result = Double.parseDouble(prop.getProperty(""+mod));> return result;> }> > private double [] getList(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);> double [] result = StringUtil.toArrayDouble(prop.getProperty(""+mod).split(";"));> return result;> }>> > /**> * @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> */> public boolean beforeSimulation(AnalysePlanContext context, SimulationStorage nextSimulation) throws Exception {> //String [] values = new String[]{"ParameterValue"};// values devient un parametre du plan d analyse> int simNum = context.getNumber(); > if (simNum < param_simulationNumber+1) {> > double ParameterValue = getDouble (PAR_VALUE, simNum);> >> TopiaContext tx = nextSimulation.getStorage().beginTransaction();> PopulationDAO popDAO = IsisFishDAOHelper.getPopulationDAO(tx);
Population pop = popDAO.findByName("CSar");>
List<PopulationGroup> groups = pop.getPopulationGroup();> MetierDAO metierDAO = IsisFishDAOHelper.getMetierDAO(tx);> List<Metier> metiers = metierDAO.findAll();> GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx);> List<Gear> gears = gearDAO.findAll();> > for(Metier metier : metiers){> log.info("metier examiné " + metier.getName() + " son engin " + metier.getGear().getName());> > String str1 = String.valueOf(ParameterValue);> //System.out.println( "str1 = " + str1 );> String str2 = Double.toString(ParameterValue);> //System.out.println( "str2 = " + str2 );> > if ("FiletMer".equals(metier.getName()) || "FiletRreserve".equals(metier.getName())){> > metier.setGearParameterValue(str2);> > }
}> tx.commitTransaction();>> return
true;> } else {> return false;> }> }>> public boolean afterSimulation(AnalysePlanContext context, SimulationStorage lastSimulation) throws Exception {> return true;> }>> }>>>> > ------------------------------------------------------------------------>> _______________________________________________> Isis-fish-user mailing list> Isis-fish-user@lists.labs.libre-entreprise.org> http://lists.labs.libre-entreprise.org/mailman/listinfo/isis-fish-user -- Sigrid LEHUTA ~ ><> ~ DoctoranteDépartement Ecologie et Modèles pour l'HalieutiqueIFREMER, rue de l'ile d'Yeu BP 21105 44311 Nantes Cedex 03Tél : +33 (0)2 40 37 41 65 _______________________________________________Isis-fish-user mailing listIsis-fish-user@lists.labs.libre-entreprise.orghttp://lists.labs.libre-entreprise.org/mailman/listinfo/isis-fish-user
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: 02 40 37 41 81 Fax: 02 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
participants (3)
-
chirine HUSSEIN -
Sigrid LEHUTA -
Stephanie MAHEVAS