La recherche opérationnelle est une discipline dont le but est de fournir des méthodes pour répondre à un type précis de problème, c'est-à-dire à élaborer une démarche universelle pour un type de problème qui aboutit à la ou les solutions les plus efficaces. La particularité de la recherche opérationnelle est que les méthodes proposées sont des démarches rationnelles basées sur des concepts et outils mathématiques et/ou statistiques. Généralement, ces méthodes sont employées sur des problèmes tels que leur utilisation "manuelle" devient impossible. C'est pourquoi, du fait qu'elles sont rationnelles, les démarches proposées par la recherche opérationnelle peuvent être traduites en programmes informatiques. Cette traduction d'une démarche en un programme informatique n'est pas sans difficulté. Tout d'abord, le temps d'exécution du programme résultant et/ou la place occupée dans la mémoire de l'ordinateur peuvent ne pas être acceptables. Ainsi, une méthode en recherche opérationnelle sera jugée sur ces critères de temps et de place. Plus une méthode sera rapide et peu gourmande en mémoire, plus elle sera considérée bonne. Les ordinateurs ont une structure particulière qui fait que toutes les propriétés des mathématiques traditionnelles ne sont pas toujours respectées. Ainsi, une démarche prouvée fonctionner admirablement en théorie peut s'avérer être complètement inexploitable en pratique. Notamment, les nombres réels dans un ordinateur ne peuvent pas être représentés de manière exacte, ils sont arrondis. On voit donc facilement qu'une répétition excessive d'arrondis dans un calcul peut entraîner des erreurs importantes dans les résultats finaux. Les méthodes employées en recherche opérationnelle doivent prendre en compte ce genre de problème.
Dans ce cours, nous verrons différents outils de recherche opérationnelle sans apporter de justifications mathématiques très détaillées et rigoureuses. Après quelques exemples qui permettront de mieux cerner le domaine de la recherche opérationnelle, nous introduirons un outil à la fois graphique et théorique: les graphes. Afin de mieux appréhender la complexité d'un problème ou la rapidité d'un algorithme, nous nous intéresserons à la théorie de la complexité. Enfin, nous verrons un autre outil important de la recherche opérationnelle qui est la programmation linéaire. L'avantage de cet outil est d'apporter une solution générique à la résolution de nombreux problèmes. De plus, cet outil est disponible sous différentes formes pour une utilisation informatique. Voici le plan du cours.
Dans tous ces exemples, il existe une méthode simple pour résoudre le problème. En effet, il suffit d'énumérer toutes les possibilités et d'en dégager la ou les meilleures. Cependant, on s'aperçoit que plus le problème est compliqué en terme d'éléments mis en jeu, plus le nombre de possibilités croît de manière non pas linéaire (proportionnelle) mais plutôt exponentielle. Par exemple, le problème d'affectation présenté précédemment avec 100 personnes a 100! (100 x 99 x 98 x ... x 1) solutions. Le simple fait de rajouter une personne dans le problème va multiplier par 101 le nombre de solutions. Généralement en recherche opérationnelle, on a souvent à traiter des problèmes dont le nombre de solutions devient rapidement difficile à imaginer. Bien que les exemples vus ici soient petits, il faut bien comprendre qu'en réalité, on sera confronté à des problèmes de taille beaucoup plus importante. Ce qui explique que l'on cherche des méthodes toujours plus efficaces pour résoudre les problèmes.
|