Notes sur la programmation linéaire - 2° partie, Notes de Applications informatiques
Francine88
Francine8813 January 2014

Notes sur la programmation linéaire - 2° partie, Notes de Applications informatiques

PDF (176.8 KB)
9 pages
323Numéro de visites
Description
Notes d’informatique sur la programmation linéaire - 2° partie. Les principaux thèmes abordés sont les suivants: Le problème de programmation linéaire, Définition, la méthode de monte-carlo, le calcul d'une intégrale, le...
20points
Points de téléchargement necessaire pour télécharger
ce document
Télécharger le document
Aperçu3 pages / 9
Ceci c'est un aperçu avant impression
Chercher dans l'extrait du document
Ceci c'est un aperçu avant impression
Chercher dans l'extrait du document
Aperçu avant impression terminé
Chercher dans l'extrait du document
Ceci c'est un aperçu avant impression
Chercher dans l'extrait du document
Ceci c'est un aperçu avant impression
Chercher dans l'extrait du document
Aperçu avant impression terminé
Chercher dans l'extrait du document

La matrice A peut, après introduction des variables d'écart se décompenser en deux sous-

matrices , une contenant les variables initiales D et l'autre comportant les variables

d'écart B tel que:

(57.261)

Remarque: Les variables d'écart sont des variables et non des constantes!! Il convient dans un

système où les variables sont au nombre de n tel qu'une équation du système s'écrirait:

(57.262)

d'ajouter une variable d'écart tel que:

(57.263)

où et sur chaque ligne m, la variable d'écart ajoutée doit être différente de celles déjà

insérées dans le système. C'est la raisons pour laquelle nous pouvons décomposer la matrice en

deux-sous matrices.

Les colonnes de la matrice B sont bien évidemment, par définition de la méthode, des colonnes

unités, linéairement indépendantes. Ces colonnes forment une base de l'espace vectoriel des

colonnes à m éléments (ou dimensions) - le nombre de lignes du système. Nous appelons B la

"matrice de la base".

Les variables associées aux composantes colonnes de la matrice B seront dès maintenant

appelées les "variables de bases". Dans ce cas, les variables de base sont donc essentiellement

les variables d'écart . Les variables associées aux colonnes de la matrice D seront

appelées les "variables hors-base"; il s'agit des variables .

Remarque: Rappelons que dans l'expression de la fonction économique, seule les variables hors-

base apparaissent.

En résumé, tout P.L. une fois mis sous forme standard est tel que:

- il existe une sous-matrice carrée de la matrice A des coefficients techniques, qui est appelée

