Merci ça tourne ! mais ca ne marche pas :-( Ce qui ne marche pas : a priori addRule et clearRules car J'ai ajouté la règle dans l'interface puis le préscript fait clearRules() puis ajoute la regle et en modifie les parametres. La simu tourne mais dans la simu la regle a les param entrés dans l'interface et non les param modifiés. Une idée ? Merci ! import fr.ifremer.isisfish.annotations.Doc; import fr.ifremer.isisfish.simulator.*;//SimulationParameter; import org.nuiton.math.matrix.MatrixFactory; import org.nuiton.math.matrix.MatrixND; import rules.EffortReduction_Fermetures_PreSimu_Delmoges; //import rules.EffortReduction; import fr.ifremer.isisfish.types.Month; import fr.ifremer.isisfish.rule.Rule; import java.util.*; import java.io.*; import java.util.regex.*; //recup num de simu String simu = context.getSimulationControl().getId(); java.util.regex.Pattern simulNamePattern =java.util.regex.Pattern.compile("^.+_(\\d+)$"); // pour un nom de simu quelconque terminant par "_XXX" XXX etat des chiffres java.util.regex.Matcher matcher =simulNamePattern.matcher(simu); matcher.find(); int numero =Integer.parseInt(matcher.group(1)); System.out.println("numero de simu : "+numero); SimulationParameter parameter = context.getSimulationStorage().getParameter(); parameter.clearRules();// suppresison des regles deja existante // read matrice d'experience matExp // [simu x rules] contient les modalités String param_pathExpMatrix ="InputsDelmoges/MatExp_fev2025.csv" ; int matrix_length =47; int parameterNumber =9; MatrixND matExp =MatrixFactory.getInstance().create(new int[]{matrix_length,parameterNumber}); matExp.importCSV(new FileReader(new File(param_pathExpMatrix)),new int[]{0,0}); List<Integer> dim0 =new ArrayList<Integer>(); for (int i=0;i <matrix_length;i++) { dim0.add(i); } matExp.setSemantic(0,dim0); matExp.setSemantic(1,Arrays.asList( new String[]{"simu","ferm1startMonth","ferm1duree","ferm1endMonth","ferm2startMonth","txReduction", "Realloc","txRealloc","txNavAQuai"})); System.out.println("plan d'exp :"+matExp); ///////////////////////////////////////////////////////////////////////////// // Read matrix values double txNavQuai =matExp.getValue(numero,"txNavAQuai"); double txRed =matExp.getValue(numero,"txReduction"); double txRealloc =matExp.getValue(numero,"txRealloc"); int Realloc = (int)matExp.getValue(numero,"Realloc"); int deb1 = (int)matExp.getValue(numero,"ferm1startMonth"); int fin1 = (int)matExp.getValue(numero,"ferm1endMonth"); int deb2 = (int)matExp.getValue(numero,"ferm2startMonth"); List<Month> months =Month.getMonths(Month.JANUARY,Month.DECEMBER); Boolean Brealloc =true; if(Realloc ==0)Brealloc =false; // test ajout d'une regle EffortReductiontest =new EffortReduction(); parameter.addRule(test); // ajout regle 1 EffortReduction_Fermetures_PreSimu_Delmoges ruleDelmoges =new EffortReduction_Fermetures_PreSimu_Delmoges(); ruleDelmoges.param_beginMonthFermeture = months.get(deb1); //ruleDelmoges.param_endMonthFermeture = months.get(fin1); ruleDelmoges.param_endMonthFermeture = months.get(0); ruleDelmoges.param_txReduction =txRed; ruleDelmoges.param_reallocation =Brealloc; ruleDelmoges.param_txReallocation =txRealloc; ruleDelmoges.param_txAquai =txNavQuai; parameter.addRule(ruleDelmoges); // ajoute regle 2 : fermeture ete si besoin if (deb2 !=13){// remettre les 2 memes pour l'ete } EffortReduction_Fermetures_PreSimu_Delmoges ferm2 =new EffortReduction_Fermetures_PreSimu_Delmoges(); ferm2.param_beginMonthFermeture =months.get(deb2); ferm2.param_endMonthFermeture =months.get(deb2); ruleDelmoges.param_txReduction =0; ruleDelmoges.param_reallocation =Brealloc; ruleDelmoges.param_txReallocation =txRealloc; ruleDelmoges.param_txAquai =txNavQuai; parameter.addRule(ferm2); } Le 24/02/2025 à 12:01, Eric Chatellier a écrit :
J'ai plusieurs erreurs dans les logs:
matrix.importCSV(new FileReader(new File(param_pathExpMatrix)), new int[]{0,0}); ^^^^^^ matrix cannot be resolved
int Realloc = matExp.getValue(numero,"Realloc"); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Type mismatch: cannot convert from double to int
int deb1 = matExp.getValue(numero,"ferm1startMonth"); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Type mismatch: cannot convert from double to int
int fin1 = matExp.getValue(numero,"ferm1endMonth"); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Type mismatch: cannot convert from double to int
int deb2 = matExp.getValue(numero,"ferm2startMonth"); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Type mismatch: cannot convert from double to int
Après, j'ai plusieurs erreur liées à "rules.EffortReduction_Fermetures_PreSimu_Delmoges", mais c'est normal je pense, car ca ne peut pas fonctionner sans qu'un plan n'ajoute la règle avec "addExtraRules". Ou alors, il faudrait que la regles soit incluse dans la simulation pour être embarquées (quitte à être supprimé par le prescript, mais ce n'est pas évident).
Le 21/02/2025 à 10:50, Sigrid LEHUTA a écrit :
Salut Eric,
le préscript ne compile pas et pas d'indication sur ce qui ne va pas. Pourrais tu y jeter un oeil s'il te plait ?
ci dessous prescript et message d'erreur.
Merci !
--------------------------
-- /!\ Boite mail saturée (en cours de nettoyage laborieux) Pour ma santé mentale et l'environnement, merci d'éviter les pièces jointes au maximum. -- Sigrid LEHUTA ><> __/\__ ~ ><> ~ \____/ ~ Fisheries modeller IFREMER - HALGO-EMH Ecology and modeling for fisheries science DECOD Dynamics and sustainability of ecosystems: from source to sea AFH Association Française d'Halieutique (AFH) Centre Atlantique - Rue de l'Ile d'Yeu BP 21105 - 44311 Nantes Cedex 03 Tel. : 02 40 37 42 38 (8238) Participez à l'ENQUETE Réduction des captures de dauphins :https://http-proxy.cloud.codelutin.com/enquete_delmoges https://peche.ifremer.fr/Le-role-de-l-Ifremer/Recherche/Projets/Description-... https://www.francefilierepeche.fr/projets/gemmbe/ https://delmoges.recherche.univ-lr.fr/presentation-du-projet/ https://www.ices.dk/advice/ESD/Pages/Bay-of-Biscay-and-the-Iberian-Coast_Lan... https://halgo.ifremer.fr/en https://www.umr-decod.fr/en https://www.association-francaise-halieutique.fr/