Pamhyr2/doc/dev/scenarios/presentation.org

14 KiB
Raw Blame History

\textbf{Pamhyr2}

#

#

#

Problématique

Problématique

Utilisateur

  • Définire une version modifier de l'étude (changement dans les données)
  • Comparé des résultats entre une variante et l'étude

{{{pause}}}

COMMENT Développeur
  • Un unique fichier
  • Limité la duplication de donnée à sauvegarder
  • Garder une bonne cohérence entre données et résultats

{{{pause}}}

Scénarios

Un scénario est une variate d'une étude.

Problématique Avancer

Utilisateur

  • Définire une version modifier d'un senarios
  • Comparé des résultats entre plusieurs senarios

{{{pause}}}

COMMENT Développeur
  • Un unique fichier
  • Limité la duplication de donnée à sauvegarder
  • Garder une bonne cohérence entre données et résultats

{{{pause}}}

Scénarios

Un scénario peut être l'étude ou une variate d'un autre scénario.

Problématique Encore plus avancer

Utilisateur

  • Définire un ensemble fini de variante correspondant a un ensemble de valeur pour un(des) paramètre(s) et executer un solveur sur l'ensemble des variantes
  • Pouvoir comparé des metrics sur un ensemble de résultats trop grand pour une comparaisont à la mains

{{{pause}}}

COMMENT Développeur
  • Un unique fichier
  • Limité la duplication de donnée à sauvegarder
  • Garder une bonne cohérence entre données et résultats

{{{pause}}}

Scénarios

Un scénario peut être l'étude, une variate d'un scénarios ou un ensemble fini de variantes d'un scénarios.

Problématique Encore plus plus avancer

Utilisateur

  • Définire un ensemble fini de variante correspondant a un ensemble de valeur pour un(des) paramètre(s) et faire un nombre fini de tirage aléatoire dans ces paramètre pour executer un solveur ces paramètres
  • Pouvoir comparé des metrics sur un ensemble de résultats trop grand pour une comparaisont à la mains

{{{pause}}}

Scénarios

Un scénario peut être l'étude, une variate d'un scénarios ou un ensemble fini ou un tirage aléatoire dans un ensemble de variantes d'un scénarios.

Problématique Développeur

Développeur

  • Permetre a l'utilisateur de garder une bonne cohérence entre données et résultats de façon claire
  • Permetre a l'utilisateur de géré les scénarios de façon claire (représentation graphique)
  • Garder un unique fichier (.pamhyr)
  • Limité la duplication de donnée à sauvegarder
  • Permetre à l'utilisateur de garder les résultats pertinant sans exploser la mémoire de l'ordinateur

Proposition

Proposition Concept

{{{no}}}

\vspace{-1.2cm}

Deux type de scénarios
  • Scénarios simple
  • Scénarios d'éxecution d'ensemble

{{{pause}}}

Scénarios simple

Est composer:

  • d'un identifiant unique
  • d'un nom (définie par l'utilisateur)
  • d'une description (définie par l'utilisateur)
  • d'un parent (définie par l'utilisateur)

{{{pause}}}

\vspace{-0.5cm}

Scénarios d'ensembles

{{{no}}}

\vspace{-1cm} Est composer:

  • d'un identifiant unique
  • d'un nom (définie par l'utilisateur)
  • d'une description (définie par l'utilisateur)
  • d'un parent (définie par l'utilisateur)
  • d'un ou plusieurs ensemble de valeur
{{{no}}}

\vspace{-0.5cm} Un ensemble de valeurs est definie par:

  • une valeurs de départ
  • une valeurs de fin
  • un pas de valeur
  • un élément d'origine (élément définie dans l'étude)
  • une fonctions (modification de l'élément à l'aide d'une valeur de l'ensemble)

Proposition Limitation

Scénarios simple

Si le scénarios est le parent d'un autre scénarios, il ne peut plus être modifier sans risquer des comportement difficilement comprehensible pour l'utilisateur.

{{{pause}}}

Scénarios d'ensembles

  • Un scénarios d'ensemble ne peut pas être parent d'un autre scénarios
  • Le nombre d'exécution peut très rapidement grossir

Proposition Affichage

  digraph {
        bgcolor="transparent";
        node[colorscheme=pastel19,shape=ellipse,style="filled",fillcolor=9];

        b[fillcolor=2];

        aa[shape=box,fillcolor=2];
        aa2[label="aa'", shape=box, fillcolor=2];
        ad[shape=box, fillcolor=2];
        re[shape=box, fillcolor=2];
        rf[shape=box, fillcolor=2];

        default -> a;
        default -> b;
        default -> c;

        a -> aa;
        a -> aa2;
        a -> f -> rf;
        c -> d -> ad;
        c -> e -> re;
  }

/parouby/Pamhyr2/src/commit/e6dd983f97d2a4fed3180938d752d7d5aa3121aa/doc/dev/scenarios/images/graph-scenarios.png

Solution technique

Technique scénarios

  CREATE TABLE scenario(
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,           -- Name of the scenario
    description TEXT NOT NULL,    -- Rich text description
    parent_id INTEGER REFERENCES scenario(id) -- Recursive references
                                              -- for parent scenario
  )

Technique Données Enregistrement

  -- Unique ID (Must be unused, to delete)
  id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  -- New ID (not unique)
  pamhyr_id INTEGER NOT NULL,
  -- (Optional) Flag for set there is no data in this scenario and
  -- ignore parent scenario
  dummy BOOLEAN NOT NULL,
  -- Corresponding scenario
  scenario_id INTEGER NOT NULL,
  PRIMARY KEY(pamhyr_id, scenario_id),
  FOREIGN KEY(scenario_id) REFERENCES scenario(id),

Technique Données Chargement

  def load(cls, db, current_scenario):
    # Default case, end of recursion
    if current_scenario is None:
      return []                   # Default value

    table = db.execute(f"<MY SELECT> WHERE scenario_id = {current_scenario}")

    # If no data for this scenario, recursion
    if len(table) == 0:
      parent_id = db.get_parent_id(current_scenario)
      return cls.load(db, parent_id)

    # Otherelse, parse data and return...

Technique Données Modification

  def set_modified(self, current_scenario):
      self.scenario = current_scenario
  def delete(self, current_scenario):
      self.deleted = True
      self.set_modified(current_scenario)

Technique Exécution d'ensemble

  CREATE TABLE range_set(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    start REAL NOT NULL,          -- Range start
    end REAL NOT NULL,            -- Range end
    step REAL NOT NULL,           -- Range step
    generator_name TEXT NOT NULL, -- Generator function name (ex:
                                  -- 'minor_strickler')
    original_data_id INTEGER,     -- (optional) Ref to data who apply
                                  -- this range (ex: a strickler id)
    scenario_id INTEGER NOT NULL,
    FOREIGN KEY(scenario_id) REFERENCES scenario(id)
  )

Sauvegarde des résultats

Sauvegarde des résultats

Scénarios simple

Sauvegarde d'un seul résultats complet par scénarios (et par solver).

Scénarios d'ensemble

Sauvegarde de metrics récupéré sur un ensemble de résultats (pas de sauvegarde de tous les résultats) ou certain résultats particuliers.

Question & remarque

Question & remarque

  • Solution satisfaisante ?
  • Cas d'usage intéressent non couvert ?
  • Contre exemple ?
  • Meilleur solution ?