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