ok, je pense avoir contourné le problème, en changeant chaque mois le nombre de bateaux, au début de ma règle Paul Eric Chatellier a écrit :
Le 20/10/2010 11:59, Paul MARCHAL a écrit :
Bonjour,
J'essaie, depuis une règle, de modifier le nombre de bateaux initialement entré dans l'interface pour une stratégie donnée. Voici la partie utile de mon code:
for (Strategy str : strs){ if (str.getName().compareTo("S1") == 0){ SetOfVessels newSet; FleetCapacityOld = str.getSetOfVessels().getNumberOfVessels(); FleetCapacityNew = (int) Math.round(cumcountEmgtFra*FleetCapacityOld); newSet = str.getSetOfVessels(); newSet.setNumberOfVessels(FleetCapacityNew); str.setSetOfVessels(newSet); } }
Chaque début d'année, l'ancien nombre de bateaux (FleetCapacityOld) devrait être remplacé par FleetCapacityNew. Or, bien que la valeur de FleetCapacityNew soit correctement modifiée d'une année à l'autre, FleetCapacityOld reste toujours constant d'une année à l'autre, et n'est pas remplacé par FleetCapacityNew (ces deux variables ont été déclarées en début de règle /public int/).
Pouvez vous m'aider?
Bonjour,
Le comportement est normal. Toutes les modifications faites par les règles sont annulées à la fin du pas de temps. Donc "str.getSetOfVessels().getNumberOfVessels()" renverra toujours la même valeur. Peut etre dans votre cas ne faut-il pas affecter la valeur FleetCapacityOld et utiliser la valeur de la règle ou une autre stocké dans le context.
-- Paul Marchal IFREMER DOP/DHMMN 150, Quai Gambetta BP 699 62321 Boulogne sur mer FRANCE Tel: (+33) 321 99 56 86 Fax: (+33) 321 99 56 01 Mail: paul.marchal@ifremer.fr