On appelle chaque occurrence differente de la regle une modalit� Ici on ne s interesse pas a la maniere de definir ces modalit�s (voir le wiki sur les plans d analyse pour l'utilisation de matrice de plan d'experience), on considere qu'on a reccuper� modencours la valeur de la modalit� pour la simu en cours. elle peut etre directement la valeur d un parametre (0.1) ou une indicatrice (1). pour modifier des param de regle dans un plan d analyse : Dans le plan d analyse 1) charger les regles en init context.getParam().addExtraRules("TACpoids","Cantonnement"); 2) en pr�-simulation pour modifier les valeurs pour la simu en cours 2 solutions - si c est un ou plusieurs param public de la regle qui doit etre modifi� NOTE : dans ce cas dans l interface de lancement de simu : ne pas ajouter les regles de gestion qui vont �tre modifi�es 2 options soit a) dans un document .txt, lister pour chaque modalit� de la regle de gestion, les valeurs prises par tous les param public (cf ANNEX en bas de page) (methode actuellement decrite dans le wiki) et dans le plan d analyse reccuperer les valeurs pour la modalit� en cours modencours (0, 1 ou 2) par la methode suivante /** * @param name le nom du fichier txt a lire * @param mod le numero de la modalit� (entier) * @return */ private Rule getRule(TopiaContext tc, String name, int mod) throws Exception { Properties prop = new Properties(); prop.load(new BufferedReader(new FileReader(new File(name+".txt")))); String ruleName = prop.getProperty(""+mod); RuleStorage ruleStorage = RuleStorage.getRule(ruleName); Rule rule = ruleStorage.getNewRuleInstance(); RuleHelper.populateRule(mod, tc, rule, prop); return rule; } Rule tac = getRule(nextSimulation.getStorage(), TAC, modencours); paramRules.add(tac); soit b) modifier les parametres de la regle directement dans le plan si par ex il n y a qu un seul param public a modifier et que sa valeur peut etre reli�e au numero de la simulation int simNum = nextSimulation.getParameter().getAnalysePlanNumber(); double tacval = 10000 * simNum ; // par ex String ruleName = "TACpoids"; Properties prop = new Properties(); prop.setProperties("rule.0.parameter.beginDate", ""+0); prop.setProperties("rule.0.parameter.endDate", ""+500); prop.setProperties("rule.0.parameter.beginMonth", ""+0); prop.setProperties("rule.0.parameter.endMonth", ""+11); prop.setProperties("rule.0.parameter.TACInTons", ""+tacval); RuleStorage ruleStorage = RuleStorage.getRule(ruleName); Rule rule = ruleStorage.getNewRuleInstance(); RuleHelper.populateRule(0, nextSimulation.getStorage(), rule, prop); paramRules.add(rule); - sinon, si les parametres a modifier ne sont pas des param public on peut dans le plan d analyse mettre la modalit� en cours en "tag value" ce qui permet de la reccuperer dans la regle de gestion au cours de la simu ////// dans le plan d experiences en pr�-simu: // reccuperer la valeur pour la simu en cours double modencours = simNum * 10000; // mettre la valeur en tag nextSimulation.getParameter().getTagValue().put("modencours",String.valueOf(modencours)); ////// dans la regle pour reccuperer ces valeurs : if(context.getSimulationStorage().getParameter().getUseAnalysePlan()){ double tacval= Double.parseDouble(context.getSimulationStorage().getParameter().getTagValue().get("modencours")); } ANNEX fichier TAC.txt --------------------------------------------------------------------------------------------------------------- 0=TACpoids rule.0.parameter.pop=fr.ifremer.isisfish.entities.Population\#1169028645847\#0.8922880465329557 rule.0.parameter.beginDate=1000 rule.0.parameter.endDate=500 rule.0.parameter.TAC=33000000 1=TACpoids rule.1.parameter.pop=fr.ifremer.isisfish.entities.Population\#1169028645847\#0.8922880465329557 rule.1.parameter.beginDate=0 rule.1.parameter.endDate=500 rule.1.parameter.TAC=10000 2=TACpoids rule.2.parameter.pop=fr.ifremer.isisfish.entities.Population\#1169028645847\#0.8922880465329557 rule.2.parameter.beginDate=0 rule.2.parameter.endDate=500 rule.2.parameter.TAC=20000 --------------------------------------------------------------------------------------------------------------- A remarquer : - 0=TACpoids numero de la modalit� = nom de la regle - rule.0. le numero correspond au num de la modalit� - rule.0.parameter.beginDate=1000 la regle ne s appliquera pas