Décrire la syntaxe des fichiers issus des calculs de ViabLab.
Les fichiers issus de l'exécution de ViabLab sont enregistrés dans le répertoire /OUTPUT.
Un calcul génère plusieurs fichiers qui sont nommés avec le même préfixe.
Les suffixes correspondent aux types d'informations contenues dans les fichiers. Ainsi, tous les fichiers de même suffixe suivent la même syntaxe. Sont listés ci-dessous tous les types de fichiers qu'un calcul de ViabLab peut produire :
<prefixe>-grid_data.dat
Fichier de grille - lire le descriptif
Le fichier de grille est un fichier permettant de connaître les dimensions et paramètres de la grille régulière à partir de laquelle s'est effectué le calcul, et ainsi pouvoir lire les autres fichiers.
Ci-dessous l'exemple d'une sortie (du modèle SimplePopGrowth), la description est ajoutée en commentaires après un # :
2 # Dimension de l'espace d'états (STATE_DIMENSION)
# Valeurs minimales des coordonnées d'un état (STATE_MIN_VALUES)
# Il y a autant de valeurs que de dimension de l'espace des états (STATE_DIMENSION)
-2 # première coordonnée du point inférieur (dans toutes les dimensions) de la grille
-2 # seconde coordonnée du point inférieur (dans toutes les dimensions) de la grille
# Valeurs maximales des coordonnées d'un état (STATE_MAX_VALUES)
# Il y a autant de valeurs que de dimension de l'espace des états (STATE_DIMENSION)
2 # première coordonnée du point supérieur (dans toutes les dimensions) de la grille
2 # seconde coordonnée du point supérieur (dans toutes les dimensions) de la grille
# Nombre de points de grille par dimension (STATE_GRID_POINTS)
4001 # nombre de points de la grille selon le premier axe
4001 # nombre de points de la grille selon le second axe
# Indice des dimensions à conserver pour la coupe (SLICE_DIRS)
0
0
# Valeur souhaitée pour la dimension fixée (SLICE_VALUES)
1
1<prefixe>-viab.dat
Fichier de noyau de viabilité complet - lire le descriptif
Ce fichier contient des lignes représentant les coordonnées des points de grille et leur appartenance au noyau. Chaque ligne contient STATE_DIMENSION coordonnées de points de grille séparées par des espaces et en dernier une valeur.
La signification de la valeur en fin de ligne diffère selon le type de noyau de viabilité calculé (spécfié GRID_METHOD).
Si le noyau de viabilité est un ensemble quelconque (GRID_METHOD vaut “BS” (BitSet)), la dernière valeur vaut 1.0 si le point est dans le noyau de viabilité et 0.0 sinon.
(A noter qu'il est possible de ne pas écrire les valeurs non contenues dans le noyau en mettant SAVE_VIABSET_LIGHT à True, dans quel cas le fichier ne contiendra que les lignes se terminant par 1.0.)
Si le noyau de viabilité est l'épigraphe d'une fonction valeur (GRID_METHOD vaut MM (MicroMacro)), la dernière valeur indique la valeur de la grille en cette position. La dernière valeur vaudra alors PLUS_INF (constante du programme valant 1015) si la valeur n’est pas contenue dans le noyau et une valeur strictement inférieure si elle appartient au noyau. Tout comme pour un méthode BS, il est possible de ne conserver que les lignes contenues dans le noyau de viabilité.
<prefixe>-viab-bound.dat
Fichier de la frontière du noyau de viabilité - lire le descriptif
Ce fichier contient la liste des points représentant la frontière du noyau de viabilité, c'est à dire les coordonnées des points de la grille qui ont au moins un voisin qui n'appartient pas au noyau calculé. Ces points sont écrits sous forme de STATE_DIMENSION coordonnées séparées par des espaces. Il y a un point par ligne.
<prefixe>-traj-[i].dat et <prefixe>-traj-[i]-Discrete.dat
Fichiers de trajectoires - lire le descriptif
Les fichiers de trajectoire fonctionnent par paires. Chaque fichier de trajectoire “réelle” se terminant en -traj-[i].dat, avec i un entier, est accompagné d’un fichier de trajectoire discrète en traj-[i]-Discrete.dat.
Le fichier de trajectoire réelle est un ensemble de lignes représentant chacune un état, un temps (durée) depuis le début de la trajectoire et un contrôle. Chaque état est représenté par STATE_DIMENSION coordonnées et chaque contrôle par CONTROL_DIMENSION coordonnées.
Si jamais une trajectoire par stratégie est utilisée, et que le paramètre de trajectoire SAVE_PICKING_STRATEGY n’est pas false, la dernière colonne sera une liste de stratégies de la forme “NOM_STRATEGIE_1(indice_dans_liste_de_stratégies),NOM_STRATEGIE_2(indice_dans_liste_de_stratégies),…NOM_STRATEGIE_n(indice_dans_liste_de_stratégies)”. Chaque stratégie à l’intérieur de cette liste est alors une stratégie ayant contribué au choix (modifié la valeur) du contrôle retourné.
Une ligne est donc composée de:
STATE_DIMENSIONcoordonnées séparées par des espaces représentant un état.- Une durée depuis le début de la trajectoire.
CONTROL_DIMENSIONcoordonnées séparées par des espaces représentant un contrôle.- Optionellement, une liste de stratégies séparées par des virgules (,) au format “NOM(indice)”, avec “indice” un entier correspondant à l’indice dans la liste des stratégies et “NOM” le nom de la stratégie ayant cet indice dans le JSON.
Pour un schéma numérique donnée (Euler, Runge-Kutta d’ordre 2, Runge-Kutta d’ordre 4), il devrait être possible de retrouver la trajectoire obtenue à l’aide de la dynamique, notée $\Phi(x, u)$ avec $x$ l’état et $u$ le contrôle. On note $x_n$ l’état sur la ligne $n$, $t_n$ la durée en $n$ et $u_n$ le contrôle en $n$.
Pour la méthode d’Euler, on a par exemple que:
$$ x_{n+1} = x_n + (t_{n+1} - t_n)\Phi(x_n, u_n).$$