Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MCs. Ing. Armengol Blanco Benito
Oruro, octubre 2004
2
OPTIMIZACIN CON MATLAB
Armengol Blanco
a optimizacin, es una herramienta matemtica poderosa que emplea el enfoque
cientfico para la asignacin de recursos econmicos y materiales para el logro de un
determinado objetivo al resolver problemas prcticos y reales. El tool box de
optimizacin de Matlab
.
Un problema de optimizacin, queda formulado como:
(3) 0 h(x)
(2) 0 g(x)
: a . s
(1) ) x ( f min
=
donde:
f() Funcin objetivo
g() Restriccin de igualdad
h() Restriccin de desigualdad
x Variable de decisin
Las funciones f(), g() y h() pueden ser funciones lineales y/ no lineales. Las restricciones de
igualdad y de desigualdad pueden ser lineales y/o no lineales, entonces, el modelo se puede
explicitar con mayor detalle, por ejemplo para trabajar con Matlab [1], se utiliza la formulacin
siguiente:
L
3
(9) U x L
(8) b x A
(7) 0 C(x)
(6) b x A
(5) 0 (x) C
: a . s
(4) ) x ( f min
eq eq
eq
=
=
donde:
C
eq
() Restricciones de igualdad, estrictamente no lineales.
A
eq
Matriz de las restricciones de igualdad lineales.
C() Restricciones de desigualdad, estrictamente no lineales.
A Matriz de las restricciones de desigualdad lineales.
b
eq
Lado derecho de las restricciones de igualdad.
b Lado derecho de las restricciones de desigualdad.
L, U Vectores de lmites inferior y superior de las variables de decisin x.
x Variables de decisin del problema.
Este modelo, se puede clasificar como un problema de optimizacin no lineal que
corresponde al mbito de la programacin matemtica. Se tienen varios mtodos de la
programacin matemtica para su resolucin.
Este modelo, se puede resolver mediante la caja de herramientas de optimizacin del
MATLAB
La formula de prdidas, es:
2
2
2
1 perd
P 00009 . 0 P 00008 . 0 P + =
sta expresin significa que las unidades 1 y 2, son responsable de las prdidas solamente.
La unidad 2 ms que la 1.
La demanda:
MW 200 P
D
=
EL modelo de optimizacin, es:
max
i
P P
i
min
i
P
P
-
P
+
P
G
: a . s
)
P
(
F
=
F
Min
0
i
N
1 = i
perd D
i i
N
1 = i
T
= =
La funcin objetivo, est dado por:
3
4
2
4 4
3
3
2
3 3
3
2
2
2 2
3
1
2
1 1
N
1 i
i i T
P 006 . 0 P 07 . 0 P 2 . 7
P 007 . 0 P 06 . 0 P 1 . 7 P 006 . 0 P 07 . 0 P 0 . 6
P 006 . 0 P 06 . 0 P 1 . 10 2300 ) P ( F F
+ + +
+ + + + + + +
+ + + = =
=
6
La restriccin de igualdad:
0
4
P
3
P
2
P
1
P
2
2
P 00009 . 0
2
1
P 00008 . 0 200 G
0
P
-
P
+
P
G
i
N
1 = i
perd D
= + + =
=
=
Las restricciones de desigualdad, se reducen al acotamiento de las potencias generadas por
cada unidad:
200
P
4
47
200
P
3
50
125
P
2
45
100 P 35
max
i
P
P
i
min
i
P
1
El modelo de optimizacin se implement en tres archivos tipo m: funobj.m, restricnl.m y
resolucion.m [1]. La primera contiene la funcin objetivo del problema, la segunda las
restriccin de igualdad no lineal y la tercera contienen los parmetros del problema,
respectivamente.
En los pargrafos siguientes, se lista estos archivos.
funobj.m
function f=funobj(p)
F1=800+10.1*p(1)+0.06*p(1)^2+0.006*p(1)^3;
F2=350+6.0*p(2)+0.07*p(2)^2+0.006*p(2)^3;
F3=350+7.1*p(3)+0.06*p(3)^2+0.007*p(3)^3;
F4=800+7.2*p(4)+0.07*p(4)^2+0.006*p(4)^3;
f=F1+F2+F3+F4;
restricnl.m
function [c,ceq]=restricnl(p)
c=[]; % El problema no tiene restricciones de desigualdad no lineales
pd=200; % Demanda
ceq=[pd+0.00008*p(1)^2+0.00009*p(2)^2-p(1)-p(2)-p(3)-p(4)];
% Restriccin de igualdad no lineal
solucion.m
7
% Programa para resolver los problemas del 1er parcial de ELT3811 1/2003
p0=[40 50 55 55]'; % Punto de partida
A=[]; b=[]; Aeq=[]; beq=[]; % Matrices y vectores de las restricciones lineales: Vacio
lb=[35 45 50 47]'; % Lmite inferior de generacin
ub=[100 125 200 200]'; % Lmite superior de generacin
[p,fval,exitflag,output,lambda]=fmincon('funobj',p0,A,b,Aeq,beq,lb,ub, 'restricnl')
La ejecucin del programa solucion.m, entrega la siguiente solucin:
solucion
Warning: Trust region method does not currently solve this type of problem,
switching to line search.
>In C:\MATLABR11\toolbox\optim\fmincon.m at line 190
In C:\MATLABR11\work\solu1.m at line 9
Optimization terminated successfully:
Magnitude of directional derivative in search direction
less than 2*options.TolFun and maximum constraint violation
is less than options.TolCon
Active Constraints:
1
4
p =
49.2078
50.7749
50.0000
50.4431
fval =
7.6191e+003
exitflag =
1
output =
iterations: 7
funcCount: 43
stepsize: 1
algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
firstorderopt: []
cgiterations: []
8
lambda =
lower: [4x1 double]
upper: [4x1 double]
eqlin: [0x1 double]
eqnonlin: 60.0631
ineqlin: [0x1 double]
ineqnonlin: [0x1 double]
Interpretacin de los Resultados
Las primeras lneas indican que el mtodo empleado no es el ms adecuado para este
problema, pero la optimizacin fue exitosa.
Las restricciones 1 y 4 estn activas:
La restriccin 1 corresponde a la restriccin de igualdad, G: el cual debe satisfacerse.
La restriccin 4 es la restriccin de desigualdad de
3
P se activa a su valor mnimo.
Los resultados, son:
1
P =49.2078
2
P =50.7749
3
P =50.0000
4
P =50.4431
El valor de la funcin objetivo, es:
=
T
F 7619.1 $/h
La optimizacin termin exitosamente: exitflag = 1, en 7 iteraciones y se utiliz un
algoritmo para tamao medio; el mtodo de bsqueda Cuasi Newton.
El multiplicador de Lagrange (precio dual) de la restriccin de igualdad, es:
eqnonlin: 60.0631. Es el costo marginal del sistema. Corresponde a la restriccin G.
Los costos marginales de las unidades
i
i i '
i
dP
) P ( dF
F = , son:
9
0631 . 60 F
6000 . 65 F
5142 . 59 F
5902 . 59 F
'
4
'
3
'
2
'
1
=
=
=
=
La unidad 3, est saturada en su lmite mnimo, y es la unidad ms cara, pero debe operar
por estar programada seguramente para tener un margen de reserva en giro u otra
consideracin, est situacin fue definida en el predespacho-. Las unidades 1 y 2 de acuerdo
a sus costos marginales se puede decir que son las ms econmicas, pero como son
responsables de las prdidas del sistema estn penalizadas y sus factores de penalizacin
son:
i
perd
i
P
P
1
1
PF
=
0079 . 1
P 00016 . 0 1
1
PF
1
1
=
=
0092 . 1
P 00016 . 0 1
1
PF
2
2
=
=
Las unidades 3 y 4 tienen factores de penalizacin iguales a 1, es decir, su funcionamiento
no introduce prdidas al sistema.
1 PF
3
=
1 PF
4
=
La unidad marginal, es la unidad 4, cuyo costo marginal es igual al costo marginal del
sistema.
Programacin lineal
Si el problema de optimizacin queda formulado como un problema de programacin lineal,
Matlab [2] tiene un comando para resolver este problema, es Linprog.
Linprog
Resuelve un problema de programacin lineal.
Las diferentes formas de emplear el comando linprog, son las siguientes:
x =linprog(f,A,b,Aeq,beq)
x =linprog(f,A,b,Aeq,beq,lb,ub)
10
x =linprog(f,A,b,Aeq,beq,lb,ub,x0)
x =linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
[x,fval] =linprog(...)
[x,fval,exitflag] =linprog(...)
[x,fval,exitflag,output] =linprog(...)
[x,fval,exitflag,output,lambda] =linprog(...)
Descripcin [1]
Argumentos
Los argumentos que toma el comando linprog, son los siguientes:
f vector columna que contiene los coeficientes de la funcin objetivo a minimizar.
x0 punto inicial para la bsqueda de la solucin.
A, b, A
eq
,
b
eq
, lb, ub, definidas en el problema de optimizacin, corresponden a las
restricciones lineales.
options opciones de los parmetros de optimizacin.
Salidas
Las salidas que entrega el comando linprog, son las siguientes
x vector solucin
fval valor de la funcin objetivo
exitflag condicin de terminacin de fmincon
output estructura de la salida
lambda multiplicadores de Lagrange
Mayores detalles, se puede consultar en el manual [1], pginas 4-91 al 4-97.
Ejemplo 2 Problema de Programacin Lineal
Es un ejemplo de fabricacin de pinturas [3, 4], el modelo de optimizacin queda planteado
como un problema de programacin lineal:
Maximizar Z=3X
E
+2X
I
funcin objetivo
Sujeto a:
X
E
+2X
I
6
2X
E
+X
I
8
-X
E
+X
I
1 restricciones
X
I
2
X
E;
X
I
0
El problema tiene cuatro restricciones de desigualdad lineales. La cuarta restriccin, se
puede tratarla como acotamiento de la variable de decisin X
E
. Por tanto, se tiene solamente
tres restricciones de desigualdad. El problema no tiene restricciones de igualdad lineales.
11
Se renombran las variables, X
E;
X
I
, por X
1;
X
2
, el modelo se implement en un archivo
extensin m. prolineal.m, que se lista en el pargrafo siguiente:
prolineal.m
% Programa para resolver un problema de programacin lineal
f=[-3 -2]'
A=[1 2
2 1
-1 1]
b=[6 8 1]'
Aeq=[]; beq=[];
lb=zeros(2,1)
ub=[100 2]'
[x,fval,exitflag,output,lambda] =linprog(f,A,b,Aeq,beq,lb,ub)
La ejecucin del programa dio la siguiente salida:
prolineal
f =
-3
-2
A =
1 2
2 1
-1 1
b =
6
8
1
lb =
0
0
ub =
100
2
Optimization terminated successfully.
x =
3.3333
1.3333
12
fval =
-12.6667
exitflag =
1
output =
iterations: 7
cgiterations: 0
algorithm: 'lipsol'
lambda =
ineqlin: [3x1 double]
eqlin: [0x1 double]
upper: [2x1 double]
lower: [2x1 double]
lambda.ineqlin
ans =
0.3333
1.3333
0.0000
Interpretacin de los Resultados
La optimizacin fue exitosa, se utiliz la rutina lipsol; algoritmo para optimizacin de gran
escala. Fueron necesarias siete iteraciones.
Los resultados, son:
X
E
=3.3333
X
I
=1.3333
fval =-12.6667
El problema original, fue de maximizar, por tanto, el valor de la funcin objetivo es:
Z =12.6667
13
Los multiplicadores de Kuhn-Tucker (precios duales), son:
1
=0.3333
2
=1.3333
3
=0.0000
Las dos primeras restricciones, estn activas y el tercer multiplicador indica que la tercera
restriccin est inactiva
Referencias Bibliogrficas
[1] Thomas Coleman, et al., Optimization Toolbox For Use with Matlab
. Users Guide,
Version 2, J anuary, 1999.
[2] Software, Matlab