Le 21/01/2019 à 18:58, Audric Vigier a écrit :
Bonjour,
Bonjour,
En ce qui concerne le pb 1/ , je l'ai résolu en bricolant un nouveau simulateur. Ses différences avec DefaultSimulator : j'ai déplacé la boucle if "Keep modification's information done in rule" avant les boucles for des condition et pré-action (pas sûr que ça aie servi), et juste avant ces boucles for, j'en ai rajouté une sur les populations, et qui reprend les premières lignes de computeMonth() servant à ajouter les résultats. Il est en PJ. Les utilisateurs peuvent modifier les scripts "Simulator" pour répondre à leur besoin. Donc ça peut être une bonne solution. Comme mes règles de gestion ne modifient pas le contenu des résultats en condition et pré-action, normalement ça ne devrait pas créer d'anomalie. Mais j'ignore peut-être les raisons qui font qu'en temps normal, les résultats que je voulais sont rajoutés après les pré-action et condition. Est-ce qu'un déplacement de l'ajout de ces résultats avant pré-action/condition pourriat être envisageable dans de futures versions? Ou ça compromet des modèles existants? (auquel cas, juste l'ajouter dans la liste des simulateurs lors de l'installation d'ISIS?)
Les regles peuvent modifier la structure de la base de données avant de faire une simulation, qui influence les résutats, c'est sans doute pour cela qu'elles doivent passer avant de faire le pas de temps courant. Mais on peut très bien prévoir d'ajouter des choses avant que les règles s'execute, cela serait à discuter avec tout le monde, et bien documenté pour différencier les résultats qui ne peuvent du coup pas être influencer par les règles de gestion. Mais, pour ton /1, une autre solution ne pourrait-elle pas être de récuperer la biomass du pas de temps précédent ? Ca devrait être la même valeur qu'au début du pas de temps courant non ?
2/
Malgré ceci, la simulation ne s'arrête pas et revient au début de la boucle de condition sur les métiers. Or je pensais que ce problème de "non plantage" était résolu ? (j'utilise ISIS 4.4.2.2). Pouvez-vous faire en sorte que ce genre d'erreur fasse s'arrêter immédiatement la simulation svp?
Le "non plantage" n'a été résolu que pour les equations. Pour les règles, dans le "DefaultSimulator.java", il y a un try/catch autour de l'appel de la "condition", donc si ton code en question est dans la condition, cela ne fera pas échouer la simulation. S'il est dans la "preAction", par contre, ça devrait arrêter la simulation. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28