Vous êtes sur la page 1sur 39

INTRODUCTION AU

LOGICIEL GAMS
Souleymane Sadio Diallo
Introduction
 GAMS (General Algebraic Modelling System) est un
logiciel développé par la Banque mondiale.

 Il vise à faciliter la résolution de grands modèles,


complexes, comportant souvent d’équations non
linéaires à l’aide d’un ordinateur personnel.

 GAMS permet de résoudre de larges systèmes


d’équations simultanées non linéaires avec ou sans
fonction objectif
Introduction
 La structure générale des problèmes résolus est la
suivante:
Introduction
Grands avantages du logiciel:

(i) Simplicité dans l’implémentation

(i) Facilités de mise à jour technique avec


notamment l’élaboration régulière de nouveaux
algorithmes de résolution
Introduction
L’une des évolution majeures de GAMS est le
passage de la programmation sous DOS à la
création de l’interface GAMS-IDE:

 Sous DOS le programme était écrit


sous format ASCII;

 GAMS-IDE est compatible avec


WINDOWS plus facile à utiliser.
Architecture de la programmation
dans GAMS
ETAPE 1: Entrée
des données

ETAPE 2: Définition
du modèle

ETAPE 3: Résolution
du modèle
Architecture de la programmation dans GAMS
Set : déclaration et définitions
ETAPE 1: des ensembles
Parameter : déclaration et
Entrée des
définitions des paramètres
données Assignation des données
Display : présente les
données intermédiaires
ETAPE 2:
Définition
du modèle

ETAPE 3:
Résolution
du modèle
Architecture de la programmation dans GAMS
Set : déclaration et définitions des ensembles
Parameter : déclaration et définitions des

ETAPE 1: paramètres
Assignation des données
Display : présente les données intermédiaires
Entrée des
données
Variables : déclaration des variables

Equations : définition et déclaration


ETAPE 2:
des équations
Définition
du modèle Model : définition du modèle

ETAPE 3:
Résolution
du modèle
Architecture de la programmation dans GAMS
ETAPE 1: Entrée Set : déclaration et définitions des ensembles
Parameter : déclaration et définitions des paramètres
des données Assignation des données
Display : présente les données intermédiaires

ETAPE 2: Variables : déclaration des variables


Equations : définition et déclaration
Définition du des équations
modèle Model : définition du modèle

Solve : résolution
ETAPE 3:
Résolution Présentation des résultats
du modèle
Architecture de la programmation dans GAMS

Règles à respecter dans la programmation


GAMS

 Déclarer au tout début du programme tous les


éléments avant de les utiliser : ensembles,
paramètres, variables, équations;

 A la fin de chaque opération, terminer par un


« ; » pour éviter les erreurs de compilation
Architecture de la programmation dans GAMS

Règles à respecter dans la programmation


GAMS

 GAMS permet de mettre sur une même ligne,


plusieurs commandes ou de mettre une
commande par ligne afin de faciliter la lecture et
l’impression.

 Dans l’écriture d’un code GAMS, on peut


indifféremment utiliser des lettres majuscules
ou minuscules.
Architecture de la programmation dans GAMS

Règles à respecter dans la programmation


GAMS

 Les Commandes SET, PARAMETER,


VARIABLE, EQUATION, MODEL,
SOLVE, ne doivent être utilisés pour déclarer un
éléments.

 Les noms d’éléments dans SET, PARAMETER,


VARIABLE, EQUATION ou MODEL
doivent toujours commencer par une lettre.
Architecture de la programmation
dans GAMS
Principales fonctions automatiques
Multipication * Egalité dans = Logarithme LOG (.)
une opération

Soustraction - Sommation SUM(set domain, Maximum MAX(.,.)


element)

Addition + Produit PROD(set domain, Minimum MIN(.,.)


element)

Division / Valeur absolue ABS(.)

puissance ** Exponentielle EXP(.)


Architecture de la programmation
dans GAMS
Procédure de résolution et présentation des résultats:
(i) le programme de code GMS d’un modèle sera
sauvegardé avec l’extension « .GMS »;

(ii) Bien que les versions sous windows offrent


une certaine flexibilité, il est conseillé d’éviter
des noms de fichiers longs (plus de 8 caractère);

(iii) La commande « RUN » dans le menu de


GAMS-IDE (F9) est utilisé pour exécuter le
programme.
Architecture de la programmation
dans GAMS (Suite)
 Le fichier de résultat créé par cette procédure a le
