Guia Optimizacion con Matlab

22
UNIVERSIDAD TÉCNICA DE ORURO FACULTAD NACIONAL DE INGENIERÍA INGENIERÍA ELÉCTRICA Y ELECTRÓNICA GUIA OPTIMIZACIÓN CON MATLAB ® MCs. Ing. Armengol Blanco Benito Oruro, febrero 2008

Transcript of Guia Optimizacion con Matlab

Page 1: Guia Optimizacion con Matlab

UNIVERSIDAD TÉCNICA DE ORURO FACULTAD NACIONAL DE INGENIERÍA

INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

GUIA

OPTIMIZACIÓN CON MATLAB®

MCs. Ing. Armengol Blanco Benito

Oruro, febrero 2008

Page 2: Guia Optimizacion con Matlab

ii

Índice

Índice ii

Palabras Preliminares iii

1 Introducción 1

2 Programación No Lineal 1

2.1 Ejemplo 1, Problema de Programación no Lineal [4] 3

2.1.1 Interpretación de los Resultados 7

2.2 Ejemplo 2, Programación No Lineal: Coordinación Hidrotérmica [4] 8

2.2.1 El modelo de optimización 9

2.2.2 Modelo de Optimización Implementado en MATLAB 11

3 Programación lineal 16

3.1 Ejemplo 3 Problema de Programación Lineal 17

3.2 Interpretación de los Resultados 19

Referencias Bibliográficas 19

Page 3: Guia Optimizacion con Matlab

iii

Palabras Preliminares

En ésta guía, se presenta, el empleo del tool box de optimización del Matlab® en la resolución de problemas de optimización en la operación económica de sistemas eléctricos de potencia. Contiene soluciones completas a ejemplos típicos de la asignatura Operación Económica y Planificación de Sistemas de Potencia. Se pretende plasmar la inquietud de facilitar el aprendizaje de las técnicas de optimización utilizadas para resolver problemas de optimización.

Armengol Blanco Febrero, 2008

Page 4: Guia Optimizacion con Matlab

1

GUIA OPTIMIZACIÓN CON MATLAB®

Armengol Blanco 1 Introducción

a optimización, es una herramienta matemática poderosa que emplea el enfoque científico para la asignación de recursos económicos y materiales para el logro de un determinado objetivo al resolver problemas prácticos y reales. El tool box de optimización de Matlab®, es una herramienta computacional interesante para resolver

problemas de optimización lineal y no-lineal. Lo interesante de la solución de un problema de optimización, no es la solución misma, lo importante son los multiplicadores de Lagrange-Karush-Kuhn-Tucker asociados con cada restricción, es decir, los precios duales. Estos últimos permiten tomar decisiones para mejorar la solución o considerar el cambio de las restricciones que pueden mejorar (ó empeorar) la solución hallada. En este texto, se presenta una aplicación a problemas típicos de la operación económica y coordinación hidrotérmica de sistemas eléctricos de potencia, se hace hincapié en la interpretación de los parámetros del tool box de optimización de Matlab®. 2 Programación No Lineal La optimización o la programación matemática es un instrumento fundamental en el campo de la ingeniería. Un problema de optimización queda formulado como un modelo de optimización mediante la expresión:

(3) 0h(x)

(2) 0g(x)

:a.s