matrice de base et qui est égale à la matrice carrée unité I de dimension (effectivement il

y autant de variables d'écart que de lignes dans le système d'équations original - au nombre

de m - et autant de colonnes puisque chaque variable d'écart à un indice différent).

- les variables de base associées n'apparaissent pas dans l'expression de la fonction

économique.

- le second membre des contraintes est constitué d'éléments non négatifs.

Nous disons que le problème est mis sous "forme canonique utilisable associée à la base B,

correspondant aux variables de base ".

Remarque: Nous pouvons intervertir les matrices (et donc changer de base canonique) B et D (ce

qui revient à dire que la matrice des variables de base devient la matrices des variables hors-base

et inversement).

Il est maintenant commode d'introduire les notations suivantes:

(57.264)

qui sont respectivement les vecteurs des variables de base et le vecteur des variables hors-

base.

Ainsi, le système d'équations décrivant les contraintes peut s'écrire indifféremment:

(57.265)

ou bien aussi:

(57.266)

Si la matrice B est une matrice de base, elle est non singulière et admet donc une matrice

inverse . En multipliant cette équation, à gauche et à droite, par nous obtenons:

(57.267)

Le système d'équations aura alors été mis sous une forme résolue en .

Pour obtenir une forme canonique utilisable associée à la base B, correspondant aux variables

de base, il ne reste plus qu'à éliminer les variables de base de l'expression de la fonction

économique.

Ecrivons cette fonction en séparant les vecteurs et , nous obtenons:

(57.268)

Nous pouvons alors facilement exprimer en fonction de . En utilisant le système

d'équations mis sous forme résolue en , nous avons dans un premier temps:

(57.269)

que nous substituons dans la fonction économique, pour obtenir:

(57.270)

Nous regroupons les termes en et nous avons:

(57.271)

Nous avons alors toujours système d'équations mais ne comportant plus d'inégalités mais au

contraire des égalités !!! Reste plus qu'à démontrer que la solution de ce système dit

"programme base" par la méthode du pivot est optimale.

Définition: nous appelons coût réduit de l'activité hors base j, le coefficient

correspondant de la ligne .

Soit un problème de programmation linéaire sous forme standard:

(57.272)

La matrice A à m lignes (autant qu'il y a de contraintes) et n colonnes, avec . Si nous

sélectionnonsm variables de base et si nous annulons les variables hors base, la

matrice A:

(57.273)

et le système se réduit à:

(57.274)

La matrice B est de dimension . Si elle définit une base, elle admet une matrice

inverse . Une solution du système est donc:

(57.275)

Si l'expression est non négative , nous avons une solution admissible qui vérifie les

contraintes et que nous appellerons un programme de base:

(57.276)

Le problème de programmation linéaire, s'écrit aussi sous la forme suivante, que nous appelons

"forme canonique utilisable associée au programme de base":

(57.277)

Définition: Nous appelons "coût réduit" de l'activité hors base j, le coefficient

correspondant de chaque ligne j de l'expression

A partir des développements effectués précédemment nous pouvons énoncer le résultat

suivant:

Proposition 1: si dans la forme canonique utilisable associée à un programme de base, tous les

coûts réduits sont alors le programme de base est optimal.

Proposition 2: La solution d'un problème de P.L., si elle existe, peut toujours être trouvée en un

programme de base.

La démonstration précise de ce résultat est assez délicate. Nous pouvons cependant en avoir

une intuition en considérant, une fois de plus, la notion de coût réduit.

En effet, pour un programme de base donné, considérons la forme canonique utilisable

associée à la base. Sur cette forme nous pouvons vérifier que, ou bien le programme de base

est optimal (tous les coûts réduits sont ), ou bien que le programme de base peut être

amélioré et remplacé par un nouveau programme de base donnant à z une valeur plus petite

(un coût réduit est négatif et la variable hors-base associée peut être augmentée jusqu'à ce

qu'une ancienne variable de base s'annule). Comme il y a un nombre fini de programmes de

base (au plus égal au nombre ), la solution de P.L. se trouve nécessairement en un

programme de base.

MÉTHODE DE MONTE-CARLO

La méthode de Monte-Carlo est un moyen très efficace de contourner les problèmes

mathématiques et physiques les plus complexes. Elle trouve ses applications dans des

domaines variés dont voici quelques exemples:

- Aiguille de Buffon

- Problèmes de neutronique liés à la bombe atomique

- Calcul d'intégrale ou d'espérance de variables aléatoires

- Résolution d'équations elliptiques ou paraboliques

- Résolution de systèmes linéaires

- Résolution de problèmes d'optimisation (recherche opérationnelle, gestion de projets)

- Finance

Il existe 2 types de problèmes qui peuvent être traités par la méthode de Monte-Carlo: les

problèmes probabilistes, qui ont un comportement aléatoire, et les problèmes déterministes,

qui n'en ont pas.

Pour ce qui est du cas probabiliste, il consiste à observer le comportement d'une série de

nombres aléatoires qui simule le fonctionnement du problème réel et à en tirer les solutions.

Pour le cas déterministe, le système étudié est complètement défini et on peut en principe

prévoir son évolution, mais certains paramètres du problème peuvent être traités comme s'il

s'agissait de variables aléatoires. Le problème déterministe devient alors probabiliste et ré

solvable de façon numérique. On parle alors d'estimation de "Monte-Carlo" ou d'une approche

de "MC élaborée".

La dénomination de méthode de "Monte-Carlo" date des alentours de 1944. Des chercheurs

isolés ont cependant utilisé bien avant des méthodes statistiques du même genre: par exemple,

Hall pour la détermination expérimentale de la vitesse de la lumière (1873), ou Kelvin dans une

discussion de l'équation de Boltzmann (1901), mais la véritable utilisation des méthodes de

Monte-Carlo commença avec les recherches sur la bombe atomique.

Au cours de l'immédiat après-guerre, Von Neumann, Fermi et Ulam avertirent le public

scientifique des possibilités d'application de la méthode de Monte-Carlo (par exemple, pour

l'approximation des valeurs propres de l'équation de Schrödinger). L'étude systématique en fut

faite par Harris et Hermann Khan en 1948. Après une éclipse due à une utilisation trop

intensive pendant les années 1950, la méthode de Monte-Carlo est revenue en faveur pour de

nombreux problèmes: en sciences physiques, en sciences économiques, pour des prévisions

électorales, etc., bref, partout où il est fructueux d'employer des procédés de simulation.

Le mieux pour comprendre la méthode de Monte-Carlo c'est d'abord d'avoir un très bon

générateur de nombres aléatoire (ce qui est très difficile). Prenons comme exemple le

générateur de Maple:

rand();

restart;rand();

Nous voyons donc que la fonction par défaut de générateur de nombres aléatoires de Maple est

à utiliser avec la plus grande prudence puisqu'une réinitialisation du système suffit à retrouver

des valeurs aléatoires... égales. Cependant il existe des libraires spécialisées dans Maple tel

que:

restart;readlib(randomize):randomize():rand();

> restart;readlib(randomize):randomize():rand();

Epreuve à priori réussie (au fait, il nous faudrait faire un beaucoup plus grand nombre d'essais

afin de bien vérifier que le générateur ne suive pas une loi de distribution connue... ce qui n'est

malheureusement jamais le cas).

Une fois le générateur créé et testé, nous pouvons voir quelques résultats de la méthode de

Monte-Carlo. Ainsi, dans le calcul des intégrales, celle-ci s'avère très utile et très rapide en

termes de vitesse de convergence.

CALCUL D'UNE INTÉGRALE

Soit à calculer l'intégrale d'une fonction f définie et positive sur l'intervalle [a,b]:

(57.278)

Soit :

(57.279)

Nous considérons le rectangle englobant de la fonction sur [a,b] défini par les

points . Nous tirons un grand nombre N de points au hasard dans ce

rectangle. Pour chaque point, nous testons s'il est au-dessous de la courbe. Soit F la proportion

de points situés au-dessus, nous avons:

(57.280)

L'algorithme Maple est donné par:

intmonte:=proc(f,a,b,N)

local i,al,bl,m,F,aleaabs,aleaord,estaudessous;

m:=round(max(a,b)*10^4);

al:=round(a*10^4);

bl:=round(b*10^4);

aleaabs:=rand(al..bl);

aleaord:=rand(0..m);

F:=0;

for i from 1 to N do

estaudessous:=(f(aleaabs()/10^4)-aleaord()/10^4)>=0;

if estaudessous then

F:=F+1;

fi

od:

RETURN((b-a)*max(a,b)*F/N)

end:

Remarque: Pour appeler cette procédure il suffit d'écrire >intmonte(f,a,b,N) mais en remplaçant

le premier argument passé en paramètre par l'expression d'une fonction et les autres arguments

par des valeurs numériques bien évidemment.

CALCUL DE PI

Pour le calcul de le principe est le même et constitue donc à utiliser la proportion du nombre

de points dans un quartier de cercle (cela permet de simplifier l'algorithme en se restreignant

aux coordonnées strictement positives) inscrit dans un carré relativement au nombre de points

total (pour tester si un point est à l'extérieur du cercle, nous utilisons bien évidemment le

théorème de Pythagore) tel que:

(57.281)

L'algorithme Maple est donné par:

estalinterieur:=proc(x,y) x^2+y^2<1 end:

calculepi:=proc(N)

local i,F,abs,ord,alea,erreur,result;

alea:=rand(-10^4..10^4);

F:=0;

for i from 1 to N do

abs:=alea()/10^4;ord:=alea()/10^4;

if estalinterieur(abs,ord) then

F:=F+1;

fi

od;

RETURN(4*F/N)

end:

DICHOTOMIE La dichotomie consiste pour un objet de taille N à exécuter un algorithme de façon à réduire la

recherche à un objet de taille N/2. On répète l'algorithme de réduction sur ce dernier objet. Ce

type d'algorithme est souvent implémenté de manière récursive. Lorsque cette technique est

utilisable, elle conduit à un algorithme très efficace et très lisible.

Un exemple simple est la recherche de la racine d'une fonction continue (nous avons déjà

étudié différentes méthodes plus haut pour résoudre ce genre de problèmes). C'est-à-dire le

