Bonjour, Une nouvelle version d'isis-fish vient d'être mise en place. http://isis-fish.labs.libre-entreprise.org/download/version2/ifremer-simulat... * ajout de 3 caches different pour l'optimisation des caculs les caches sont selectionnable au lancement d'isis * ajout de la possibilité de faire les boucles Str/Met que sur les metiers de la strategie dans SiMatrice. Cette fontion est selectionnable au lancement d'isis Explication =========== Pour selectionner un des 3 caches il faut passer les options suivantes a la JVM (ce veux dire juste derriere java) -DOptimizationCache=[SimpleLRU[=<valeur>]|ShiftOne|Soft] Il est possible dans les calcules de ne pas faire les boucles sur tous les metiers, mais seulement sur les metiers, utilisés par la strategie au mois de calcul avec l'option suivante. ATTENTION, les simulations donneront n'importe quoi si vous utilisé l'option et qu'une regle de gestion ajoute des metiers a une strategie durant la simulation. -Dfr.ifremer.simulation.SiMatrice2.loopOverAllMetier=<false|true> Je ne suis pas du tout sur que les resultats avec cette option a false, soit vraiment convenable, donc il vaut mieux faire des tests de vérification avant de vraiment l'utiliser. Toutes ces modifications ont ete faite sans test, mais cela peut ameliorer ou non les simulations aucune idee. Si on ne met pas d'option cela revient a la ligne suivante: java -DOptimizationCache=Soft -Dfr.ifremer.simulation.SiMatrice2.loopOverAllMetier=true -Xmx512M -jar ifremer-simulation-all.jar dans ce cas, des que la JVM n'a plus de memoire elle supprimer les données calculé du cache (tres peu de risque de OutOfMemory) mais les simulations devrait etre beaucoup plus longue. exemple d'utilisation: - java -DOptimizationCache=SimpleLRU -Xmx512M -jar ifremer-simulation-all.jar Ici on utilise un cache LRU (Least Recently Used) avec par defaut 50000 au maximum dans le cache - java -DOptimizationCache=SimpleLRU=1000000 -Xmx512M -jar ifremer-simulation-all.jar la meme chose avec 1000000 de calcul mis en cache - java -DOptimizationCache=ShiftOne -Xmx512M -jar ifremer-simulation-all.jar ici on utilise le cache ShiftOne, qui se parametre par un fichier de configuration par defaut il utilise celui trouvé dans le jar. Il est possible d'en utiliser un autre pour cela il suffit de mettre un fichier partant le nom isisCache.properties dans le repertoire de lancement du simulateur. Par defaut il utilise un cache LRU et LFU avec 100000 objet au maximum. Mais il y a plein d'autre facon de configurer ce cache En gros il y a beaucoup de test a faire qui prenne beaucoup de temps (que je n'ai pas :(. Pour aider je peux dire qu'une simulation de test (1 strategie, 1 pop). Calcul environs 50000 données par ans. Je pense que ce doit-etre a peu pres lineaire avec les strategie/metier/population Il faut regler le nombre d'objet dans les caches pour qu'il aille avec la memoire alouée. donc si on met -Xmx64M il faut mettre une plus petite valeur que pour -Xmx1024M ps: pour les personnes qui trouve que relancer le simulateur pour tester telle ou telle chose est penible, il doit etre possible d'utiliser les script de pre simulation pour modifier le cache selectionné. (Mais je pense qu'il ne faut mieux pas lancer 2 simulations en meme temps avec 2 caches different. Donc dans le prescript: Packages.java.lang.System.setProperties("<option>", "<valeur>"); donc par exemple Packages.java.lang.System.setProperties("OptimizationCache", "SimpleLRU=1000000"); ou Packages.java.lang.System.setProperties("OptimizationCache", "ShiftOne"); ou Packages.java.lang.System.setProperties("OptimizationCache", "Soft"); ou Packages.java.lang.System.setProperties("fr.ifremer.simulation.SiMatrice2.loopOverAllMetier", "false"); ou Packages.java.lang.System.setProperties("fr.ifremer.simulation.SiMatrice2.loopOverAllMetier", "true"); bien sur je n'ai pas testé cette facon de faire :) -- Benjamin -------------------- email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii