Вы находитесь на странице: 1из 21

Optimizacin para Ingenieros

Ejercicios de PNL sin restricciones


Mtodos: Gradiente Conjugado, Descenso ms Rpido, Newton y Quasi-Newton (rango uno, DFP y BFGS)

1. Considere el siguiente problema de PNL sin restricciones:


)
Minimizar (
a. Utilizando el origen como punto inicial, calcule las dos primeras direcciones, y los pasos
correspondientes, obtenidos con el mtodo del gradiente conjugado. Estas sern las direcciones D1
= (D1x, D1y, D1z) y D2 = (D2x, D2y, D2z) y los pasos 1 y 2:
Para resolver el problema es necesario llevar la ecuacin a la forma cuadrtica para obtener la matriz A y
el vector B. La forma cuadrtica tiene el siguiente formato:
( )

; entonces:
(

{[

[ ]}

{[

Cabe destacar que la direccin D1 y el vector r1 son iguales al vector b, ya que:


; donde x0 es el punto (0,0,0), por lo tanto:
El problema se resolvi utilizando el siguiente script de Matlab (Ej3A.m):
r1 = [-10;5;-20]
A = [ 10 0 0 ; 0 20 0 ; 0 0 16]
alfa = (r1'*r1)/(r1'*A*r1)
x1 = alfa*r1
r2 = r1 - alfa*A*r1
beta2 = (r2'*r2)/(r1'*r1)
D2 = r2+(beta2*r1)
alfa2 = (r2'*r2)/(D2'*A*D2)
x2 = x1 + alfa2*D2

Los resultados obtenidos son los siguientes:


r1 =
-10
5
-20
A =
10
0
0
20
0
0
alfa =
0.0665
x1 =
-0.6646
0.3323
-1.3291
r2 =
-3.3544
-1.6456
1.2658
beta2 =
0.0296
D2 =
-3.6509
-1.4974

0
0
16

[ ]}

0.6730
alfa2 =
0.0840
x2 =
-0.9710
0.2066
-1.2726

b.

que minimizan la funcin f(x,y,z) donde las coordenadas x, y y z, resultan


D1+ D2. Esta funcin representa cualquier combinacin lineal de D1 y D2
y est definida como:

f (aD1+ b D2) = 5D12x +10D12y +8D12z a 2 +2 5D1x D2x +10D1y D2y +8D1z D2z ab +

(5D2 +10D2 +8D2 ) b + (10D1 -5D1 +20D1 )a + (10D2 -5D2 +20D2 ) b


2
x

2
y

2
z

) = (0,0) como punto inicial y cualquier mtodo de optimizacin no lineal.


El ejercicio se resolvi usando el mtodo Quasi-Newton de Broyden-Fletcher-Goldfarb-Shanno (BFGS) con
el siguiente script de Matlab (Ej1b.m):
x0 = [0 0];
options = optimset('Display','iter','MaxIter',25,'TolFun',1e-15,'TolX', 1e-4,...
'LargeScale', 'off', 'HessUpdate', 'bfgs');
[x,fval,exitflag,output] = fminunc(@f1,x0,options)

El listado de la funcin f1.m es el siguiente:


function [f] = f1(x)
D1 = [-10;5;-20];
D2 = [-3.6509;-1.4974;0.6730];
f = (5*D1(1)^2+10*D1(2)^2+8*D1(3)^2)*x(1)^2+2*(5*D1(1)*D2(1)+10*D1(2)*D2(2)...
+ 8*D1(3)*D2(3))*x(1)*x(2)+(5*D2(1)^2 + 10*D2(2)^2 + 8*D2(3)^2)*x(2)^2 + ...
(10*D1(1) - 5*D1(2) + 20*D1(3))*x(1)+ (10*D2(1) - 5*D2(2) + 20*D2(3))*x(2);
end

Los resultados obtenidos son los siguientes:


First-order
Iteration

Func-count

f(x)

Step-size

optimality

-13.0453

0.000190476

265

12

-17.5038

14.8

18

-17.7471

10

11.3

21

-18.0969

3.72

24

-18.0978

0.364

27

-18.0979

0.00118

Local minimum possible.

525

fminunc stopped because the size of the current step is less than
the selected value of the step size tolerance.

<stopping criteria details>

x =
0.0665

0.0840

fval =
-18.0979
exitflag =
2
output =
iterations: 6
funcCount: 27
stepsize: 1
firstorderopt: 0.0012
algorithm: 'medium-scale: Quasi-Newton line search'
message: [1x419 char]

c. Compare los valores de y con los tamaos de los dos pasos obtenidos en el apartado a (1 y
2). Establezca conclusiones al respecto.
Los valores 1 y 2 obtenidos en la parte A (Pasos a seguir en las direcciones D1 y D2, respectivamente)
son iguales a los valores y (escalares que minimizan la funcin f(
) indicada en el punto b.).
Esto se debe a que la funcin f(aD1+ bD2) es una combinacin lineal de las dos primeras direcciones
del ejercicio resuelto en la parte A. Precisamente en esta combinacin esta basado el mtodo de
gradiente conjugado, el cual garantiza que el punto mnimo obtenido en cada direccin es el mnimo
del sub-espacio creado por esa direccin y las anteriores.
Al ser la funcin f(aD1+ bD2) una combinacin lineal de las dos primeras direcciones, el mnimo
valor de esa funcin debe coincidir con lo obtenido con el mtodo de Descenso Conjugado en el
punto a.
2. Considere el siguiente problema de optimizacin:
Minimizar ( )
El mnimo global de esta funcin est ubicado en el punto x k* = 0, k = 1,2,...,10, con un valor
funcional f(x*) = 0.
a. Resuelva el problema utilizando los mtodos Descenso ms Rpido, Newton y Quasi-Newton
(rango uno, DFP y BFGS). Utilice como punto inicial
,
y como
-6
criterios de parada un mximo de 20 iteraciones y un cambio menor a 1x10 en estimaciones
sucesivas de x.

Solucin por mtodo Descenso ms Rpido

Se llam al mtodo Descenso ms Rpido con el siguiente script (Steepdesc.m)


x0= [10 9 8 7 6 5 4 3 2 1];
options = optimset('Display','iter','MaxIter',20,'TolFun',1e-50,'TolX', 1e-6,...
'LargeScale', 'off', 'HessUpdate', 'steepdesc');
[x,fval,exitflag,output] = fminunc(@f1,x0,options)

Donde la funcin f1.m se define como:


function [ fx ] = f1( x )
fx = x(1)^2 + 2*x(2)^2 + 3*x(3)^2 + 4*x(4)^2+ 5*x(5)^2 + 6*x(6)^2 + 7*x(7)^2 +...
8* x(8)^2 + 9*x(9)^2 + 10*x(10)^2;
end

Los resultados obtenidos son los siguientes:


First-order
Iteration

Func-count

f(x)

Step-size

optimality

11

1210

22

884.938

0.0166667

50

44

185.426

0.1

21.1

66

79.3076

0.1

16.1

88

42.8774

0.1

13.3

110

26.2476

0.1

13.3

132

17.4827

0.1

13.3

154

12.4733

0.1

13.3

176

9.47152

0.1

13.3

198

7.62203

0.1

13.3

10

220

6.46385

0.1

13.3

11

253

1.36893

0.0519381

2.33

12

275

0.401431

0.333712

2.93

13

297

0.333438

0.1

2.93

14

330

0.0774966

0.0522947

0.554

15

352

0.0251936

0.316841

0.718

16

374

0.020668

0.1

0.718

17

407

0.00532007

0.0525483

0.145

18

429

0.00178099

0.312005

0.192

19

451

0.00145723

0.1

0.192

60

First-order
Iteration

Func-count

f(x)

Step-size

optimality

20

484

0.000385354

0.0525558

0.0391

21

506

0.000129787

0.310796

0.0511

Solver stopped prematurely.

fminunc stopped because it exceeded the iteration limit,


options.MaxIter = 20 (the selected value).

x =

Columns 1 through 7
0.0074

0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

Columns 8 through 10
0.0009

0.0005

0.0026

fval =
1.2979e-04

exitflag =
0

output =
iterations: 21
funcCount: 506
stepsize: 0.3108
firstorderopt: 0.0511
algorithm: 'medium-scale: Quasi-Newton line search'
message: [1x128 char]

Solucin por mtodo de Newton

Se llam al mtodo de Newton con el siguiente script (newton.m):


x0= [10 9 8 7 6 5 4 3 2 1] ;
x0 = x0';
[xopt,fopt,xs,H, menorEig, difHess,last] = quasi_newt(@f,x0,1e-6,20,'newton')

Donde la funcin f.m se define como:


function [ fx,ga,h ] = f( x )
fx = x(1)^2 + 2*x(2)^2 + 3*x(3)^2 + 4*x(4)^2+ 5*x(5)^2 + 6*x(6)^2 + 7*x(7)^2 +...
8* x(8)^2 + 9*x(9)^2 + 10*x(10)^2;
ga = [2*x(1) 4*x(2) 6*x(3) 8*x(4) 10*x(5) 12*x(6) 14*x(7) 16*x(8) 18*x(9) ...
20*x(10)];
ga = ga';

h =

2
0
0
0

0
4
0
0

0
0
6
0

0
0
0
8

0
0
0
0

0
0
0
0

0
0
0
0

0
0
0
0

0
0
0
0

0;...
0;...
0;...
0;...

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

0
0
0
0
0
0

10
0
0
0
0
0

0
12
0
0
0
0

0
0
14
0
0
0

0
0
0
16
0
0

0
0
0
0
18
0

0;...
0;...
0;...
0;...
0;...
20];

end

Los resultados obtenidos son los siguientes:


xopt =

0
0
0
0
0
0
0
0
0
0

fopt =
0

xs =
10

H =
Columns 1 through 7

0.5000

0.2500

0.1667

0.1250

0.1000

0.0833

0.0714

Columns 8 through 10
0

0.0625

0.0556

0.0500

menorEig =
2

difHess =
0

last =
2

Solucin por mtodo de Quasi-Newton Rango Uno:

Se llam al mtodo de Rango Uno con el siguiente script (rangouno.m):


x0= [10 9 8 7 6 5 4 3 2 1] ;
x0 = x0';
[xopt,fopt,xs,H, menorEig, difHess,last] = quasi_newt(@f,x0,1e-6,20,'rango1')

La funcin f.m es igual a la utilizada en el mtodo de Newton. Los resultados obtenidos son los siguientes:
xopt =
1.0e-15 *

0.0193

0.6523
-0.1171
0.1874
0.3799
-0.0382
-0.0199
0.3877
-0.0190
0.2111

fopt =
3.4175e-30

xs =
Columns 1 through 7

10.0000

8.1818

6.1441

4.1359

2.3977

1.1266

0.3962

9.0000

5.7273

2.7535

0.6294

-0.4401

-0.6295

-0.3865

8.0000

3.6364

0.5967

-0.6793

-0.6323

-0.1368

0.1408

7.0000

1.9091

-0.5575

-0.7343

-0.0726

0.2547

0.1200

6.0000

0.5455

-0.9406

-0.2637

0.3035

0.1395

-0.0909

5.0000

-0.4545

-0.7838

0.2198

0.2529

-0.1163

-0.0757

4.0000

-1.0909

-0.3186

0.4196

-0.0415

-0.1455

0.0686

3.0000

-1.3636

0.2238

0.2547

-0.2371

0.0513

0.0528

2.0000

-1.2727

0.6119

-0.1399

-0.0978

0.1399

-0.0859

1.0000

-0.8182

0.6144

-0.4136

0.2398

-0.1127

0.0396

Columns 8 through 12

H =

0.0949

0.0137

0.0009

0.0000

0.0000

-0.1364

-0.0266

-0.0022

0.0000

-0.0000

0.1214

0.0380

0.0045

-0.0000

0.0000

-0.0306

-0.0342

-0.0067

0.0000

-0.0000

-0.0505

0.0128

0.0075

0.0000

0.0000

0.0421

0.0106

-0.0063

-0.0000

0.0000

0.0175

-0.0195

0.0038

-0.0000

-0.0000

-0.0455

0.0142

-0.0017

0.0000

-0.0000

0.0303

-0.0059

0.0005

-0.0000

-0.0000

-0.0095

0.0014

-0.0001

0.0000

-0.0000

Columns 1 through 7

0.5000

0.0000

0.0000

-0.0000

-0.0000

-0.0000

0.0000

0.2500

0.0000

0.0000

-0.0000

-0.0000

-0.0000

0.0000

0.0000

0.1667

-0.0000

0.0000

-0.0000

0.0000

-0.0000

0.1250

-0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0000

-0.0000

0.1000

0.0000

0.0000

-0.0000

-0.0000

-0.0000

0.0000

0.0833

0.0000

-0.0000

-0.0000

-0.0000

0.0000

0.0000

0.0000

0.0714

-0.0000

-0.0000

-0.0000

-0.0000

0.0000

0.0000

-0.0000

-0.0000

0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

-0.0000

1.0000

1.0000

1.0000

1.0000

1.0000

1.0000

2.0000

31.6571

29.0389

26.2579

23.3371

20.3016

9.3277

0.0000

Columns 8 through 10
-0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0000

-0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

0.0000

-0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0625

0.0000

-0.0000

0.0000

0.0556

0.0000

-0.0000

0.0000

0.0500

menorEig =
Columns 1 through 7
1.0000

1.0000

Columns 8 through 11
1.0000

1.0000

difHess =
Columns 1 through 7
36.4692

34.1164

Columns 8 through 11
17.1152

last =

13.6000

11

Solucin por mtodo de Quasi-Newton DavidonFletcherPowell (DFP):

Se llam al mtodo de DFP con el siguiente script (dfp.m):


x0= [10 9 8 7 6 5 4 3 2 1] ;
x0 = x0';
[xopt,fopt,xs,H, menorEig, difHess,last] = quasi_newt(@f,x0,1e-6,20,'dfp')

La funcin f.m es igual a la utilizada en el mtodo de Newton. Los resultados obtenidos son los siguientes:
xopt =
1.0e-14 *

0.1837
0.0896
0.0265
-0.0069
-0.0031
0.0362
0.0667
0.0456
-0.0085
-0.0261

fopt =
1.1522e-29

xs =
Columns 1 through 7
10.0000

8.1818

6.1441

4.1359

2.3977

1.1266

0.3962

9.0000

5.7273

2.7535

0.6294

-0.4401

-0.6295

-0.3865

8.0000

3.6364

0.5967

-0.6793

-0.6323

-0.1368

0.1408

7.0000

1.9091

-0.5575

-0.7343

-0.0726

0.2547

0.1200

6.0000

0.5455

-0.9406

-0.2637

0.3035

0.1395

-0.0909

5.0000

-0.4545

-0.7838

0.2198

0.2529

-0.1163

-0.0757

4.0000

-1.0909

-0.3186

0.4196

-0.0415

-0.1455

0.0686

3.0000

-1.3636

0.2238

0.2547

-0.2371

0.0513

0.0528

2.0000

-1.2727

0.6119

-0.1399

-0.0978

0.1399

-0.0859

1.0000

-0.8182

0.6144

-0.4136

0.2398

-0.1127

0.0396

Columns 8 through 12
0.0949

0.0137

0.0009

0.0000

-0.0000

-0.1364

-0.0266

-0.0022

0.0000

-0.0000

0.1214

0.0380

0.0045

0.0000

-0.0000

-0.0306

-0.0342

-0.0067

-0.0000

-0.0000

-0.0505

0.0128

0.0075

-0.0000

-0.0000

0.0421

0.0106

-0.0063

0.0000

0.0000

0.0175

-0.0195

0.0038

0.0000

0.0000

-0.0455

0.0142

-0.0017

0.0000

-0.0000

0.0303

-0.0059

0.0005

-0.0000

-0.0000

-0.0095

0.0014

-0.0001

-0.0000

-0.0000

H =
Columns 1 through 7
0.5000

-0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0000

0.2500

-0.0000

0.0000

0.0000

-0.0000

-0.0000

-0.0000

-0.0000

0.1667

-0.0000

0.0000

0.0000

-0.0000

0.0000

0.1250

-0.0000

0.0000

0.0000

0.1000

0.0000

0.0000

0.0000

0.0000

0.0000

0.0833

-0.0000

-0.0000

0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0714

-0.0000

0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

0.0000

0.0000

Columns 8 through 10
-0.0000

-0.0000

-0.0000

0.0000

-0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

-0.0000

-0.0000

-0.0000

0.0625

-0.0000

-0.0000

0.0000

0.0556

-0.0000

-0.0000

0.0000

0.0500

menorEig =
Columns 1 through 7

1.0000

0.9878

0.9674

0.9401

0.9875

2.0000

31.6675

29.0614

9.3415

0.0000

0.9103

0.8883

0.8882

26.2994

23.4015

20.3784

Columns 8 through 11
0.9167

0.9586

difHess =
Columns 1 through 7
36.4692

34.1199

Columns 8 through 11
17.1779

13.6342

last =
11

Solucin por mtodo de Quasi-Newton Broyden-Fletcher-Goldfarb-Shanno (BFGS):

Se llam al mtodo de bfgs con el siguiente script (bfgs.m):


x0= [10 9 8 7 6 5 4 3 2 1] ;
x0 = x0';
[xopt,fopt,xs,H, menorEig, difHess,last] = quasi_newt(@f,x0,1e-6,20,'dfp')

La funcin f.m es igual a la utilizada en el mtodo de Newton. Los resultados obtenidos son los siguientes:
xopt =
1.0e-15 *

0.3245
0.0256
0.0147
0.0746
0.1119
0.1900
0.2724
0.2151
0.0261
-0.0390

fopt =
1.3193e-30

xs =
Columns 1 through 7

10.0000

8.1818

6.1441

4.1359

2.3977

1.1266

0.3962

9.0000

5.7273

2.7535

0.6294

-0.4401

-0.6295

-0.3865

8.0000

3.6364

0.5967

-0.6793

-0.6323

-0.1368

0.1408

7.0000

1.9091

-0.5575

-0.7343

-0.0726

0.2547

0.1200

6.0000

0.5455

-0.9406

-0.2637

0.3035

0.1395

-0.0909

5.0000

-0.4545

-0.7838

0.2198

0.2529

-0.1163

-0.0757

4.0000

-1.0909

-0.3186

0.4196

-0.0415

-0.1455

0.0686

3.0000

-1.3636

0.2238

0.2547

-0.2371

0.0513

0.0528

2.0000

-1.2727

0.6119

-0.1399

-0.0978

0.1399

-0.0859

1.0000

-0.8182

0.6144

-0.4136

0.2398

-0.1127

0.0396

Columns 8 through 12
0.0949

0.0137

0.0009

0.0000

0.0000

-0.1364

-0.0266

-0.0022

0.0000

-0.0000

0.1214

0.0380

0.0045

0.0000

-0.0000

-0.0306

-0.0342

-0.0067

0.0000

-0.0000

-0.0505

0.0128

0.0075

0.0000

-0.0000

0.0421

0.0106

-0.0063

0.0000

-0.0000

0.0175

-0.0195

0.0038

0.0000

0.0000

-0.0455

0.0142

-0.0017

0.0000

0.0000

0.0303

-0.0059

0.0005

0.0000

-0.0000

-0.0095

0.0014

-0.0001

-0.0000

-0.0000

H =
Columns 1 through 7
0.5000

0.0000

-0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0000

0.2500

-0.0000

0.0000

0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.1667

0.0000

0.0000

0.0000

-0.0000

0.0000

0.0000

0.1250

0.0000

-0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

0.1000

0.0000

0.0000

0.0000

0.0000

0.0000

0.0833

0.0000

-0.0000

0.0000

0.0000

0.0000

0.0714

-0.0000

-0.0000

-0.0000

0.0000

0.0000

0.0000

-0.0000

-0.0000

0.0000

0.0000

-0.0000

-0.0000

0.0000

-0.0000

-0.0000

-0.0000

-0.0000

0.0000

0.0000

0.0000

Columns 8 through 10
-0.0000

-0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0625

0.0000

-0.0000

0.0000

0.0556

-0.0000

-0.0000

-0.0000

0.0500

menorEig =
Columns 1 through 7
1.0000

0.8659

0.7540

0.6677

0.9235

2.0000

31.7363

29.1647

9.4119

0.0000

0.6123

0.5969

0.6314

26.4364

23.5645

20.5466

Columns 8 through 11
0.7149

0.8241

difHess =
Columns 1 through 7
36.4692

34.1548

Columns 8 through 11
17.3246

last =
11

13.7443

b. Para cada mtodo, grafique los cambios que se obtienen en el error


del nmero de iteraciones (abscisa). Analice los resultados obtenidos.

como funcin

Grfica 1 Norma Eucldea vs. Iteraciones

En la Grfica 1 se puede observar las diferencias en la convergencia de los mtodos. El mtodo de


Newton obtiene la solucin ptima en 2 iteraciones, mientras que todos los mtodos de Quasi-Newton la
obtienen en once (11) iteraciones. Al mtodo de Descenso Ms Rpido le tom 22 iteraciones, sin
embargo, el criterio de parada alcanzado fue el de mximas iteraciones y no la tolerancia deseada para el
cambio del valor de x.
Cabe destacar que la norma Eucldea calculada para cada iteracin en los mtodos de Quasi-Newton es
igual, a pesar de que los valores de x sean diferentes para cada mtodo a lo largo de las iteraciones.
c. Para cada uno de los mtodos Quasi-Newton:
i. Elabore una grfica que muestre el menor valor propio de la aproximacin del Hessiano
vs. la cantidad de iteraciones realizadas a lo largo del proceso de optimizacin (abscisa).
Utilice esta grfica para establecer conclusiones acerca de la positividad de la
aproximacin al Hessiano

Grfica 2 Menor valor propio de la aproximacin del Hessiano vs. Iteraciones

En la Grfica 2 se muestra el comportamiento del menor valor propio de la aproximacin de la Matriz


Hessiana a lo largo de las iteraciones del problema. Los mtodos de Quasi-Newton requieren que el
Hessiano sea definido positivo y como se muestra en la grfica, todos los mtodos cumplen con esta
condicin, sin embargo el mtodo BFGS es el que se acerca ms a un valor negativo al tener un valor
propio que desciende en las primeras iteraciones, alejndose del valor real.
ii.
comando norm de Matlab). Analice los resultados

Grfica 3 Norma de Frobenius Vs. Cantidad de Iteraciones

En la grfica 3, se puede observar que todos los mtodos de Quasi-Newton utilizados en esta caso, tienen
un comportamiento similar al comparar las norma de Frobenius de la diferencia de la aproximacin del
Hessiano y su valor real a lo largo de las iteraciones realizadas. Todas comienzan en un valor cercano a
36.4692 y tienen diferencias apenas apreciables en algunas iteraciones.
Otro detalle importante es que en todos los mtodos se consigue una norma de Frobenius igual a cero (0)
en la ltima iteracin, lo que quiere decir que se alcanza una muy buena aproximacin del Hessiano
calculado en cada mtodo con el Hessiano real.
d. Compare el desempeo final de los distintos mtodos en funcin de:
i. Nmero de iteraciones
ii. Exactitud de las soluciones encontradas (tanto en el valor de x como en el de f(x))
iii. Aproximacin del Hessiano (donde aplique)
Mtodo

Descenso ms Rpido
Newton
RANGO 1
DFP
BFGS

Nmero de Iteraciones

21*
2
11
11
11

Exactitud de la
solucin**
Valor de
(x)
1x10-3
0
1x10-16
1x10-15
1x10-16

Valor de
f(x)
1x10-4
0
1x10-30
1x10-29
1x10-30

Aproximacin del
Hessiano***

0
0
0

* El criterio de parada encontrado es el de mximas iteraciones y no el de tolerancia en el cambio del


valor de x.
** Los valores mostrados son representativos e indican el valor decimal donde se obtiene la mayor
diferencia entre el valor calculado (tanto de x como de f(x)) y el valor de ptimo (tanto de x como de f(x)).
*** Valor de la norma de Frobenius de la diferencia entre la aproximacin del Hessiano y su valor real en
el punto final
Tabla 1 Resumen de la comparacin de los mtodos utilizados

En la tabla 1 se resume la comparacin de los mtodos utilizados. En todos los casos, el mejor mtodo
resulta ser el mtodo de Newton, esto era de esperarse ya que para funciones cuadrticas la
aproximacin es exacta y el mtodo converge en un solo paso.
Le siguen todos los mtodos de Quasi-Newton, en los cuales la aproximacin del valor de x y de f(x) son
despreciables y en todos, la aproximacin del Hessiano en la ltima iteracin es igual (o muy cercana) al
Hessiano real.
Finalmente, el mtodo de Descenso ms Rpido es el que tiene el peor desempeo, sin embargo el valor
de f(x) tiene una diferencia con el valor ptimo en el cuarto valor decimal, lo cual es despreciable en
aplicaciones reales de ingeniera. El punto dbil de este mtodo es la cantidad de iteraciones, ya que en
problemas mas complejos, el costo computacional asociado a cada iteracin puede llegar a ser alto, lo
cual hace a este mtodo poco llamativo.
3. Los gastos anuales de operacin de un compresor de gas en una tubera transcontinental estn
dados por:
(

Siendo:
C = costos de operacin, $/ao
Q = cantidad de gas bombeado, pie3/da
L = distancia entre estaciones de compresin, millas
P1 = presin de descarga, psia
P2 = presin de succin, psia
D = dimetro de la lnea, pulgadas
K1,K2,Z,S,b = constantes
Adems,
(

Determine los valores de P1 y P2 que minimicen C para los siguientes valores de los parmetros:
i.

Z = 1, K = 1370, L = 20, b = 1,476, K1 = 0,081, s = 100, K2 = 1,13

El ejercicio planteado corresponde a un problema de optimizacin no lineal con restricciones, en vista de


que la presin de descarga debe ser mayor que la presin de succin y ninguna de stas puede ser menor
que cero. Cabe resaltar que el resultado de este problema depender del punto inicial seleccionado,
pero en todos los casos los valores de las variables de diseo (presiones) que minimizan la funcin

(costos) deben ser iguales. En este caso particular, se seleccionar presiones de descarga y succin
iguales a 1x106 psia y 1x102 psia, respectivamente.

Solucin del Problema de Optimizacin No Lineal Con Restricciones

Se llam a la funcin de Matlab (fmincon) con el siguiente script (fmincon1.m)


% Optimizacin No Lineal Con Restricciones
clear all
% Punto inicial
x0 = [1e6 1e2];
% Nmero mximo de iteraciones
iter = 13;
% Opciones de optimizacin
options = optimset('Algorithm','interior-point','Display','iter',...
'MaxIter',iter,'OutputFcn','output');
% Restricciones lineales de desigualdad
A = [-1 1];
b = [0];
% Lmites inferiores de las variables de diseo
lb = [0 0];
% Rutina de optimizacion
global xs;
[x,fval,exitflag,output] = fmincon(@(x) myfun(x),x0,A,b,[],[],lb,...
[],[],options)

Donde la funcin f1.m se define como:


function f = myfun(x)
% Datos
%
%
%
%
%
%
%

C: Costos de operacion, dolares/ao


Q: Cantidad de gas bombeado, pie3/dia
L: Distancia entre estaciones de compresion, millas
P1: Presion de descarga, psia
P2: Presion de succion, psia
D: Diametro de la linea, pulgadas
D, L, K, K1, K2, Z, s, b: constantes

D = 60; L = 20; K = 1370; K1 = 0.081;

K2 = 1.13;

Z = 1;

s = 100; b = 1.476;

P1 = x(1);
P2 = x(2);
Q=K2*((D^2.6*(P1^2-P2^2)^0.54)/(L^0.54*Z^0.54));
f=((K*Q*Z)/(1e6*L))*(log(P1/P2)+b)+K1*D^2*((P1/(2*(s-P1)))+(P1^2/(4*(s+P1)^2)));

Los resultados obtenidos son los siguientes:


Iter F-count
0
3
1
6
2
9
3
12
4
15
5
18
6
21
7
24
8
27

f(x)
2.080815e+07
1.053295e+07
1.052280e+07
1.047304e+07
1.024643e+07
9.460806e+06
8.393045e+06
7.391938e+06
6.278012e+06

Feasibility
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00

First-order
optimality
1.947e+04
9.969e+01
9.918e+01
9.673e+01
8.631e+01
5.830e+01
3.454e+01
2.156e+01
1.329e+01

Norm of
step
1.945e+04
1.011e+02
5.030e+02
2.454e+03
1.097e+04
2.342e+04
3.541e+04
6.213e+04

9
10
11
12
13

30
33
36
39
42

5.029148e+06
3.390922e+06
1.490163e+05
8.445207e+03
4.143546e+02

0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00

8.459e+00
6.647e+00
3.411e+01
3.901e+02
2.402e+02

1.080e+05
2.089e+05
4.168e+05
2.084e+03
9.118e+00

Solver stopped prematurely.


fmincon stopped because it exceeded the iteration limit,
options.MaxIter = 13 (the selected value).
x =
1.0e+05 *
8.8239

8.8239

fval =
414.3546
exitflag =
0
output =
iterations:
funcCount:
constrviolation:
stepsize:
algorithm:
firstorderopt:
cgiterations:
message:

ii.

13
42
0
9.1184
'interior-point'
240.2355
2
[1x128 char]

El 50% de los valores listados en el apartado i

Los resultados obtenidos con Matlab son los siguientes:


Iter F-count
0
3
1
6
2
9
3
12
4
15
5
18
6
21
7
24
8
27
9
30
10
33
11
36
12
39
13
42
14
45
15
48
16
51
17
54

f(x)
1.688608e+06
1.198402e+06
1.189201e+06
1.151333e+06
1.051538e+06
9.764386e+05
8.920136e+05
8.110291e+05
7.284383e+05
6.458709e+05
5.620683e+05
4.761744e+05
3.856947e+05
2.856706e+05
1.653096e+05
6.274735e+03
3.495709e+02
1.140447e+01

Feasibility
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00
0.000e+00

First-order
optimality
1.697e+03
9.443e+01
8.945e+01
7.155e+01
3.971e+01
2.549e+01
1.548e+01
9.588e+00
5.880e+00
3.608e+00
2.204e+00
1.341e+00
8.124e-01
4.904e-01
2.973e-01
1.621e+00
1.941e+01
2.213e+02

Solver stopped prematurely.


fmincon stopped because it exceeded the iteration limit,
options.MaxIter = 17 (the selected value).
x =
1.0e+05 *
9.8241
fval =
11.4045
exitflag =
0

9.8241

Norm of
step
1.696e+03
1.000e+02
4.737e+02
1.895e+03
2.371e+03
4.269e+03
6.648e+03
1.094e+04
1.767e+04
2.889e+04
4.750e+04
7.955e+04
1.376e+05
2.524e+05
3.885e+05
1.943e+03
9.713e+00

output =
iterations:
funcCount:
constrviolation:
stepsize:
algorithm:
firstorderopt:
cgiterations:
message:

17
54
0
9.7129
'interior-point'
221.3487
0
[1x128 char]

Вам также может понравиться