Está en la página 1de 8

Práctico Nº 3

Optimización de funciones
sin restricciones y con
restricciones
Optimización sin restricciones
con MatLab
% ------- OPTIMIZACION SIN RESTRICCIONES --------

% Introducción de la función: uso de la sentancia INLINE


fun=inline('-(x(1)^2+2*x(2)^2+2*x(1)*x(2)^2)');

% Valor inicial para que comience el algoritmo


x0=[0,1];

% Introducción del conjunto de opciones de optimización


options=optimset('LargeScale','off');

% Uso de la función: FMINUNC


[x,fval,exitflag,output]=fminunc(fun,x0,options);
Optimización sin restricciones
con MatLab
% Definición de la función objetivo

fun=inline('x(1)^2-3*x(1)*x(2)+4*x(2)*x(3)+3*x(2)^2+6*x(3)^2');
x0=[0,0,0];
options=optimset('LargeScale','off');
[x,fval,exitflag,output]=fminunc(fun,x0,options);
x

fval

exitflag
fun=inline('2-3*x(1)^2+3*x(1)^2*x(2)+x(2)^3-3*x(2)^2');
x0=[0,0];
options=optimset('LargeScale','off');
[x,fval,exitflag,output]=fminunc(fun,x0,options);
x
fval
Exitflag
Optimización con restricciones
con MatLab
% Paso 1: definición de la función
fun=inline('-(x(1)^2+3*x(1)*x(2)+x(2)^2)');
% Paso 2: definición de la matriz Aeq y el vector beq
A=[1 1];
b=[100];
% Definición de un valor inicial para que comience el algoritmo
x0=[0 1];
% Paso 4: introducción del conjunto de opciones
options=optimset('LargeScale','off');
% Paso 5: función para encontrar el óptimo
[x,fval,exitflag,output,lambda]=fmincon(fun,x0,[],[],A,b,lb,[],[],options);
% Paso 6: obtención del resultado
x
fval
lambda
exitflag
Optimización con restricciones
con MatLab
% Paso 1: definición de la función
fun=inline('-(x(1)^2+x(2)^2)');
% Paso 2: definición de la matriz Aeq y el vector beq
A=[1 2];
b=[4];
% Definición de un valor inicial para que comience el algoritmo
x0=[0 1];
% Paso 4: introducción del conjunto de opciones
options=optimset('LargeScale','off');
% Paso 5: función para encontrar el óptimo
[x,fval,exitflag,output,lambda]=fmincon(fun,x0,[],[],A,b,lb,[],[],options);
% Paso 6: obtención del resultado
x
fval
lambda
exitflag
% Solución gráfica del ejemplo de clase
%
X=-3:6;
Y=((X-1).^3).^(1/2);
area(X,Y)
hold on
[U V]=meshgrid(-3:6,-3:6);
contour(U,V,U.^2+V.^2);
hold off
Gráfico
12

10

-2

-4
-3 -2 -1 0 1 2 3 4 5 6

También podría gustarte