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
        EffortReduction test = 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-projets/DEFIPEL
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_Landing.aspx
https://halgo.ifremer.fr/en
https://www.umr-decod.fr/en
https://www.association-francaise-halieutique.fr/