(1) )x(fmin

=

donde:

f() Función objetivo g() Restricción de igualdad h() Restricción de desigualdad x Variable de decisión

L

Page 5: Guia Optimizacion con Matlab

2

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 formulación siguiente:

(9) UxL

(8) bxA

(7) 0C(x)

(6) bxA

(5) 0(x)C

:a.s

(4) )x(fmin

eqeq

eq

≤≤

≤⋅

=⋅

=

donde:

Ceq() Restricciones de igualdad, estrictamente no lineales. Aeq Matriz de las restricciones de igualdad lineales. C() Restricciones de desigualdad, estrictamente no lineales. A Matriz de las restricciones de desigualdad lineales. beq Lado derecho de las restricciones de igualdad. b Lado derecho de las restricciones de desigualdad. L, U Vectores de límites inferior y superior de las variables de decisión x. x Variables de decisión del problema.

Este modelo, se puede clasificar como un problema de optimización no lineal que corresponde al ámbito de la programación matemática. Se tienen varios métodos de la programación matemática para su resolución. Este modelo, se puede resolver mediante la caja de herramientas de optimización del MATLAB® [2], que tiene un comando fmincon para ese propósito. fmincon Determina el mínimo de una función multivariable con restricciones de igualdad y desigualdad, lineales y no lineales. Todo problema de maximización puede ser convertido en un problema de minimización al cambiar el signo la función 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)

Page 6: Guia Optimizacion con Matlab

3

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(...) [x,fval,exitflag,output,lambda,grad] = fmincon(...) [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(...)

Descripción [1] Argumentos Los argumentos que toma el comando fmincon, son los siguientes: fun es un archivo de texto ASCII, con la extensión m, que contiene la función objetivo a minimizar. x0 punto inicial para la búsqueda de la solución. A, b, Aeq, beq, lb, ub, definidas en el problema de optimización, corresponden a las restricciones lineales. nonlcon archivo extensión m que contiene las restricciones no lineales. options opciones de los parámetros de optimización. P1, P2, … parámetros de fun y nonlcon Salidas Las salidas que entrega el comando fmincon, son las siguientes x vector solución fval valor de la función objetivo exitflag condición de terminación de fmincon output estructura de la salida lambda multiplicadores de Lagrange grad gradiente de la función fun evaluada en el punto solución hessian valor de la Hessiana Mayores detalles, se puede consultar en el manual [1], páginas 4-30 al 4-42. Las variables de los argumentos y salidas pueden tomar nombres cualesquiera, solamente es necesario respetar el lugar de su ubicación. 2.1 Ejemplo 1, Problema de Programación no Lineal [4] Determinar el Despacho Económico de Carga de un Sistema Eléctrico de Potencia, cuyas funciones de costos de generación, son las que siguen:

Page 7: Guia Optimizacion con Matlab

4

[ ] [ ]

200 47

200 50

125 45

100 35

MW MW

P P Generación de Costo de Función maxmin

34

2444

33

2333

32

2222

31

2111

P006.0P07.0P2.7800F

P007.0P06.0P1.7350F

P006.0P07.0P0.6350F

P006.0P06.0P1.10800F

h

$

⋅+⋅+⋅+=

⋅+⋅+⋅+=

⋅+⋅+⋅+=

⋅+⋅+⋅+=

La formula de pérdidas, es:

22

21perd P00009.0P00008.0P ⋅+⋅=

Ésta expresión significa que las unidades 1 y 2, son responsable de las pérdidas solamente. La unidad 2 más que la 1. La demanda:

MW200PD =

EL modelo de optimización, es:

maxiP Pi

miniP

P - P + PG

:a .s

)P(F = F Min

0i

N

1=iperdD

ii

N

1=iT

≤≤

= =∑

La función objetivo, está dado por:

34

244

33

233

32

222

31

211

N

1iiiT

P006.0P07.0P2.7

P007.0P06.0P1.7P006.0P07.0P0.6

P006.0P06.0P1.102300)P(FF

⋅+⋅+⋅+

+⋅+⋅+⋅+⋅+⋅+⋅+

⋅+⋅+⋅+== ∑=

Page 8: Guia Optimizacion con Matlab

5

La restricción de igualdad:

04P3P2P1P22P00009.02

1P00008.0200G

0P - P + PG i

N

1=iperdD

=−−−−⋅+⋅+=

=∑=

Las restricciones de desigualdad, se reducen al acotamiento de las potencias generadas por cada unidad:

200 P4 47

200 P3 50

125 P2 45

100 P35

maxiP Pi

miniP

1

≤≤

≤≤

≤≤

≤≤

≤≤

El modelo de optimización se implementó en tres archivos tipo m: funobj.m, restricnl.m y solucion.m [1]. La primera contiene la función objetivo del problema, la segunda las restricción de igualdad no lineal y la tercera contienen los parámetros del problema, respectivamente. En los parágrafos 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)]; % Restricción de igualdad no lineal

