ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Optimizacion matlab


Enviado por   •  10 de Diciembre de 2017  •  Apuntes  •  282 Palabras (2 Páginas)  •  116 Visitas

Página 1 de 2

Resolver problemas no lineales

Con la función fmincon

Definir la función objetivo en un archivo a parte

Fmincon(llama la función objetivo

MATLAB

Crear una función script

Function z = funcionobj (x)

Z=x(1)*x(2)+((x(1)).^2)*log(x(2))

end

*X1 primero coordenada vector

*X2 segunda

Otro script:

Función [c, ceq] = nlrest  (x)            *restricciones no lineaes

Ceq=[];

C=x(1)+(x(2)-1)^2;   * tiene que estar despejado a cero

End

Ceq    * restricciones de igualdad, no toma valores pq no hay igualdad

  • Las restr lineales de desigualdades va en en otra parte

Otro script para resolver el problema:

A=[-1 0; 0 -1]

B=[0, -1];    *vector asociado a restricciones meno o igual

Aeq=[]; asociada a igualdades, en este caso no hay valores

Beq=[];

Lb= [] ; cotas inferiores, en este caso es vacio

Ub=[];  cotas superiores

X0=[0,5];

[xmin,fmin,f]=fmincon(@funcionobj,x0,A,b,Aeq,beq,lb,ub,@nlrest)

Vector optimo = xmin

F es para saber que si esta bien el valor o no: valores exitflag

1: funciona bien

0 supero num max iteraciones

-2 infactible

2 el cambio en x fue menor que opciones

FMIN: 1.64 e-17

  • Ahora vamos a darle las derivadas

gradientes

Otro archivo script:

Function [z, gradz]= gradfunobj(x)

Z=x(1)*x(2)+((x(1)).^2)*log(x(2))

Gradz= [x(2)+2*log(x(2))*x(1) ; x(1)+(x(1)^2)*1/x(2)]  * vector igual al num de variables derivada cn respecto a una variables, después x2 * debe ser columna

End

otro script con restricciones

function [c,ceq,gradc, gradceq]=gradnlrest(x)

Ceq=[];

C=x(1)+(x(2)-1)^2;   * tiene que estar despejado a cero

Gradc=[1;2*(x(2))-1];

end

otro archivo para solucionar el problema..

comando

optimoptions(‘fmincomn’)

sale toooo se puede modificar

gradconst  * hay que poner on

grandobj

archivo resolver…:

options = optimoptons (‘fmincon’,’grandconst’,’on’,grandob’,’on’);  * en el mismo orden, función que queremos cambiar y por que

A=[-1 0; 0 -1]

B=[0, -1];    *vector asociado a restricciones meno o igual

Aeq=[]; asociada a igualdades, en este caso no hay valores

Beq=[];

Lb= [] ; cotas inferiores, en este caso es vacio

Ub=[];  cotas superiores

X0=[0,5];

[xmin,fmin,f]=fmincon(@fgrandfunob,x0,A,b,Aeq,beq,lb,ub,@gradnlrest,options)

Xmin oo 1

Fmin 2.1 e-18

F 2

El segundo es mas rápido

...

Descargar como (para miembros actualizados)  txt (2.3 Kb)   pdf (58.7 Kb)   docx (11.1 Kb)  
Leer 1 página más »
Disponible sólo en Clubensayos.com