Re: [Isis-fish-devel] Cr réunion isis du 24/01/2014
Bonjour, Le 27/01/2014 18:16, Eric Chatellier a écrit :
Lancement de simulation pour une optimisation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Page de configuration: - configuration de la simulation (comme toutes simulations: espèces, règles, ...) - choix de la méthode d'Objectif avec ses paramètres possibles - choix de la méthode d'Optimisation avec ses paramètres possibles - choix des Résultats/Exports avec pour chaque les observations associées (fichier CSV ou matrice rentrée dans la région)
Donc contrairement à ce qui avait été définit pour la maquette initiale, l'optimisation ne dépend par de facteur (comme les analyses de sensibilité). C'est bien la fonction d'objectif qui fait varier les paramètres ? On a donc une seule fonction d'objectif et un seul script d'optimisation.
Les nouvelles classes Java ~~~~~~~~~~~~~~~~~~~~~~~~~~
Une interface Objectif qui contient une méthode d'évaluation. Une interface Optimisation qui contient une méthode qui permet de préparer les simulations pour la génération suivante. Un Objet OptimisationContext qui garde la trace de toutes les simulations faites structurée par génération. Et qui contiendrait des méthodes permettant de simplifier la création de nouvelle simulation
Objectif: - eval(OptimisationContext context, List<MatrixND> exports, List<MatrixND> observation): double Les "exports" et "observations" sont des matrices ici. Qu'est-ce qui défini les exports ? Est-ce un des résultats d'IsisFish (aka : ResultName ?) Ou est-ce un nouveau type d'export spécifique à l'optimisation ?
Optimisation: - getNextGeneration(OptimisationContext context, Region db): List<Simulation>
OptimisationContext: - copyRegion(Region region): Region - createSimulation(Region) - getCurrentGenerationNumber(): int - getLastGeneration(): List<Simulation> - getGeneration(int n): List<Simulation> - getGenerationNumber(): int
Simulation: - getResult(String name) - getObjectif(): double
Simulation ici est-il différent d'une simulation normale dans isis ? Je ne pense pas pour l'instant. La fonction d'objectif sera appelée avec les resultats de la simulation et les observations, mais pas la simulation elle-même. Cordialement, Eric Chatellier. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Le 21/03/2014 18:21, Eric Chatellier a écrit :
Bonjour,
Le 27/01/2014 18:16, Eric Chatellier a écrit :
Lancement de simulation pour une optimisation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Page de configuration: - configuration de la simulation (comme toutes simulations: espèces, règles, ...) - choix de la méthode d'Objectif avec ses paramètres possibles - choix de la méthode d'Optimisation avec ses paramètres possibles - choix des Résultats/Exports avec pour chaque les observations associées (fichier CSV ou matrice rentrée dans la région) Donc contrairement à ce qui avait été définit pour la maquette initiale, l'optimisation ne dépend par de facteur (comme les analyses de sensibilité). oui C'est bien la fonction d'objectif qui fait varier les paramètres ? non, la fonction d'objectif fait un calcul et renvoie le resultat à la fonction d'optimisation qui elle fait changer les valeurs des parametres
On a donc une seule fonction d'objectif et un seul script d'optimisation. oui
Les nouvelles classes Java ~~~~~~~~~~~~~~~~~~~~~~~~~~
Une interface Objectif qui contient une méthode d'évaluation. Une interface Optimisation qui contient une méthode qui permet de préparer les simulations pour la génération suivante. Un Objet OptimisationContext qui garde la trace de toutes les simulations faites structurée par génération. Et qui contiendrait des méthodes permettant de simplifier la création de nouvelle simulation
Objectif: - eval(OptimisationContext context, List<MatrixND> exports, List<MatrixND> observation): double Les "exports" et "observations" sont des matrices ici. Qu'est-ce qui défini les exports ? Est-ce un des résultats d'IsisFish (aka : ResultName ?) non pas resultName Ou est-ce un nouveau type d'export spécifique à l'optimisation ? c'est un réusltats d'isis exporté. Le script d'export est écrit par l'utilisateur pour correspondre aux observations
Optimisation: - getNextGeneration(OptimisationContext context, Region db): List<Simulation>
OptimisationContext: - copyRegion(Region region): Region - createSimulation(Region) - getCurrentGenerationNumber(): int - getLastGeneration(): List<Simulation> - getGeneration(int n): List<Simulation> - getGenerationNumber(): int
Simulation: - getResult(String name) - getObjectif(): double Simulation ici est-il différent d'une simulation normale dans isis ? je laisse Benjamin repondre Je ne pense pas pour l'instant. La fonction d'objectif sera appelée avec les resultats de la simulation et les observations, mais pas la simulation elle-même. kezako????
steph
Cordialement, Eric Chatellier.
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
On Tue, 25 Mar 2014 10:58:36 +0100 Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr> wrote: ...
Donc contrairement à ce qui avait été définit pour la maquette initiale, l'optimisation ne dépend par de facteur (comme les analyses de sensibilité). oui
En fait c oui. Mais cela ne sert qu'a simplifier la modification de la base de données pour créer une nouvelle simulation. -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com
On Tue, 25 Mar 2014 17:43:21 +0100 Benjamin POUSSIN <poussin@codelutin.com> wrote:
On Tue, 25 Mar 2014 10:58:36 +0100 Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr> wrote:
...
Donc contrairement à ce qui avait été définit pour la maquette initiale, l'optimisation ne dépend par de facteur (comme les analyses de sensibilité). oui
En fait c oui. Mais cela ne sert qu'a simplifier la modification de la base de données pour créer une nouvelle simulation.
En y re-reflexchissant, je pense que le mieux est d'avoir un nouveau type utilisable comme parametre dans les scripts (rules, plan, optimisation) Ce nouveau paramètre (Factor?) lorsque l'utilisateur du script voudra lui affecter une valeur, ouvrira une fenêtre équivalente à l'onglet ou on sélectionne les facteurs. Il pourra ainsi sélectionner un champ dans la base. Le type Factor permettant ensuite de modifier simplement la valeur de ce champ pour créer dans le cas des optimisations de nouvelles simulations. Donc si on prend un exemple pour une optimisation: """ public Factor param_prix; public Factor param_mortalite; public void getNextGeneration(OptimisationContext context) { // ... // on met les valeurs que l'on souhaite aux factors param_prix.set(12); param_mortalite.set(0.3); // on indique d'ajouter une nouvelle simulation en utilisant // la région de cette optimisation, mais en modifiant certaine // valeur de la base grâce au factor passé en paramètre. context.addSimulation(param_prix, param_mortalite) // ... } """ On peut aussi imaginer avoir la possibilité de créer facilement un Factor par programmation. (mais je ne sais pas si c'est une bonne idée). public void getNextGeneration(OptimisationContext context) { // ... // on crée un Factor // - qui pointe la mortalite d'une population // - dans la region sur lequel on simule // - pour la population dont le nom est "sardine" ("sardine" pourrait etre un param) Factor p = Factor .select(Population.MORTALITE) .from(context.getRegion()) .where(Population.NAME, "sardine"); p.set(0.5); context.addSimulation(p); // ... } """ -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com
participants (3)
-
Benjamin POUSSIN -
Eric Chatellier -
Stephanie MAHEVAS