Page 9: Guia Optimizacion con Matlab

6

solucion.m % 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]'; % Límite inferior de generación ub=[100 125 200 200]'; % Límite superior de generación [p,fval,exitflag,output,lambda]=fmincon('funobj',p0,A,b,Aeq,beq,lb,ub, 'restricnl') La ejecución del programa solucion.m, entrega la siguiente solución: » 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: []

Page 10: Guia Optimizacion con Matlab

7

cgiterations: [] lambda = lower: [4x1 double] upper: [4x1 double] eqlin: [0x1 double] eqnonlin: 60.0631 ineqlin: [0x1 double] ineqnonlin: [0x1 double] » 2.1.1 Interpretación de los Resultados � Las primeras líneas indican que el método empleado no es el más adecuado para este

problema, pero la optimización fue exitosa.

� Las restricciones 1 y 4 están activas:

La restricción 1 corresponde a la restricción de igualdad, G: el cual debe satisfacerse. La restricción 4 es la restricción de desigualdad de 3P se activa a su valor mínimo.

� Los resultados, son:

1P = 49.2078

2P = 50.7749

3P = 50.0000

4P = 50.4431

� El valor de la función objetivo, es:

=TF 7619.1 $/h

� La optimización terminó exitosamente: exitflag = 1, en 7 iteraciones y se utilizó un

algoritmo para tamaño medio; el método de búsqueda Cuasi Newton.

� El multiplicador de Lagrange (precio dual) de la restricción de igualdad, es:

eqnonlin: 60.0631. Es el costo marginal del sistema. Corresponde a la restricción G.

Los costos marginales de las unidades i

ii'i

