Skip to main content

[Texte] Viablab - tous les paramètres du fichier JSON

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...