même nom que le programme initial mais avec
l’extension ‘.lst’. Ce fichier contient :
- soit le programme initial avec l’identification
des erreurs compilées s’il y en a.
- Soit les résultats par défaut décrits ci-après :
Output dans le fichier’nom.lst’
Rappel du programme initial
Liste des équations
Les statistiques du modèle
Le résumé de la résolution
Les résultats
Ecrire un programme GAMS
1. Calibration

La première étape de la modélisation consiste à:


 Entrer les données de référence et;
 Evaluer les paramètres cohérents avec les
données de référence généralement issues de
la MCS.
 Il s’agit du processus de calibration. Les paramètres
à calibrer sont déterminés avec ces données.
$TITLE Modele theorique
$STITLE Capital immobile entre les secteurs
*Modèle d’une économie fermée produisant 2 biens avec 2 facteurs
*Bujumbura
Ecrire un programme GAMS

SET I secteurs /BIENS agriculture et industrie


SER services/
Ecrire un programme GAMS
iii Définition des paramètres
 La définition des paramètres est introduite par la
commande PARAMETER terminé par un « ; ».

 On note deux sortes de paramètres:


 Les paramètres des différentes fonctions
du modèles (taux de taxes, paramètres
d’échelle, élasticités, etc.);

 Les variables du modèles à leur niveau de


référence auxquelles on ajoute un « O ».
PARAMETER

A (I) Coefficient d’échelle (fonction de production Cobb-Douglas)


Alpha (I) Parts (fonction de production Cobb-Douglas)
Delta (I) Parts (fonction d’utilité CES)
Sigma (I) Elasticité de substitution (fonction d’utilité CES)

*Prix
wo Taux de salaire
ro (I) Taux de rendement du capital dans le secteur I
Po (I) Prix du bien I

*Production
XSO (I) Production du secteur I

*Facteurs
KDO (I) Demande de capital du secteur I
LSO Offre totale de travail
LDO (I) Demande de travail du secteur I

*Demande
CO (I) Consommation de bien I

*Revenu
YHO (I) Revenu du ménage
Ecrire un programme GAMS
Iv- Les données
L’apparition de GAMS-IDE a permis le
développement de plusieurs outils pour la gestion
des données:

 le développement de EXCEL LINK;

Le GAMS GDX facilities tools; voir


http://www.gams.de/dd/docs/tools/gdx
utils.pdf .
Ecrire un programme GAMS
Iv- Les données

Il y a trois façons d’entrer des données:

 sous forme matricielle avec la commande


TABLE.

 Le cas unidimensionnel avec la commande


SCALAR.

 Par affectation directe avec « = »


Ecrire un programme GAMS
Sous forme matricielle:

Matrice avec des dimensions non prédéfinies

TABLE DP (* , I) Données par secteur


Biens SER
XSO 26100.0 21260.0
LDO 13320.0 15540.0
KDO 12780.0 5720.0
CO 26100.0 212260.0
PO 1.0 0.85
ro 1.25 1.25
;
Ecrire un programme GAMS
Sous forme matricielle:
Avec une matrice aux dimensions bien définies
TABLE DIO (I , J) Consommation intermédiaire par secteur

BIENS SER

BIENS 120.0 275.5

SER 136.0 3349.0


;
Ecrire un programme GAMS

Avec l’approche unidimensionnelle.

La valeur des paramètres est inscrite entre deux


barres: « /valeur/ »

SCALAR
YHO / 47360.0/
wo / 0.75/
;
Ecrire un programme GAMS
Lorsque les données sont entrées dans une
matrice, il faut procéder à « l’assignation » qui
consiste à définir le lien entre les paramètres
déclarés et les valeurs entrées.

Exemple:
XSO (I) = DP (“XSO”, I);
LDO (I) = DP (“LDO”,I);
KDO = DP (“KDO”,I);
PO = DP (“PO”,I);
ro = DP (“ro”,I);
Ecrire un programme GAMS
V. Calcul de variables et calibration

• Certaines variables et paramètres peuvent être calculés ou


calibrés à partir d’autres variables ou paramètres.
• L’ordre dans lequel ces variables et paramètres sont
calculés est très important car GAMS utilisera la dernière
valeur assignée.
*Calcul des Volumes
LDO(I) =LDO(I)/wo;
KDO(I) =KDO(I)/ro(I);
XSO(I) =XSO(I)/PO(I);
LSO =SUM(I,LDO(I));
CO(I) = CO(I)/PO(I);

*Production (Cobb-Douglas)
Alpha(I) = wo*LDO(I)/(PO(I)*XSO(I));
A(I) = XSO(I)/((LDO(I)**alpha(I))*(KDO(I)**(1-alpha (I))))
Ecrire un programme GAMS
2. Le modèle