dP

)P(dFF = , son:

Page 11: Guia Optimizacion con Matlab

8

0631.60F

6000.65F

5142.59F

5902.59F

'4

'3

'2

'1

=

=

=

=

La unidad 3, está saturada en su límite mínimo, y es la unidad más cara, pero debe operar por estar programada –seguramente para tener un margen de reserva en giro u otra consideración, está situación fue definida en el predespacho-. Las unidades 1 y 2 de acuerdo a sus costos marginales se puede decir que son las más económicas, pero como son responsables de las pérdidas del sistema están penalizadas y sus factores de penalización son:

i

perdi

P

P1

1PF

∂−

=

0079.1P00016.01

1PF

11 =

−=

0092.1P00016.01

1PF

22 =

−=

Las unidades 3 y 4 tienen factores de penalización iguales a 1, es decir, su funcionamiento no introduce pérdidas al sistema.

1PF3 =

1PF4 =

La unidad marginal, es la unidad 4, cuyo costo marginal es igual al costo marginal del sistema. 2.2 Ejemplo 2, Programación No Lineal: Coordinación Hidrotérmica [4] Determinar la coordinación hidrotérmica del siguiente sistema: funciones de costo. Pmin Pmax

31S

P0006.021S

P006.01SP8.43001F +++= 45 150

32S

P0006.022S

P007.02SP8.74002F +++= 50 180

23S

P009.03SP9.63503F ++= 35 200

Page 12: Guia Optimizacion con Matlab

9

Volumen de gasto [Acre-ft]

1HP1.62401q += V1 = 37000

2HP1.73002q += V2 = 25000

3HP2.72503q += V3 = 35000

4HP2.83004q += V4 = 20000

5HP104005q += V5 = 15000

[ ]MW22S

P00007.021S

P00009.023H

P00008.021H

P00007.0perdP +++=

La curva de gasto es:

Fig. Curva de Carga. Determinar el modelo de optimización y resolver con el toolbox de optimización del MATLAB. 2.2.1 El modelo de optimización

La función objetivo, es: ( )skPFn

1skn

maxJ

1k

MinZ ∑∑==

=

Para n=1, 2, 3 Con el objeto de mantener la claridad, la letra S significa térmica y la letra H significa Hidráulica:

[ ] [ ][ ])33SP(F)32SP(F)31SP(F*3n

)23SP(F)22SP(F)21SP(F*2n)13SP(F)12SP(F)11SP(F*1nMinZ

++

++++++=

Page 13: Guia Optimizacion con Matlab

10

donde:

El segundo subíndice, significa el número de la unidad y el tercer subíndice significa periodo de la carga. Sujeto a: Ecuación del balance de energía (potencia):

03DP3perdP35HP34HP33HP32HP31HP33SP32SP31SP3C

02DP2perdP25HP24HP23HP22HP21HP23SP22SP21SP2C

01DP1perdP15HP14HP13HP12HP11HP13SP12SP11SP1C

0DkPperdkPn

1HHkP

m

1SSkPkC

=−−+++++++=

=−−+++++++=

=−−+++++++=

=−−=

+=

= ∑∑

En la Fig. 2, se muestra la asignación de variable para el periodo j.

Fig. 2 Asignación de variables en el periodo j

j1hP

jSP

j1SP

nj

1 2 j jmax

P jDP

Page 14: Guia Optimizacion con Matlab

11

Restricción de disponibilidad de agua.

maxHkPHkPmin

HkP

maxSkPSkPmin

SkP

5V53q·3n52q·2n51q·1n5W

4V43q·3n42q·2n41q·1n4W

3V33q·3n32q·2n31q·1n3W

2V23q·3n22q·2n21q·1n2W

1V13q·3n12q·2n11q·1n1W

maxJ

1kkVHkq·knkW

≤≤

≤≤

=++=

=++=

=++=

=++=

=++==

== ∑

donde

11HP1.624011q +=

12HP1.624012q +=

13HP1.624013q +=

21HP1.730021q +=

22HP1.730022q +=

23HP1.730023q +=

31HP2.725031q +=

32HP2.725032q +=

33HP2.725033q +=

41HP2.830041q +=

42HP2.830042q +=

43HP2.830043q +=

51HP1040051q +=

52HP1040052q +=

53HP1040053q +=

2.2.2 Modelo de Optimización Implementado en MATLAB El modelo de optimización se implementó en tres archivos tipo m: funobj.m, restricc.m y solucion.m [1]. La primera contiene la función objetivo del problema, la segunda las restricciones no lineales de igualdad y desigualdad, y la tercera contienen los parámetros del problema, respectivamente.

Page 15: Guia Optimizacion con Matlab

12

En los parágrafos siguientes, se lista estos archivos. funobj.m %El archivo funobj.m "La Función Objetivo" function f=funobj(p) n1=6; n2=6; n3=12; % primer intervalo F11=300+4.8*p(1)+0.006*p(1)^2+0.00006*p(1)^3; F21=400+7.8*p(2)+0.007*p(2)^2+0.00007*p(2)^3; F31=350+6.9*p(3)+0.009*p(3)^2; % segundo intervalo F12=300+4.8*p(4)+0.006*p(4)^2+0.00006*p(4)^3; F22=400+7.8*p(5)+0.007*p(5)^2+0.00007*p(5)^3; F32=350+6.9*p(6)+0.009*p(6)^2; % tercer intervalo F13=300+4.8*p(7)+0.006*p(7)^2+0.00006*p(7)^3; F23=400+7.8*p(8)+0.007*p(8)^2+0.00007*p(8)^3; F33=350+6.9*p(9)+0.009*p(9)^2; %la función total f=n1*(F11+F21+F31)+n2*(F12+F22+F32)+n3*(F13+F23+F33); restricc.m % Archivo de las Restricciones (restricc.m) function [c,ceq]=restricc(p) c=[]; % Periodos n1=6; n2=6; n3=12; %Volúmenes de descarga. v1=37000; v2=25000; v3=35000; v4=20000; v5=15000; %Unidades hidraulicas. q11=240+6.1*p(10);

Page 16: Guia Optimizacion con Matlab

13

q21=300+7.1*p(11); q31=250+7.2*p(12); q41=300+8.2*p(13); q51=400+10*p(14); q12=240+6.1*p(15); q22=300+7.1*p(16); q32=250+7.2*p(17); q42=300+8.2*p(18); q52=400+10*p(19); q13=240+6.1*p(20); q23=300+7.1*p(21); q33=250+7.2*p(22); q43=300+8.2*p(23); q53=400+10*p(24); % Carga Pd1=1000; Pd2=1600; Pd3=700; % Perdidas Pperd1=0.00007*p(10)^2+0.00008*p(12)^2+0.00009*p(1)^2+0.00007*p(2)^2; Pperd2=0.00007*p(12)^2+0.00008*p(17)^2+0.00009*p(4)^2+0.00007*p(5)^2; Pperd3=0.00007*p(20)^2+0.00008*p(22)^2+0.00009*p(7)^2+0.00007*p(8)^2; % Restriccion de igualdad ceq=[p(1)+p(2)+p(3)+p(10)+p(11)+p(12)+p(13)+p(14)-Pperd1-Pd1 p(4)+p(5)+p(6)+p(15)+p(16)+p(17)+p(18)+p(19)-Pperd2-Pd2 p(7)+p(8)+p(9)+p(20)+p(21)+p(22)+p(23)+p(24)-Pperd3-Pd3 n1*q11+n2*q12+n3*q13-v1 n1*q21+n2*q22+n3*q23-v2 n1*q31+n2*q32+n3*q33-v3 n1*q41+n2*q42+n3*q43-v4 n1*q51+n2*q52+n3*q53-v5]; solucion.m % archivo solución A=[]; b=[]; Aeq=[]; beq=[]; p0=[100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100;100]; lb=[45;50;35;0;0;0;0;0;45;50;35;0;0;0;0;0;45;50;35;0;0;0;0;0];

Page 17: Guia Optimizacion con Matlab

14

ub=[150;180;200;300;450;600;700;800;150;180;200;300;450;600;700;800;150;180;200;300;450;600;700;800]; [p,fval,exitflag,output,lambda]=fmincon('funobj',p0,A,b,Aeq,beq,lb,ub,'restricc') >> solguia Warning: Large-scale (trust region) method does not currently solve this type of problem, using medium-scale (line search) instead. > In fmincon at 317 In solguia at 10 Optimization terminated: magnitude of directional derivative in search direction less than 2*options.TolFun and maximum constraint violation is less than options.TolCon. Active inequalities (to within options.TolCon = 1e-006): lower upper ineqlin ineqnonlin 1 3 9 15 17 p = Ps11 = 150.0000 Ps21 = 95.1933 Ps31 = 200.0000 Ps12 = 153.3929 Ps22 = 95.1942 Ps32 = 238.0430 Ps13 = 153.3924 Ps23 = 95.1938 Ps33 = 150.0000 Ph11 = 51.1815 Ph21 = 180.3394 Ph31 = 109.7460 Ph41 = 168.7391 Ph51 = 48.6068 Ph12 = 700.0000 Ph22 = 172.8211 Ph32 = 150.0000 Ph42 = 60.8773 Ph52 = 35.0666 Ph13 = 51.1852 Ph23 = 32.3400 Ph33 = 205.7751 Ph43 = 15.2731 Ph43 = 3.1633 fval =

Page 18: Guia Optimizacion con Matlab

15

1.1023e+005 exitflag = 5 output = iterations: 45 funcCount: 1150 lssteplength: 1 stepsize: 0.0287 algorithm: 'medium-scale: SQP, Quasi-Newton, line-search' firstorderopt: 2.1709e-004 message: [1x172 char] lambda = lower: [24x1 double] upper: [24x1 double] eqlin: [0x1 double] eqnonlin: [8x1 double] ineqlin: [0x1 double] ineqnonlin: [0x1 double] >> lambda.eqnonlin ans = -67.1086 -67.1087 -134.2173 1.8204 1.5753 1.5023 1.3640 1.1185 De donde: λ1 = -67.1086 λ2 = -67.1087 λ3 = -134.2173 γ1 = 1.8204

Page 19: Guia Optimizacion con Matlab

16

γ2 = 1.5753 γ3 = 1.5023 γ4 = 1.3640 γ5 = 1.1185 3 Programación lineal Si el problema de optimización queda formulado como un problema de programación lineal, Matlab [2] tiene un comando para resolver este problema, es linprog. linprog Resuelve un problema de programación 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) 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(...)

