Le solveur GAMS.

Download Report

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.