Les plans d'expérience


o Mise en oeuvre d'un plan en croisements de modalités

Simulation isolée ...

Une commande telle que ... :

./main  sim1.par  sim1.sim  sim1.osp  sim1.str  sim1.dir
... lance une simulation isolée, c'est-à-dire que le comportement du système étudié est simulé une seule fois entre le début et la fin de la période spécifiée (normalement dans sim1.sim). L'état initial su système et les éléments du contexte sont précisés normalement dans les fichiers sim1.par et sim1.str, pour la partie externalisée.

Des options de commande sont disponibles. Certaines sont prédéfinies dans BASIC DIESE, d'autres peuvent l'être dans les couches applicatives. La liste en est fournie par l'option '-h' :

./main -h

... et plan d'expérience :

Un élément complémentaire de la ligne commande ('-EXPE', voir la page 'Mise en oeuvre ...') permet d'enchaîner automatiquement un ensemble de simulations isolées, avec les motifs suivants :

Il est important de noter d'ores et déjà que la situation initiale et le contexte seront caractérisés, pour la réalisation de ces enchaînements, par les valeurs d'un jeu de paramètres (classe Parameter), dont on sait qu'ils sont déclarés et valués dans le fichier *.par désigné dans la ligne de commande. Par des références à ces paramètres dans les fi<chiers *.sim et *.str, on peut définir la situation initiale ou le contexte de simulation par, respectivement, des "paramètres de simulation" et des éléments de la structure du système.

A titre d'exemple, soit une base de connaissances comportant les paramètres suivants, entre autres : ("annee" "civile"), ("lieu" "etude"), ("valeur" "X"). Pour une simulation isolée, le fichier des "paramètres du système" (*.par) contient les lignes suivantes :

"annee" "civile" <- 2006;
"lieu" "etude" <- "paris"
"valeur" "X" <- 12.34;

Un enchaînement de M=3 simulations explicitées peut être ainsi défini :

{(2006 "Paris" 12.34) (2007 "Montpellier" 23.45) (2008 "Lille" 34.56)}

Un enchaînement de P=6 simulations par croisement de modalités peut être ainsi défini :

{"annee" "civile" : 2006 2009} X {"lieu" "etude" : "Paris" "Montpellier" "Lille"}
Dans cette définition, les 6 simulations prennent 12.34 comme valeur du paramètre d'identifiants "valeur" "X".

Noter qu'une seule spécification 'FED' (voir plus loin) doit être écrite.

Comment déclarer un plan d'expérience ?

De manière informelle, le plan d'expérience ci-dessus, en M simulations explicitées, est exprimé par les lignes suivantes :

SED sed1 (INT "annee" "civile" : 2006 2007 2008)
            +
            (STRING "lieu" "etude" : "Saint.Germain" Montpellier Lille)
            +
            (REAL "valeur" "X" : 12.34 23.45 34.56);
FED : sed1 (1);

Pour mémoire, SED est un acronyme de 'SerialDesignOfExperiment', et FED un acronyme de 'FactorialDesignOfExperiment'. Le 'FED' est ici un plan factoriel dégénéré, puisqu'il ne croise le 'SED' sed1 avec aucun autre. Sa spécification est cependant nécessaire. On ne souhaite effectuer qu'une seule simulation isolée pour chacune des trois modalités. On note que les trois listes correspondant aux trois paramètres comportent, nécessairement, le même nombre de valeurs.

Quant au plan d'expérience en P simulations par croisement, il est exprimé par les lignes suivantes :

SED a_c (INT "annee" "civile" : 2006 2009);
SED l_e (STRING "lieu" "etude" : "Saint.Germain" Montpellier Lille);

FED : a_c * l_e (100);

Le 'FED' prévoit d'effectuer 100 répétitions de chacune des 6 simulations obtenues par croisement des 2 modalités sur "annee" "civile" et des 3 modalités sur "lieu" "etude".

Si on avait souhaité que chaque lieu d'étude soit associé à une valeur particulière de X, on aurait écrit :

SED a_c (INT "annee" "civile" : 2006 2009);
SED l_e (STRING "lieu" "etude" : "Saint.Germain" Montpellier Lille)
        +
        (REAL "valeur" "X" : 12.34 23.45 34.56);

FED : a_c * l_e (100);

Spécification formelle un plan d'expérience :

Le lexique et la syntaxe de l'expression d'un plan sont les suivants :

<fichier>               ::= <spec>*
<spec>                  ::= ligne_trace | ligne_com | <spec_sed> | <spec_fed>
 
<ligne_com>             ::= <symbole_com> <any>
<symbole_com>           ::= //
<any>                   ::= .* 
<ligne_trace>           ::= TRACE <mode_trace> <fin>
<mode_trace>            ::= PARSING | NO_PARSING
<fin>                   ::= ;

<spec_sed>              ::= SED <nom_sed> : <jeux_valeurs> <fin>
<nom_sed>               ::= <chaine_simple>
<jeux_valeurs>          ::= <jeu_valeurs> | <jeux_valeurs> + <jeu_valeurs> 
<jeu_valeurs>           ::= (<type> <ident> <ident> : <liste_valeurs>)
<type>                  ::= INT | REAL | STRING
<ident>                 ::= <chaine_simple> | <chaine_minmaj_spec>
<liste_valeurs>         ::= <valeur> | <liste_valeurs> <val>
<val>                   ::= <entier> | <reel> | <str_val>
<str_val>               ::= <chaine_simple> | <chaine_minmaj_spec>

<spec_fed>              ::= <spec_fed_1> | <spec_fed_2>
<spec_fed_1>            ::= FED : <liste_seds> <fin>
<spec_fed_2>            ::= FED : <liste_seds> (<entier>) <fin>
<liste_seds>            ::= <nom_sed> | <liste_seds> * <nom_sed>

<chaine_simple>         ::= <chaine_maj> | <chaine_minmaj>
<chaine_maj>            ::= [A-Z][A-Z0-9\_]*
<chaine_minmaj>         ::= [a-zA-Z][a-zA-Z0-9\_]*
<chaine_minmaj_spec>    ::= "\""[a-zA-Z][a-zA-Z0-9\_\.]*"\""
<entier>                ::= -?[0-9]+
<reel>                  ::= <reel_f> | <reel_g>
<reel_f>                ::= -?[0-9]*[\.\,][0-9]*
<reel_g>                ::= -?[0-9]+[\.\,][0-9]*E[+-][0-9]+


This page was generated with the help of DOC++.