Descripción [1] Argumentos Los argumentos que toma el comando linprog, son los siguientes: f vector columna que contiene los coeficientes de la función objetivo a minimizar. x0 punto inicial para la búsqueda de la solución. A, b, Aeq, beq, lb, ub, definidas en el problema de optimización, corresponden a las restricciones lineales. options opciones de los parámetros de optimización. Salidas Las salidas que entrega el comando linprog, son las siguientes x vector solución fval valor de la función objetivo exitflag condición de terminación de fmincon output estructura de la salida

Page 20: Guia Optimizacion con Matlab

17

lambda multiplicadores de Lagrange Mayores detalles, se puede consultar en el manual [1], páginas 4-91 al 4-97. 3.1 Ejemplo 3 Problema de Programación Lineal Es un ejemplo de fabricación de pinturas [3, 4], el modelo de optimización queda planteado como un problema de programación lineal: Maximizar Z= 3XE+2XI función objetivo

Sujeto a: XE+2XI ≤ 6

2XE+XI ≤ 8 -XE+XI ≤ 1 restricciones XI ≤ 2 XE; XI ≥ 0

El problema tiene cuatro restricciones de desigualdad lineales. La cuarta restricción, se puede tratarla como acotamiento de la variable de decisión XE. Por tanto, se tiene solamente tres restricciones de desigualdad. El problema no tiene restricciones de igualdad lineales. Se renombran las variables, XE; XI, por X1; X2, el modelo se implementó en un archivo extensión m, prolineal.m, que se lista en el parágrafo siguiente: prolineal.m % Programa para resolver un problema de programación 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 ejecución del programa dio la siguiente salida: » prolineal f = -3 -2 A = 1 2

