Voici un exemple de prescrit qui modifie les parametres AVANT la simulation (exemple avec des regles): String simu = context.getSimulationControl().getId(); java.util.regex.Pattern simulNamePattern = java.util.regex.Pattern.compile("^.+_(\\d+)$"); java.util.regex.Matcher matcher = simulNamePattern.matcher(simu); matcher.find(); int numero = Integer.parseInt(matcher.group(1)); SimulationParameter parameter = context.getSimulationStorage().getParameter(); parameter.clearRules(); // suppresison des regles deja existante ? // ajout regle 1 GravityModelMixChannel regle1 = new GravityModelMixChannel(); regle1.param_behaviorBalance = 0.7; regle1.param_beginDate = new TimeStep(12); parameter.addRule(regle1); // populate params Properties prop = new Properties(); prop.load(new BufferedReader(new FileReader(new File("/home/.../dir", "file-" + numero + ".txt")))); GravityModelMixChannel regle2 = new GravityModelMixChannel(); RuleHelper.populateRule(0, db, regle2, prop); parameter.addRule(regle2); if (numero == 42) { // cas specifique ... } Le 27/11/2024 à 11:06, Sigrid LEHUTA a écrit :
* la modification des parametres de règles. Dans le passé, je pouvais écrire des .txt avec ce type de format (ci-dessous) et les charger dans un objet Properties puis de faire un populateRule avec. Encore mieux, dans cet exemple, on a 2 modalités possibles de la regle GravityModelMixChannel et on indique laquelle on utilise. est ce toujours possible ?
Toujours possible. Exemple de code mis à jour pour la nouvelle implementation des regles à venir.
0=GravityModelMixChannel rule.0.parameter.behaviorBalance = 0.7 rule.0.parameter.beginDate=12 1=GravityModelMixChannel rule.1.parameter.behaviorBalance = 0.8 rule.1.parameter.beginDate=12 avec ce code Properties prop = new Properties(); prop.load(new BufferedReader(new FileReader(new File(dir, name+".txt")))); int mod = 0; String ruleName = prop.getProperty(""+mod); RuleStorage ruleStorage = RuleStorage.getRule(ruleName); Rule rule = ruleStorage.getNewInstance(); RuleHelper.populateRule(mod, TopiaContext, rule, prop);
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28