Transcript Le solveur GAMS.
Initiation au logiciel GAMS
Mohamed Ali Marouani
Le solveur GAMS
Il permet de résoudre des systèmes d'équations ou de maximiser
un
égalités ou inégalités.
objectif sous des contraintes,
Fonctionnement pratique
• Le fichier de commande : extension '.GMS' • Le fichier d'Output : extension '.LST' Il contient les résultats du modèle, et, en cas d’erreur, des informations utiles pour les résoudre.
• Ecriture du fichier de commande dans l'éditeur de texte GAMSIDE .
L’interface GAMSIDE
Créer un projet
Dans le répertoire où se trouvent les fichiers *.gms
Quelques éléments du langage GAMS
A**B : « A exposant B » SUM(I,X(I)): somme, PROD(I,X(I)) : produit, GAMS ne fait pas de différence entre majuscules et minuscules .
Le caractère * en début de ligne est un commentaire.
signifie que ce qui suit $ontext (à placer en début de ligne) pour un paragraphe de commentaire, puis $offtext (également en début de ligne) Chaque objet GAMS doit être d'abord
déclaré
puis on doit lui
donner une valeur
. Parfois les deux opérations sont simultanées.
$include pour inclure un fichier input La plupart des commandes doivent être terminées par un point-virgule.
Les ensembles (sets)
Set
Agr Ind Ser /; i / agriculture industrie services Alias (i,j)
Les sous-ensembles
Set
i /Ble, Fruits, Viande, Lait, Sucre, Autre/ Quota(i) /Lait, Sucre/; La composition des sous-ensembles peut être modifiée : Vivri( « Fruits » ) = no; Vivri( « Ble » ) = yes;
Structure d’un M.C.E.G sous GAMS.
: le calibrage et le modèle
Partie 1 : le modèle
◦
Etape 1 :
déclaration et définition des ensembles Exemple : Set I / Agr Ind Ser agriculture industrie services / M(I) /Agr, Ind/ NM(I) /Ser/; Alias (I,J)
◦
Etape 1I :
paramètres.
déclaration des variables et des Variables X(I) Y(I); Parameter Alpha(I) gamma;
◦
Etape III :
déclaration des équations.
Equations Product(I) Conso(I); ◦
Etape IV
: définition des équations.
Product(I)..
X(I) =E= A(I)*K(I)**alpha(I)*L(I)**(1-alpha(I)); Conso(I).. p(I)*C(I) =E= beta(I)*Y(I);
Partie 1I : le calibrage
Etape V :
base déclaration des variables à l’année de ◦ Parameter XO(I) YO(I);
Etape VI
: donner une valeur aux variables à l'année de base ◦ Plutôt qu'entrer la totalité du compte central mieux vaut n'entrer que les valeurs nécessaires et calculer le reste par solde.
◦ Ensuite à partir des équations du modèle on calibre les paramètres les uns après les autres.
Etape VII
(facultative) : lire les résultats.
◦ Display XO, YO, alpha, beta, gamma; ◦ On ne doit pas écrire l'indice avec la commande display.
◦ Permet de contrôler d’éventuelles erreurs de calcul
Initialisation et bouclage
Etape VIII :
initialisation des variables.
X.L(I) = XO(I);
Etape IX :
bouclage.
LS.FX = LSO; PINDEX.FX = PINDEXO;
Etape X :
définition et déclaration du modèle MODEL nom_du_modèle /ALL/; On peut également définir le modèle par la liste des équations.
Etape XI :
résolution du modèle SOLVE nom_du_modèle using CNS; Ou SOLVE nom_du_modèle using MCP; Selon les solveurs disponibles
Les erreurs et les vérifications
Plusieurs types d'erreurs sont possibles : ◦ les erreurs de syntaxe ◦ les erreurs de conception : dans le calibrage ou lors de l’écriture du MEGC proprement dit Les premières sont les plus faciles à trouver. ◦ Des indications en rouge dans le fichier de log indiquent les erreurs. ◦ Il suffit de double-cliquer sur ces indications pour que le curseur se positionne à l'endroit où l'erreur est identifiée dans le fichier ".GMS".
Les erreurs de conception n'empêchent pas toujours le modèle de trouver une solution. ◦ Celles-ci sont peuvent avoir différentes origines (exemples). ◦ Il est donc nécessaire de vérifier trois points : Si on à pris la précaution d'initialiser toutes les variables, les LHS (Left Hand Side) doivent être égaux RHS (utiliser les ***) LEON est bien égal à " . ", sans choc et
avec
signifie que la loi de Walras est vérifiée.
choc, ce qui Les résultats du modèle vous semblent logiques.