point pour laquelle la fonction fs'annule.

Supposons qu'une fonction soit croissante et continue sur un intervalle [a,b] et tel la racine

cherchée soit entre aet b. Nous avons donc par le fait que la fonction soit croissante dans

l'intervalle:

(57.282)

et le fait que la racine se trouve dans l'intervalle:

(57.283)

Nous calculons:

(57.284)

Si alors la racine est dans l'intervalle sinon elle est dans l'intervalle . Nous

avons donc ramené le problème à une taille inférieure. Nous arrêterons l'algorithme quand la

précision sera suffisante.

L'algorithme Maple est donné par:

zero:=proc(f,a,b,pre)

local M;

M:=f((a+b)/2);

if abs(M)<pre then

RETURN((a+b)/2)

elif M>0 then

zero(f,a,(a+b)/2,pre)

else zero(f,(a+b)/2,b,pre)

fi

end:

et ce ne sont que quelques exemples auxquels la méthode est applicable!!

commentaires (0)
Aucun commentaire n'a été pas fait
Écrire ton premier commentaire
Ceci c'est un aperçu avant impression
Chercher dans l'extrait du document
Docsity n'est pas optimisée pour le navigateur que vous utilisez. Passez à Google Chrome, Firefox, Internet Explorer ou Safari 9+! Téléchargez Google Chrome