La spécification du modèle se fait en trois


étapes:
 La déclaration des variables du modèles;

La déclaration des équations du modèles;

 La spécification des équations du modèle


qui sera suivi de l’initialisation des
variables et le bouclage.
Ecrire un programme GAMS
2. Le modèle

i. La déclaration des variables se fait par la


commande VARIABLE qui se termine par un
« ; ».
Variables
*Prix
w Taux de salaire
r (I) Taux de rendement du capital dans le secteur I
P (I) Prix du bien I
*Production
XS (I) Production du secteur I
*Facteurs
KD (I) Demande de capital du secteur I
LD (I) Demande de travail du secteur I
LS Offre totale de travail
Ecrire un programme GAMS (Suite)
2. Le modèle

ii. La déclaration des équation se fait par la


commande EQUATION qui se termine par
un « ; ».
EQUATIONS
*Production
SUPPLY (I) Fonction de production pour le secteur I
LDEM (I) Demande de travail du secteur I
*Revenu
INCE (I) Revenu du ménage
*Demande
DGOOD Demande de biens
DSERV Demande de services
*Prix
RETK (I) rémunération du capital du secteur I
;
Architecture de la programmation dans GAMS
2. Le modèle
iii. La spécification des équations se fait en respectant
les règles suivantes:
 La ligne commence par le nom de l’équation
qui a été préalablement déclarée suivi de « .. »;

L’équation est définie et se termine par un « ; »;

 Les deux membres de l’équations sont séparés


par un « =E= », un « =G= » ou un «=L= ».
Architecture de la programmation dans GAMS
EXEMPLE

SUPPLY (I) . . XS(I) =E= A(I) * LD(I) ** alpha(I) * KD(I) **(1-alpha(I));


LDEM(I) . . LD(I) =E= P(I) * alpha (I) * XS (I) / w;
INCH . . YH =E= SUM (I,W*LD(I)) + SUM (I, r(I)*KD(I));
DGOOD . . C (“GOOD”)=E= YH / (P(“SER”) + P (“GOOD”) * [P(“SER”)) /
P(“GOOD”) * delta / (1-delta)] ** sigma);
DSERV . . C(“SER”)=E= YH / ((P(“GOOD”) + P (“SER”) * [P(“GOOD”)) /
P(“SER”) * (1-delta)/delta] ** sigma);
RETK(I).. r(I) =E= (P(I) * XS(I) – w * LD(I) ) / KD(I);
2. Le modèle
L’initialisation des variables
 Pour toutes les variables du modèle, il faut
les initialiser;

 L’initialisation consiste à donner une valeur


de départ aux variables. Celle-ci correspond
à la valeur de référence entrée au niveau du
calibrage.

 On fait suivre le nom de chaque variable par le


suffixe « .L » (pour LEVEL) et se termine par un
« ; ».
Architecture de la programmation dans GAMS

2. Le modèle

L’initialisation des variables

XS . L (I) = XSO (I);


LD . L (I) = LDO (I);
KD . L (I) = KDO (I);
w.L = wo;
P . L (I) = PO (I);
r . L (I) = ro (I);
YH . L = YHO ;
C . L (I) = CO (I);
Architecture de la programmation dans GAMS

2. Le modèle
Le bouclage
 Il consiste à définir les variables exogènes du
modèle.

 Il se fait en écrivant la variable suivi du suffixe


« .FX » avec la dimension de la variable. Il se
termine par un « ; ».
Architecture de la programmation dans GAMS

2. Le modèle
Le bouclage
* P(GOOD) est le numéraire, le capital est supposé immobile
entre les secteurs
* l’offre totale de travail est exogène

P.FX (“GOOD”) = PO (“GOOD”);


LS . FX =LSO;
KD . FX (“GOOD”) = KDO (“GOOD)”);
KD . FX (“SER”) = KDO(“SER”);
Architecture de la programmation dans GAMS

3. La résolution du modèle
Elle se fait en deux lignes:
 La première commence par la commande MODEL
suivie du nom du modèle, d’une brève description
du modèle et la liste des équations à résoudre. Pour
résoudre toutes les équations, on utilise la
commande « /ALL/ »;

 La deuxième ligne commence par la commande


SOLVE suivie du nom du modèle et le mot USING et
la spécification de l’algorithme de résolution
Architecture de la programmation dans GAMS

3. La résolution du modèle

MODEL THEORY Modele theorique /ALL/;

SOLVE THEORY using NLP;


MERCI!