Page 21: Guia Optimizacion con Matlab

18

2 1 -1 1 b = 6 8 1 lb = 0 0 ub = 100 2 Optimization terminated successfully. x = 3.3333 1.3333 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 =

Page 22: Guia Optimizacion con Matlab

19

0.3333 1.3333 0.0000 » 3.2 Interpretación de los Resultados La optimización fue exitosa, se utilizó la rutina ‘lipsol’; algoritmo para optimización de gran escala. Fueron necesarias siete iteraciones. Los resultados, son:

XE = 3.3333 XI = 1.3333 fval = -12.6667

El problema original, fue de maximizar, por tanto, el valor de la función objetivo es:

Z = 12.6667 Los multiplicadores de Kuhn-Tucker (precios duales), son:

µ1 = 0.3333 µ2 = 1.3333 µ3 = 0.0000

Las dos primeras restricciones, están activas y el tercer multiplicador indica que la tercera restricción está inactiva. Referencias Bibliográficas [1] Thomas Coleman, et al., Optimization Toolbox For Use with Matlab®. User’s Guide,

Version 2, January, 1999. [2] Software, Matlab®. Versión 7.4.0.287, 2007. [3] F.S. Hillier, G. J. Lieberman, Una Introducción a la Investigación de Operaciones. Mc

Graw-Hill, 3a Edición, México, 1991. [4] A. Blanco, Operación Económica y Planificación de Sistemas Eléctricos de

Potencia. Apuntes de la asignatura, 2003.