Vous êtes sur la page 1sur 13

UNIVERSITE D’ABOMEY-CALAVI

*-*-*-*-*-*-*
ECOLE POLYTECHNIQUE D’ABOMEY-CALAVI
*-*-*-*-*-*-*
ECOLE DOCTORALE DES SCIENCES DE L’INGENIEUR
*-*-*-*-*

MASTER RECHERCHES EN GENIE ELECTRIQUE

METHODES D’OPTIMISATION DES SYSTEMES ET


PROCEDES

Devoir de maison

Réalisé par : Enseignant :


YETONGNON Lino Dr. Christian AKOWANOU

Année Universitaire: 2018 - 2019


Exercice 1
Soit le problème suivant :
𝑀𝑖𝑛 𝑦 = 3𝑥12 + 𝑥22
𝑥12 𝑥2 − 8 = 0
|∆𝑥2 | = 0.05
{ 𝑥2 = 1.6
Posons :
0 = 𝑥12 𝑥2 − 8 → 8 = 𝑥12 𝑥2
24
Pour 𝑦 = 3𝑥12 + 𝑥22 on a : 𝑥2 𝑦 = 3𝑥2 𝑥12 + 𝑥23 → 𝑥2 𝑦 = 24 + 𝑥23 → 𝑦 = 𝑥 + 𝑥22
2

24
Le problème revient à minimiser la fonction 𝑓(𝑥) = + 𝑥 2 étant donné le point de départ
𝑥

𝑥0 = 1,6 et un pas |∆| = 0,05


Le signe de |∆| est déterminé en comparant :
𝑓(𝑥0 ) = 𝑓(1,6) = 17,56
𝑓(𝑥0 + |∆|) = 𝑓(1,65) = 17,28
𝑓(𝑥0 − |∆|) = 𝑓(1,55) = 17,89
Alors
𝑓(𝑥0 − |∆|) ≥ 𝑓(𝑥0 ) ≥ 𝑓(𝑥0 + |∆|)
∆ doit donc être positif, et le point minimum x* doit être supérieur à 1,6.
En utilisant la relation de récurrence 𝑥𝑘+1 = 𝑥𝑘 + 2𝑘 ∆ on obtient le tableau suivant :
Nombre d’itération k 𝑥𝑘 𝑓(𝑥𝑘 )

0 1,6 17,56

1 1,65 17,25

2 1,75 16,78

3 1,95 16,11

4 2,35 15,74

5 3,15 17.54

Le point minimum est donc délimité par 1,6 ≤ 𝑥 ∗ ≤ 3,15 plus précisément 2,35
Exercice 2
1) Fonction objectif en fonction de F1 et F2
F1 : débit d’écoulement de la pompe 1
F2 : débit d’écoulement de la pompe 2
P1 : pression de la pompe 1
P2 : pression de la pompe 2
PT : pression totale développée par les deux pompes
η : rendement de chacune des pompes
On a les équations suivantes
𝜂 × 𝑃𝑇 = 𝐹1 × ∆𝑝1 + 𝐹2 × ∆𝑝2
𝜂 × 𝑃𝑇 = 𝐹1 × 2,1 × 1010 𝐹12 + 𝐹2 × 3,6 × 1010 𝐹22
Alors on a la fonction objectif :
𝑦 = 2,1 × 1010 𝐹13 + 3,6 × 1010 𝐹23
Avec :
𝐹1 + 𝐹2 = 0.01
𝐹1 ≥ 0 𝑒𝑡 𝐹2 ≥ 0
Le problème revient à minimiser la fonction objectif sous contrainte égalité

𝑦 = 2,1 × 1010 𝐹13 + 3,6 × 1010 𝐹23


{ 𝐹1 + 𝐹2 = 0.01
𝐹1 ≥ 0 𝑒𝑡 𝐹2 ≥ 0

2) Détermination des optimums en F1 et F2


