Niveau de difficulté
Thématique
Présentation formation
Cette page s'adresse aux utilisateurs de ViabLab qui souhaitent implémenter leur propre problème de viabilité dans ViabLab et qui ont donc à éditer deux fichiers , un .cpp et un json.
Les paramètres définis dans le fichier .json contrôlent l'exécution de ViabLab.
Nous décrivons ici toutes les possibilités paramétrées dans le fichier .json.
Contenu
Les paramètres spécifiés dans le fichier .json concernent 6 objets, les valeurs par défaut sont en gras :
ALGORITHM_PARAMETERS
Clés/Valeurs/Explications
Paramètres qui concernent le calcul à effectuer
Détails
| SET_TYPE : | "VIAB" ou 1 | Calcul de noyau de viabilité (suffixe de nom de fichier en "-viab") |
| "CAPT" ou 2 | Calcul de bassin de capture (suffixe de nom de fichier en "-capt") |
|
| "VIABG" ou 3 | Calcul de noyau de viabilité garanti (suffixe de nom de fichier en "- viabG") |
|
| TARGET_OR_DEPARTURE : | "TARGET" ou 0 | ??? |
| "DEPARTURE" ou 1 | ??? | |
| COMPUTE_MIN_TIME : | true / false | Uniquement pour SET_TYPE vaut "CAPT", le problème à résoudre est-il un problème de temps minimal ? |
| COMPUTE_VIABLE_SET : | true / false | Faut-il calculer le noyau de viabilité ? Si false, le fichier OUPUT/[OUTPUT_FILEPREFIXE]-viab.dat est recherché pour être chargé comme approximation du noyau de viabilité déjà calculée. Cela permet de travailler sur l'ensemble sans avoir à le recalculer pour générer des trajectoires ou faire des coupes ou des projections |
| LEVEL : | entier - 0 | Uniquement pour un GRID METHOD "MM". Seuil à partir duquel la valeur contenue dans la grille n'est pas conservée (considérée comme hors du noyau de viabilité). Ces valeurs ne sont conservées que si SAVE SUBLEVEL vaut true |
| GRID_REFINEMENTS_NUMBER : | entier - 0 | Uniquement pour GRID_METHOD vaut "BS". Nombre de raffinements de grille souhaité. Un raffinement de grille est ici un doublement sur chaque axe du nombre de points de l'espace d'état. Permet d'approximer un noyau de viabilité avec maillage plus fin par affinage successifs de noyaux plus grossiers |
| ITERATION_STOP_LEVEL : | entier - 0 | Seuil du nombre de points enlevés dans une itération de l'algorithme du calcul du noyau de viabilité à partir duquel on arrête l'algorithme (si cette valeur vaut 2 et que lors d'une itération on a enlevé 0, 1 ou 2 points de grille, l'algo s'arrête) |
| REAL_TIME_STEPS_PER_DISCRETE_STEP : | entier - 1 | Nombre d'itérations de calcul de la trajectoire réelle à l'aide du schéma numérique de résolution d'équations différentielles par pas de temps discret. |
Paramètres qui concernent les données à enregistrer dans les fichiers de sortie
Détails
| SAVE_BOUNDARY : | true / false | Doit-on sauvegarder la frontière du noyau de viabilité dans une fichier ? Le nom du fichier sera OUTPUT/[OUTPUT FILEPREFIX ]-viab-bound.dat |
| SAVE_PROJECTION : | true / false | Booléen indiquant si la projection de l'ensemble viable choisie à l'aide PROJECTION_AXIS doit êre sauvgardé ou non |
| PROJECTION_AXIS : | int[STATE_DIMENSION] - [0,..0] | Liste d'entiers indiquant les axes de projection de l'ensemble viable |
| SAVE_SLICE : | true / false | Doit-on sauvegarder la coupe choisie à l'aide de SLICE_DIRECTIONS et SLICE_LEVELS dans un fichier ? Le nom du fichier sera OUTPUT/[OUTPUT FILEPREFIX ]-Slice.dat |
| SAVE_SLICE_BOUND : | true / false | Doit-on sauvegarder la frontière de la coupe du noyau de viabilité dans un fichier ? Le nom du fichier sera OUTPUT/ [OUTPUT FILEPREFIX ]-SliceBound.dat |
| INTERMEDIATE_SAVINGS : | true / false | Uniquement pour un GRID METHOD "BS" et GRID_REFINEMENTS_NUMBER >0. Doit-on sauvegarder tous les raffinements de grille ? Le nombre de raffinements est dicté par NB GRIDREFINEMENTS. Les fichiers de sauvegarde auront la forme "../ OUTPUT/[OUTPUT FILEPREFIX ]- viab-[i].dat" avec i l'indice de la boucle de raffinement (partant de 0) |
| SAVE_SUBLEVEL : | true / false | ????Uniquement pour un GRID METHOD "MM". Booléen indiquant si les sous-niveaux de l'ensemble viable doivent être sauvegardés ou non. Un sous-niveau correspond à l'ensemble des points supprimés lors d'une itération donnée de l'algorithme. Le nom du fichier sera OUTPUT/[OUTPUT FILEPREFIX ]-subLevel.dat |
| LEVEL : | entier - 0 | ????Uniquement pour un GRID METHOD "MM". Seuil à partir duquel la valeur contenue dans la grille n'est pas conservée (considérée comme hors du noyau de viabilité). Ces valeurs ne sont conservées que si SAVE SUBLEVEL vaut true |
| SAVE_VIABSET_LIGHT : | true / false | Indique si l'on doit sauvegarder uniquement les points de grille qui sont dans le noyau de viabilité |
GRID_PARAMETERS
Clés/Valeurs/Explications
| GRID_METHOD : | "BS" | Représentation sous forme de Bit Set (tableau contenant des valeurs booléennes indiquant si la case se trouve dans le noyau) |
| "MM" | Représentation sous forme de tableau de réels, dit "Micro Macro", adapté au calcul des fonctions valeurs | |
| "HBS" | "BS" hybride : représentation de l'ensemble par une fonction caractéristique avec une part continue et une part discrète | |
| "HMM" | "MM" hybride : représentation de l'ensemble par une fonction valeur avec une part continue et une part discrète | |
| OUTPUT_PREFIXE : | chaîne de caractère - "Model-" | Préfixe utilisé pour les fichiers de sortie du programme (par exemple, si aucun n'est donné, le fichier de données de grille vaudra "Model–grid- data.dat" |
Paramètres GRID_METHOD vaut "BS" ou "MM"
Détails
| STATE_DIMENSION : | entier - 1 | Dimension de l'espace d'états |
| STATE_MIN_VALUES : | réel[STATE_DIMENSION] - [0, ...,0] | Coordonnée minimale de l'état sur chaque dimension |
| STATE_MAX_VALUES : | réel[STATE_DIMENSION] - [1, ...,1] | Coordonnée maximale de l'état sur chaque dimension |
| STATE_GRID_POINTS : | entier[STATE_DIMENSION] - [2, ...2] | Nombre de coordonnées d'état différentes (de points de grille) sur chaque dimension. Les valeurs des points de grille sont donc les points de coordonnées pour chaque i valent STATE MINVALUES [i] + i*(STATE MAXVALUES [i]- STATE MINVALUES [i])/ (STATE GRIDPOINTS [i] - 1) avec i allant de 0 à n-1 (les tableaux sont indicés à partir de 0). |
| STATE_PERIODIC : | booléen[STATE_DIMENSION] - [false, .., false] | Indique pour chaque axe si la dimension de l'espace est périodique, c'est-à-dire, si dépasser le bord STATE MAXVALUES ou STATE MINVALUES implique boucler sur le côté opposé de l'espace sur cette dimension |
| UPPER_LIMIT_IS_NOT_CONSTRAINT : | booléen[STATE_DIMENSION] - [false, .., false] | Indique pour chaque axe si STATE MAX_VALUES n'est pas une contrainte du problème de viabilité mais une contrainte imposée sur la taille de l'espace d'états (si une case d'indice i vaut vrai, un point peut appartenir au noyau de viabilité même si sa coordonnée en i est supérieure à STATE_MAX_VALUES) |
| LOWER_LIMIT_IS_NOT_CONSTRAINT : | booléen[STATE_DIMENSION] - [false, .., false] | Indique pour chaque axe si STATE MIN_VALUES n'est pas une contrainte du problème de viabilité mais une contrainte imposée sur la taille de l'espace d'états (si une case d'indice i vaut vrai, un point peut appartenir au noyau de viabilité même si sa coordonnée en i est inférieure à STATE_MIN_VALUES) |
| GRID_MAIN_DIR : | entier - 0 | Uniquement pour un GRID METHOD "BS" ou "HBS", entier entre 0 et STATE-DIMENSION - 1qui indique l'indice de la dimension à partir de laquelle sera stocké le tableau de tableaux de bits. |
| SLICE_DIRECTIONS : | booléen[STATE_DIMENSION] - [false, .., false] | Indique que l'on souhaite regarder une coupe du noyau en "fixant" les valeurs des dimensions dont ce tableau est à true. La valeur fixe peut être choisie à l'aide de SLICE_LEVELS |
| SLICE_LEVELS : | ????[STATE_DIMENSION] - [0, .., 0] | Pour chaque dimension fixée par la coupe, la valeur de la coordonnée qui nous intéresse. La valeur en i sera uniquement prise en compte si SLICE DIRECTIONS [i] vaut true |
| SLICE_LEVELS_DISCRETE : | ????[STATE_DIMENSION] - [0, .., 0] | Identique à SLICE_LEVELS mais pour un espace d'état discret, uniquement lorsque DYNAMICS_TYPE vaut "DD" |
Paramètres GRID_METHOD vaut "HBS" ou "HMM"
Détails
GRID_PARAMETERS.HYBRID_CONTINUOUS_SUBGRID :
| STATE_DIMENSION : | entier - 1 | Dimension de la part continue de l'espace d'états |
| STATE_MIN_VALUES : | réel[STATE_DIMENSION] - [0, ...,0] | Coordonnée minimale de l'état sur chaque dimension de la part continue de l'espace des états |
| STATE_MAX_VALUES : | réel[STATE_DIMENSION] - [1, ...,1] | Coordonnée maximale de l'état sur chaque dimension de la part continue de l'espace des états |
| STATE_GRID_POINTS : | entier[STATE_DIMENSION] - [2, ...2] | Nombre de coordonnées d'état différentes (de points de grille) sur chaque dimension de la part continue de l'espace des états. Les valeurs des points de grille sont donc les points de coordonnées pour chaque i valent STATE MINVALUES [i] + i*(STATE MAXVALUES [i]- STATE MINVALUES [i])/ (STATE GRIDPOINTS [i] - 1) avec i allant de 0 à n-1 (les tableaux sont indicés à partir de 0). |
| STATE_PERIODIC : | booléen[STATE_DIMENSION] - [false, .., false] | Indique pour chaque axe si la dimension de de la part continue de l'espace des états est périodique, c'est-à-dire, si dépasser le bord STATE MAXVALUES ou STATE MINVALUES implique boucler sur le côté opposé de l'espace sur cette dimension |
| UPPER_LIMIT_IS_NOT_CONSTRAINT : | booléen[STATE_DIMENSION] - [false, .., false] | Indique pour chaque dimension de la part continue de l'espace des états si STATE MAX_VALUES n'est pas une contrainte du problème de viabilité mais une contrainte imposée sur la taille de l'espace d'états (si une case d'indice i vaut vrai, un point peut appartenir au noyau de viabilité même si sa coordonnée en i est supérieure à STATE_MAX_VALUES) |
| LOWER_LIMIT_IS_NOT_CONSTRAINT : | booléen[STATE_DIMENSION] - [false, .., false] | Indique pour chaque dimension de la part continue de l'espace des états si STATE MIN_VALUES n'est pas une contrainte du problème de viabilité mais une contrainte imposée sur la taille de l'espace d'états (si une case d'indice i vaut vrai, un point peut appartenir au noyau de viabilité même si sa coordonnée en i est inférieure à STATE_MIN_VALUES) |
| GRID_MAIN_DIR : | entier - 0 | Uniquement pour un GRID METHOD "BS" ou "HBS", entier entre 0 et STATE-DIMENSION - 1qui indique l'indice de la dimension de la part continue de l'espace des états à partir de laquelle sera stocké le tableau de tableaux de bits. |
| SLICE_DIRECTIONS : | booléen[STATE_DIMENSION] - [false, .., false] | Indique que l'on souhaite regarder une coupe du noyau en "fixant" les valeurs des dimensions de la part continue de l'espace des états dont ce tableau est à true. La valeur fixe peut être choisie à l'aide de SLICE_LEVELS |
| SLICE_LEVELS : | ????[STATE_DIMENSION] - [0, .., 0] | Pour chaque dimension de la part continue de l'espace des états fixée par la coupe, la valeur de la coordonnée qui nous intéresse. La valeur en i sera uniquement prise en compte si SLICE DIRECTIONS [i] vaut true |
| HYBRID_CONTINUOUS_SUBGRID : | ??? | ???Uniquement pour les systèmes hybrides, DYNAMICS_TYPE vaut "CH" ou "DH", groupe les paramètres liés à la part continue de la grille |
| HYBRID_DISCRETE_SUBGRID : | ???? | ???Uniquement pour les systèmes hybrides, DYNAMICS_TYPE vaut "CH" ou "DH", groupe les paramètres liés à la part discrète de la grille |
GRID_PARAMETERS.HYBRID_DISCRETE_SUBGRID :
| STATE_DIMENSION : | entier - 1 | Dimension de la part discrète de l'espace d'états |
| STATE_GRID_POINTS : | entier[STATE_DIMENSION] - [2, ...2] | Nombre de coordonnées d'état différentes (de points de grille) sur chaque dimension de la part discrète de l'espace des états |
| GRID_MAIN_DIR : | entier - 0 | ????Uniquement pour un GRID METHOD "BS" ou "HBS", entier entre 0 et STATE-DIMENSION - 1qui indique l'indice de la dimension de la part continue de l'espace des états à partir de laquelle sera stocké le tableau de tableaux de bits. |
| SLICE_DIRECTIONS : | booléen[STATE_DIMENSION] - [false, .., false] | Indique que l'on souhaite regarder une coupe du noyau en "fixant" les valeurs des dimensions de la part discrète de l'espace des états dont ce tableau est à true. La valeur fixe peut être choisie à l'aide de SLICE_LEVELS |
| SLICE_LEVELS : | ????[STATE_DIMENSION] - [0, .., 0] | Pour chaque dimension de la part discrète de l'espace des états fixée par la coupe, la valeur de la coordonnée qui nous intéresse. La valeur en i sera uniquement prise en compte si SLICE DIRECTIONS [i] vaut true |
SYSTEM_PARAMETERS
Clés/Valeurs/Explications
| DYNAMICS_TYPE : | "CC" ou 1 | Continue en temps et en espace. La dynamique est la dérivée du vecteur position. |
| "DC" ou 2 | Temps discret, espace continu. La dynamique renvoie la valeur du vecteur position en fonction de la valeur de l'itération précédente. |
|
| "DD" ou 3 | Discrète en temps et en espace. La dynamique renvoie la valeur du vecteur position en fonction de la valeur de l'itération précédente. |
|
| "CH" | Dynamique hybride, continue en temps, avec des variables d'états continues et discrètes | |
| "DH" | Dynamique hybride, discrète en temps, avec des variables d'états continues et discrètes | |
| TIME_HORIZON : | réel - 10 | Horizon temporel pour les problèmes à horizon fini |
Paramètres lorsque DYNAMICS__TYPE vaut "CC" ou "CH"
Détails
| TIME_DISCRETIZATION_SCHEME : Méthode d’approximation de la trajectoire réelle |
"NO_DISCRETIZATION_SCHEME" ou 0 | ???Aucune approximation n'est réalisée, la trajectoire réelle est identique à la trajectoire discrète |
| "EL" ou 1 | Méthode d'Euler | |
| "RK2" ou 2 | Méthode de Runge-Kutta d'ordre 2 | |
| "RK4" ou 3 | Méthode de Runge-Kutta d'ordre 4 | |
| LIPSCHITZ_CONSTANT_COMPUTE_METHOD : Méthode de calcul de la constante de Lipschitz de la dynamique, utilisée pour déterminer le pas de temps en tout point |
"ANALYTICAL" ou 0 | La constante de Lipschitz vaudra toujours la valeur donnée pour LIPSCHITZ_CONSTANT possiblement majorée par COST_LIPSCHITZ_CONSTANT |
| "ANALYTICAL_CALC" ou 1 | ????La constante de Lipschitz vaudra le coefficient de valeur absolue maximale de la jacobienne donnée par l'utilisateur en chaque point au travers de la fonction jacobian possiblement majorée par COST_LIPSCHITZ_CONSTANT |
|
| "NUMERICAL_CALC" ou 2 ???"NUMERIC" | La constante de Lipschitz sera calculée pour chaque point à partir des valeurs de la dynamique aux points voisins |
|
| LIPSCHITZ_CONSTANT : | réel - 1 | Constante de Lipschitz de la dynamique. Celle-ci sera utilisée pour déterminer le pas de temps si LIPSCHITZ CONSTANT_COMPUTE_M ETHOD vaut "ANALYTICAL" |
| COST_LIPSCHITZ_CONSTANT : | ??? | Uniquement si GRID_METHOD vaut "MM" ou "HMM, constante de Lipschitz de la fonction de coût. Celle-ci sera utilisée pour déterminer le pas de temps si LIPSCHITZ CONSTANT_COMPUTE_M ETHOD vaut "ANALYTICAL" |
| DYN_BOUND_COMPUTE_METHOD : Méthode de calcul de la norme maximale de la dynamique en tout point |
"ANALYTICAL" ou 0 | La norme maximale de la dynamique est la valeur donnée pour DYN_BOUND, possiblement majorée par COST_BOUND_CONSTANT |
| "ANALYTICAL_CALC" ou 1 | La norme maximale de la dynamique est la plus grande norme infinie renvoyée par localDynBounds parmi toutes les dimensions de l'espace, possiblement majorée par COST_BOUND_CONSTANT |
|
| "NUMERICAL_CALC" ou 2 ???"NUMERIC" | La norme maximale de la dynamique est la valeur de plus grande norme infinie des vecteurs de dynamique pour les contrôles testés, possiblement majorée par COST_BOUND_CONSTANT |
|
| DYN_BOUND : | réel - 1 | Norme maximale de la dynamique. Celle-ci sera utilisée pour déterminer le pas de temps si DYN_BOUND_COMPUTE_METHOD vaut "ANALYTICAL" |
| COST_BOUND_CONSTANT : | ????? | Uniquement si GRID_METHOD vaut "MM" ou "HMM, norale maximale du coût |
| IS_TIME_STEP_GLOBAL : | true / false | Si true, le pas d temps est le même pour tous les points de la grille. Sinon, il varie en fonction de la constante de Lipschitz locale |
| TIME_STEP_FACTOR : | ????réel - 1 | coefficient multiplicateur appliqué au pas de temps |
Paramètres DYNAMICS__TYPE vaut "DC", "DD" ou "DH"
Détails
???J'ai l'impression qu'il n'y en a pas
CONTROL_PARAMETERS
Clés/Valeurs/Explications
| CONTROL_DIMENSION : | entier - 1 | Dimension de l'espace des contrôles |
| CONTROL_MIN_VALUES : | réel[CONTROL_DIMENSION] - [0, ..., 0] | Coordonnée minimale des contrôles testés sur chaque dimension |
| CONTROL_MAX_VALUES : | réel[CONTROL_DIMENSION] - [1, ..., 1] | Coordonnée maximale des contrôles testés sur chaque dimension |
| CONTROL_GRID_POINTS : | entier[CONTROL_DIMENSION] - [1,...,1] | Nombre de coordonnées de contrôles différentes testés sur chaque dimension. Les contrôles testé seront ceux ayant pour valeur sur l'axe i CONTROL MINVALUES [i] + i*(CONTROL MAXVALUES [i]- CONTROL MINVALUES [i])/ (CONTROL GRIDPOINTS [i] - 1) avec i allant de 0 à n-1 (les tableaux sont indicés à partir de 0) |
| CONTROL_TYCHASTIC_DIMENSION : | entier - 1 | ???? Dimension de l'espace des contrôles tychastiques |
| CONTROL_TY_MIN_VALUES : | réel[CONTROL_TYCHASTIC_DIMENSION] - [0, ..., 0] | Coordonnée minimale des contrôles tychastiques testés sur chaque dimension |
| CONTROL_TY_MAX_VALUES : | réel[CONTROL_TYCHASTIC_DIMENSION] - [1, ..., 1] | Coordonnée maximale des contrôles tychastiques testés sur chaque dimension |
| CONTROL_TY_GRID_POINTS : | entier[CONTROL_TYCHASTIC_DIMENSION] - [1,...,1] | ?????Nombre de coordonnées de contrôles tychastiques différentes testés sur chaque dimension. Les contrôles testé seront ceux ayant pour valeur sur l'axe i CONTROL MINTYVALUES [i] + i*(CONTROL TYMAXVALUES [i]-CONTROL TYMINVALUES [i])/ (CONTROL TYGRIDPOINTS [i] - 1) avec i allant de 0 à n-1 (les tableaux sont indicés à partir de 0) |
| CONTROL_HYBRID_TRANSITION_DIMENSION : | entier - ??? | Uniquement pour les systèmes hybrides ???dimension of the hybrid transition part of the control space, |
| CONTROL_HT_MIN_VALUES : | ???réel[CONTROL_HYBRID_TRANSITION_DIMENSION] - [0, ..., 0] | Uniquement pour les systèmes hybrides ???? minimum values for each dimension of the hybrid transition part of the control space |
| CONTROL_HT_MAX_VALUES : | ???réel[CONTROL_HYBRID_TRANSITION_DIMENSION] - [1, ..., 1] | Uniquement pour les systèmes hybrides ???? maximum values for each dimension of the hybrid transition part of the control space |
| CONTROL_HT_GRID_POINTS : | ???entier[CONTROL_HYBRID_TRANSITION_DIMENSION] - [1, ..., 1] | Uniquement pour les systèmes hybrides ??? number of grid points per dimension of the hybrid transition part of the control space, |
TYCHE_PARAMETERS
Clés/Valeurs/Explications
Contenu à venir...
TRAJECTORY_PARAMETERS
Clés/Valeurs/Explications
Contenu à venir...