TP de Recherche Opérationnelle n° 1 - Laurent Henocque ...laurent.henocque.com/oldsite/doc/tp1 OPL...

2
TP de Recherche Opérationnelle n° 1 - Laurent Henocque ESIL INFO Avril 2008 Exercices de prise en main du logiciel OPL Studio. Cette première séance pratique vise à vous familiariser avec les fonctionnalités de OPL Studio. 0- En premier lieu, il vous est demandé de dérouler le tutoriel disponible sur ma page: http://laurent.henocque.free.fr/enseignement/ Notez que ce tutoriel explore des fonctionnalités de OPL Studio qui dépassent le cadre de la programmation linéaire, notamment par l'utilisation de variables discrètes et de contraintes non linéaires. Opl Studio peut vous être utile dans ces cadres également, bien qu'ils sortent des objectifs du présent cours. Ensuite, je propose de faire des exercices de découverte des fonctionnalités de OPL Studio plus spcifiquement relatives à la programmation linéaire. Pour toute la suite, il est conseillé de créer un fichier ".mod" par exercice, et de ne pas le sauver dans les répertoires de Opl Studio mais chez vous! 1- Lancez OPL Studio, puis ouvrez le projet appelé "gaz" (vous le trouverez dans le dossier "examples" de la distribution Opl Studio - faites en une compie dans votre répertoire : il faut trois fichiers: gaz.prj, gaz.mod et gaz.dat), étudiez le pour le comprendre puis exécutez le et étudiez les résultats. Vérifiez selon vos connaissances que ce programme est bien linéaire. Faites varier les données, ou compliquez le si vous le voulez. Vous pouvez aller dans le menu options, et changer l'algorithme utilisé : dual simplex, et barrier. Les résultats changent peu, car ils ne se manifestent vraiment que lorsqu'on mnipule des programmes de plusieurs milliers de variables. Il est possible de complique "gaz" pour faire monter en charge Opl, mais ce n'est pas utile pour le moment. Vous avez vu avec le tutoriel que l'on peut utiliser OPL pour déterminer les solutions de systèmes d'équations linéaires, sans optimisation. Il suffit de remplacer "subject to" par "solve", et de supprimer la clause minimize (ou maximize). Quand il n'y a pas d'optimisation, CPlex déroule seulement la première phase du simplexe, après avoir effectué toutes les opérations de presolve raisonnables. Exemple : // 3 équations solve { x=2*y+z+3; x = y+2*z+2; 2*x=y + z+1; };

Transcript of TP de Recherche Opérationnelle n° 1 - Laurent Henocque ...laurent.henocque.com/oldsite/doc/tp1 OPL...

Page 1: TP de Recherche Opérationnelle n° 1 - Laurent Henocque ...laurent.henocque.com/oldsite/doc/tp1 OPL RO.pdf · TP de Recherche Opérationnelle n° 1 ... de créer un fichier ".mod"

TP de Recherche Opérationnelle n° 1 - Laurent HenocqueESIL INFO Avril 2008

Exercices de prise en main du logiciel OPL Studio.

Cette première séance pratique vise à vous familiariser avec les fonctionnalités de OPL Studio.

0- En premier lieu, il vous est demandé de dérouler le tutorieldisponible sur ma page:

http://laurent.henocque.free.fr/enseignement/

Notez que ce tutoriel explore des fonctionnalités de OPL Studio qui dépassent le cadre de la programmation linéaire, notamment par l'utilisation de variables discrètes et de contraintes non linéaires. Opl Studio peut vous être utile dans ces cadres également, bien qu'ils sortent des objectifs du présent cours.

Ensuite, je propose de faire des exercices de découverte des fonctionnalités de OPL Studio plus spcifiquement relatives à la programmation linéaire. Pour toute la suite, il est conseillé de créer un fichier ".mod" par exercice, et de ne pas le sauver dans les répertoires de Opl Studio mais chez vous!

1- Lancez OPL Studio, puis ouvrez le projet appelé "gaz" (vous le trouverez dans le dossier "examples" de la distribution Opl Studio - faites en une compie dans votre répertoire : il faut trois fichiers: gaz.prj, gaz.mod et gaz.dat), étudiez le pour le comprendre puis exécutez le et étudiez les résultats. Vérifiez selon vos connaissances que ce programme est bien linéaire. Faites varier les données, ou compliquez le si vous le voulez.

Vous pouvez aller dans le menu options, et changer l'algorithme utilisé : dual simplex, et barrier. Les résultats changent peu, car ils ne se manifestent vraiment que lorsqu'on mnipule des programmes de plusieurs milliers de variables. Il est possible de complique "gaz" pour faire monter en charge Opl, mais ce n'est pas utile pour le moment.

Vous avez vu avec le tutoriel que l'on peut utiliser OPL pour déterminer les solutions de systèmes d'équations linéaires, sans optimisation. Il suffit de remplacer "subject to" par "solve", et de supprimer la clause minimize (ou maximize). Quand il n'y a pas d'optimisation, CPlex déroule seulement la première phase du simplexe, après avoir effectué toutes les opérations de presolve raisonnables. Exemple :

// 3 équationssolve { x=2*y+z+3; x = y+2*z+2; 2*x=y + z+1;};

Page 2: TP de Recherche Opérationnelle n° 1 - Laurent Henocque ...laurent.henocque.com/oldsite/doc/tp1 OPL RO.pdf · TP de Recherche Opérationnelle n° 1 ... de créer un fichier ".mod"

Aux fins de prendre en main cet outil, et d'interpréter les résultats qu'il fournit.

2- testez le programme ci dessus ou un autre similaire. Que se passe quand vous écrivez une équation non linéaire?

3- testez un système d'équations sans solutions (droites parallèles par exemple)

4- testez un système d'inéquations avec solutions. (solve seul)

5- testez un système d'inéquations sans solutions

6- écrivez un système de trois inéquations délimitant une région (polytope) non vide du plan <x,y>. Maximisez "y".

7- Supprimez une des trois inéquations de façon à ce que le polytope ne soit plus borné. Maximisez "y", minimisez "y" et interprétez les résultats (vous pouvez également voir de quelle manière se comportent les différents algorithmes - dual, barrier...). Certains donneront une solution, d'autres non.

8- Rejouez certains des exemples ci dessus et étudiez le contenu de l'onglet statistiques pour cplex : nombres d'itérations, etc...

9- OPL s'arrête sur une solution, et permet d'aller à la solution suivante avec le bouton next, de calculer toutes les solutions restantes d'un coup, ou d'arrêter la recherche. Cela a t'il un sens avec un programme linéaire calculé avec le simplexe?

10- Ecrivez un programme linéaire comportant des équations non linéairement indépendantes. Résolvez le en changeant les paramètres de présolve qui permettent de faire les simplifications. Observez les statistiques.

11- Enfin, si vous avez fini, testez le comportement d'OPL Studio avec les exemples que vous avez étudié en TD avec Serge Prosperi