Méthode du multiplicateur de Lagrange :
Posons :
𝐿(𝐹1 , 𝐹2 , 𝜆) = 𝑦(𝐹1 , 𝐹2 ) − 𝜆(𝐹1 + 𝐹2 − 0.01)
Recherchons les points critiques de la fonction L :
𝜕𝐿
0= = 6,3 × 1010 𝐹12 − 𝜆 (1)
𝜕𝐹1
𝜕𝐿
0= = 10,8 × 1010 𝐹22 − 𝜆 (2)
𝜕𝐹2
𝜕𝐿
{ 0 = 𝜕𝜆 = 𝐹1 + 𝐹2 − 0.01 (3)

(1)-(2) et (3) donnent :

6,3 × 1010 𝐹12 − 10,8 × 1010 𝐹22 = 0 (𝑎)


{
𝐹2 = 0,01 − 𝐹1 (3)

(3) dans (a) donne :


6,3 × 1010 𝐹12 − 10,8 × 1010 (0,01 − 𝐹1 )2 = 0
4,5𝐹12 − 0,216 𝐹1 + 0,00108 = 0
1701
∆= 0,027216 = >0
62500
9√21
√∆=
250
On déduit 𝐹1 tel que :
9√21
0,216 −
𝐹1 = 250 ⟹ 𝐹 = 6 − √21 = 0,00567
1
2 × 4,5 250
Ou
9√21
0,216 +
𝐹1 = 250 ⟹ 𝐹 = 6 + √21 = 0,04233
1
2 × 4,5 250
Or
𝐹1 < 0,01 𝑐𝑎𝑟 𝐹1 + 𝐹2 = 0,01
Donc
6 − √21
𝐹1 ∗ = = 0,00567 ⟹ 𝑭𝟏 ∗ = 𝟓, 𝟔𝟕 × 𝟏𝟎−𝟑 𝒎𝟑 /𝒔
250
2√21 − 7
𝐹2 ∗ = 0,01 − 𝐹1 ∗ = = 0,00433 ⟹ 𝑭𝟐 ∗ = 𝟒, 𝟑𝟑 × 𝟏𝟎−𝟑 𝒎𝟑 /𝒔
500
Par suite :
𝑃∗ = 2,1 × 1010 𝐹 ∗13 + 3,6 × 1010 𝐹 ∗ 32
𝑷∗ = 𝟔𝟕𝟓𝟎, 𝟓𝟓 𝑷𝒂
Exercice 3
Le sujet sous la forme standard devient :
3𝑥1 + 4𝑥2 + 5𝑥3 + 𝑒1 = 40
{ 𝑥1 + 𝑥2 + 𝑥3 + 𝑎1 = 9
7𝑥1 + 4𝑥2 + 4𝑥3 − 𝑒2 + 𝑎2 ≥ 42
Z = 3x1 + 2x2 + 4x3 − Pa1 − Pa2 avec
a1 =9-x1 − x2 − x3
a2 =42-7x1 − 4x2 − 4x3 + e2 Alors Z devient
Z = 3x1 + 2x2 + 4x3 − P(9 − x1 − x2 − x3 ) − P(42-7x1 − 4x2 − 4x3 + e2 )
Z = 3x1 + 2x2 + 4x3 − 9P + Px1 + Px2 + 𝑃𝑥3 − 42𝑃+7𝑃𝑥1 − 4𝑃𝑥2 − 4𝑃𝑥3 − 𝑃𝑒2
Z= (3+P+7P)𝑥1 +(2+P+4P)𝑥2 +(4+P+4P)𝑥3 -9P-42P-P𝑒2
Z= (3+8P)𝑥1 +(2+5P)𝑥2 +(4+5P)𝑥3 -51P-P𝑒2
Tableau 0

𝑥1 𝑥2 𝑥3 ° 𝑒2 ° 𝑎1 c R
𝑒1 3 4 5 1 0 0 0 40 40
= 13,33
3
𝑎1 1 1 1 0 0 1 0 9 9
=9
1
𝑎1 7 4 4 0 1 0 1 42 42
=6
7
∆ 3+8P 2+5P 4+5P 0 -P 0 0 -51P
Tableau 1
𝑥1 𝑥2 𝑥3 ° 𝑒2 ° ° c R

𝑒1 0 16 23 1 3 0 22 40
= 13,33
7 7 7 3
𝑎1 0 3 3 0 1 1 3 9
=9
7 7 7 1
𝑥1 1 4 4 0 1 0 42 42
=6 =6
7 7 7 7 7
∆ 0 (2+5P)/7 (16+5P)/7 0 -P 0 -18P/3P
Tableau 2
𝑥1 𝑥2 𝑥3 ° 𝑒2 ° ° c R

𝑒1 0 0 1 1 −1 6 6
=1
3 1
𝑥2 0 1 1 0 1 7 7
=7
3 1
𝑥1 1 0 0 0 −1 2 2
=∞
3 0
∆ 0 0 2 0 1 -20
3

Tableau 3
° ° ° 𝑒1 𝑒2 c R

𝑥3 0 0 1 1 −1 6 -18
3
𝑥2 0 1 0 -1 2 1 3
3 2
𝑥1 1 0 0 0 −1 2 -6
3
∆ 0 0 0 -2 1 -32

Tableau 1’
𝑥1 𝑥2 𝑥3 ° 𝑒2 ° c R

𝑒1 0 16 23 1 3 0 22 40
7 7 7 16/7
= 13,33
𝑎1 0 3 3 0 1 1 3 3
=7
7 7 7 3/7
𝑥1 1 4 4 0 1 0 42 21
− =6
7 7 7 7 2
∆ 0 (2+5P)/7 (16+5P)/7 0 (3+P)/3 0 -18P/3P

Tableau 2’
° 𝑥2 ° ° ° R

𝑥3 0 1 1 1 0 0 13
2 2 2
𝑥2 0 3 0 −3 1 1 3
2 2 2
𝑥1 1 1 0 −1 0 0 5
2 2 2
∆ 0 −3 0 −1 0 0
2 2

L’optimun est atteint et l’itération est terminée d’où


5 13
X1*=2 ; X2*=0 ; X3*= 2

Et y*=33,5
Code MATLAB
Script
A=[3,4,5,1,0; 1,1,1,0,0; 7,4,4,0,-1];
b=[40,9,42];
c=-[3,2,4,0,0];

nma_simplex(A,b,c,true);

function tab = nma_simplex(A,b,c,debug)


% DESCRIPTION
% Dans ce programme, nous créons la fonction nommée :
% function [A,b,c]=nma_simplex(A,b,c)
% cette fonction implémente les matrices de l'algorithme de simplex.
% elle accepte les matrices A, b et c comme définit dans notre
% document et génère tous les tableaux de simplex et retourne le tableau
% final dans lequel l'utilisateur peut lire la valeur maximale ou minimale
% de la fonction objective et les valeurs optimales des vecteurs x
% directement

% Elle exécute les phases 1 et phase 2 du tableau automatiquement


%
% FONCTIONNEMENT
% l'utilisateur doit dabord convertir toutes les inéquation en équation en
% introduisant les variables d’écart correspondants. il obtient une
% équation de la forme Ax=b avec :
% A : la matrice d'entré
% b: le vecteur de sortie
% on introduit enfin le vecteur c qui représente les coefficients de la
% fonctin objective.
% c : matrice d'optimisation
% NB : s'il s'agit d'une maximisation on multiplie c par moins (-)et s'il
% s'agit d'ume minimisation on écrit simplement c sans multiplier par (-)

validate_input(A,b,c);

[A,b] = make_phase_one(A,b,debug);
tab = simplex(A,b,c,debug,'phase 2');
end
%==========================
function [A,b] = make_phase_one(A,b,debug)
[m,n] = size(A);
tab = zeros(m+1,n+m+1);
tab(1:m,1:n) = A;
tab(end,n+1:end-1) = 1;
tab(1:m,end) = b(:);
tab(1:m,n+1:n+m) = eye(m);

if debug
fprintf('>>>>Tableau de Simplexe [phase 1]\n');
disp(tab);
end

for i = 1:m % met tous les variables à l'intérieur de la ligne zero


tab(end,:) = tab(end,:)-tab(i,:);
end

tab = simplex(tab(1:m,1:n+m),tab(1:m,end),tab(end,1:n+m),...
debug,'phase 1');

A = tab(1:m,1:n);
b = tab(1:m,end);

end
%=================================
function tab = simplex(A,b,c,debug,phase_name)
[m,n] = size(A);
tab = zeros(m+1,n+1);
tab(1:m,1:n) = A;
tab(m+1,1:n) = c(:);
tab(1:m,end) = b(:);

keep_running = true;
while keep_running
if debug

fprintf('*****************************************************************\n')
;
fprintf('Tableau de Simplexe [%s] \n',phase_name);
disp(tab);
end

if any(tab(end,1:n)<0)% Vérifier s'il y a un coefficient de coût négatif.


[~,J] = min(tab(end,1:n)); % trouver le coefficient le plus négatif
% véfier si la colonne correspondante est non bornée
if all(tab(1:m,J)<=0)
error('probleme non bornée. tous les entrées doivent être <= 0 dans
la colonne %d',J);
%faire les opérations de ligne et mettre tous les éléments de la
%colonne à du pivot à 0, sauf le pivot

else
pivot_row = 0;
min_found = inf;
for i = 1:m
if tab(i,J)>0
tmp = tab(i,end)/tab(i,J);
if tmp < min_found
min_found = tmp;
pivot_row = i;
end
end
end
if debug
fprintf('la ligne du pivaut est %d\n',pivot_row);
end
%normaliser
tab(pivot_row,:) = tab(pivot_row,:)/tab(pivot_row,J);
%mettre tous les entrées de la colonne J à 0 .
for i=1:m+1
if i ~= pivot_row
tab(i,:)=tab(i,:)-sign(tab(i,J))*...
abs(tab(i,J))*tab(pivot_row,:);
end
end
end
else
keep_running=false;
end
end
% fonction interne qui trouve les vecteurs de base actuel
function current_x = get_current_x()
current_x = zeros(n,1);
for j=1:n
if length(find(tab(:,j)==0))==m
idx= tab(:,j)==1;
current_x(j)=tab(idx,end);
end
end
end
end
%==========================
function validate_input(A,b,c)
if ~ismatrix(A)
error('A doit être une matrice');
end

if ~isvector(b)
error('b doit être un vecteur');
end
if ~isvector(c)
error('c doit être un vecteur');
end

[m,n]=size(A);
if rank(A) <m
error('le rang de A doit être égale au nombre de ligne de A');
end

if length(b) ~= m
error('b doit avoir la même taille que le nombre de ligne de A');
end
if length(c) ~= n
error('c oit avoir la même taille que le nombre de colonne de A');
end
end
Résultat obtenu

>> AgorithmSsimplexe

>>>>Tableau de Simplexe [phase 1]

3 4 5 1 0 1 0 0 40

1 1 1 0 0 0 1 0 9

7 4 4 0 -1 0 0 1 42

0 0 0 0 0 1 1 1 0

*****************************************************************

Tableau de Simplexe [phase 1]

3 4 5 1 0 1 0 0 40

1 1 1 0 0 0 1 0 9

7 4 4 0 -1 0 0 1 42

-11 -9 -10 -1 1 0 0 0 0

la ligne du pivaut est 3

*****************************************************************

Tableau de Simplexe [phase 1]

0 2.2857 3.2857 1.0000 0.4286 1.0000 0 -0.4286 22.0000

0 0.4286 0.4286 0 0.1429 0 1.0000 -0.1429 3.0000

1.0000 0.5714 0.5714 0 -0.1429 0 0 0.1429 6.0000

0 -2.7143 -3.7143 -1.0000 -0.5714 0 0 1.5714 66.0000

la ligne du pivaut est 1

*****************************************************************

Tableau de Simplexe [phase 1]

0 0.6957 1.0000 0.3043 0.1304 0.3043 0 -0.1304 6.6957

0 0.1304 0 -0.1304 0.0870 -0.1304 1.0000 -0.0870 0.1304

1.0000 0.1739 0 -0.1739 -0.2174 -0.1739 0 0.2174 2.1739


0 -0.1304 0 0.1304 -0.0870 1.1304 0 1.0870 90.8696

la ligne du pivaut est 2

*****************************************************************

Tableau de Simplexe [phase 1]

0 0 1.0000 1.0000 -0.3333 1.0000 -5.3333 0.3333 6.0000

0 1.0000 0 -1.0000 0.6667 -1.0000 7.6667 -0.6667 1.0000

1.0000 0 0 0 -0.3333 0 -1.3333 0.3333 2.0000

0 0 0 0 0.0000 1.0000 1.0000 1.0000 91.0000

*****************************************************************

Tableau de Simplexe [phase 2]

0 0 1.0000 1.0000 -0.3333 6.0000

0 1.0000 0 -1.0000 0.6667 1.0000

1.0000 0 0 0 -0.3333 2.0000

-3.0000 -2.0000 -4.0000 0 0 0

la ligne du pivaut est 1

*****************************************************************

Tableau de Simplexe [phase 2]

0 0 1.0000 1.0000 -0.3333 6.0000

0 1.0000 0 -1.0000 0.6667 1.0000

1.0000 0 0 0 -0.3333 2.0000

-3.0000 -2.0000 0 4.0000 -1.3333 24.0000

la ligne du pivaut est 3

*****************************************************************

Tableau de Simplexe [phase 2]

0 0 1.0000 1.0000 -0.3333 6.0000


0 1.0000 0 -1.0000 0.6667 1.0000

1.0000 0 0 0 -0.3333 2.0000

0 -2.0000 0 4.0000 -2.3333 30.0000

la ligne du pivaut est 2

*****************************************************************

Tableau de Simplexe [phase 2]

0 0.5000 1.0000 0.5000 0 6.5000

0 1.5000 0 -1.5000 1.0000 1.5000

1.0000 0.5000 0 -0.5000 0 2.5000

0 1.5000 0 0.5000 0 33.5000

Vous aimerez peut-être aussi