Sei sulla pagina 1di 13

1

UNIVERSIDAD TCNICA DE ORURO


FACULTAD NACIONAL DE INGENIERA
INGENIERA ELCTRICA Y ELECTRNICA













OPTIMIZACIN CON MATLAB







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

, es una herramienta computacional interesante para resolver


problemas de optimizacin lineal y no-lineal.

Lo interesante de la solucin de un problema de optimizacin, no es la solucin misma, lo
importante son los multiplicadores de Lagrange-Karush-Kuhn-Tucker asociados con cada
restriccin, es decir, los precios duales. Estos ltimos permiten tomar decisiones para
mejorar la solucin o considerar el cambio de las restricciones que pueden mejorar (
empeorar) la solucin hallada.

En este texto, se presenta una aplicacin a problemas tpicos de la operacin econmica de
sistemas elctricos, se hace hincapi en la interpretacin de los parmetros del 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

[2], que tiene un comando fmincon para ese propsito.



fmincon

Determina el mnimo de una funcin multivariable con restricciones de igualdad y
desigualdad, lineales y no lineales. Todo problema de maximizacin puede ser convertido en
un problema de minimizacin al cambiar el signo la funcin objetivo.

Sintaxis

Las diferentes formas de emplear el comando fmincon, son las siguientes:

x =fmincon(fun,x0,A,b)
x =fmincon(fun,x0,A,b,Aeq,beq)
x =fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x =fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x =fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x =fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...)
[x,fval] =fmincon(...)
[x,fval,exitflag] =fmincon(...)
[x,fval,exitflag,output] =fmincon(...)
[x,fval,exitflag,output,lambda] =fmincon(...)
4
[x,fval,exitflag,output,lambda,grad] =fmincon(...)
[x,fval,exitflag,output,lambda,grad,hessian] =fmincon(...)

Descripcin [1]

Argumentos

Los argumentos que toma el comando fmincon, son los siguientes:

fun es un archivo de texto ASCII, con la extensin m, que contiene 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.
nonlcon archivo extensin m que contiene las restricciones no lineales.
options opciones de los parmetros de optimizacin.
P1, P2, parmetros de fun y nonlcon

Salidas

Las salidas que entrega el comando fmincon, 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
grad gradiente de la funcin fun evaluada en el punto solucin
hessian valor de la Hessiana

Mayores detalles, se puede consultar en el manual [1], pginas 4-30 al 4-42.

Las variables de los argumentos y salidas pueden tomar nombres cualesquiera, solamente
es necesario respetar el lugar de su ubicacin.

Ejemplo 1 Problema de Programacin no Lineal

Determinar el Despacho Econmico de Carga de un Sistema Elctrico de Potencia, cuyas
funciones de costos de generacin, son las que siguen:

5
[ ] [ ]
200 47
200 50
125 45
100 35
MW MW
P P Generacin de Costo de Funcin
max min
3
4
2
4 4 4
3
3
2
3 3 3
3
2
2
2 2 2
3
1
2
1 1 1
P 006 . 0 P 07 . 0 P 2 . 7 800 F
P 007 . 0 P 06 . 0 P 1 . 7 350 F
P 006 . 0 P 07 . 0 P 0 . 6 350 F
P 006 . 0 P 06 . 0 P 1 . 10 800 F
h
$
+ + + =
+ + + =
+ + + =
+ + + =



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

. Versin 5.3, 1999.


[3] F.S. Hillier, G. J . Lieberman, Una Introduccin a la Investigacin de Operaciones. Mc
Graw-Hill, 3
a
Edicin, Mxico, 1991.
[4] A. Blanco, Operacin Econmica y Planificacin de Sistemas Elctricos de
Potencia. Apuntes de la asignatura, 2003.

Potrebbero piacerti anche