Ayúdenme a escribir un programa de optimización de Matlab. El tema es el siguiente:
Resuelto usando la función de optimización restringida fmincon.
Nota x(1)=b, x(2)=h, x(3)=S
Entonces la función objetivo es f(x) = ( 10*x( 1 )*x(2) x(3) )/ ( 10*x(1)*x(2) ) 7.076E-3 / ( x(1)^3*x(2) )
Las restricciones de desigualdad lineal son -x(3) lt;=-1.26E-4 1/4*x(1) -x(2) lt;=0 -x(2) lt;=-0.2;
Es decir, A = [0 0 -1; 1/4 -1 0; 0 -1 0]; las restricciones de desigualdad no lineal son < x(1)^3*x(2)/x(3) - 2,612 = 0
Las restricciones de desigualdad no lineal son 4,66E-4 - x(1)^2* x(2) lt; = 0;
El código de referencia es el siguiente: function?zd
A?=?[0?0?-1;?1/4? -1?0;?0 ?-1?0];
b?=?[-1.26E-4;?0;?0];
x0?=? [0.1?0.1?0.1] ;
opt?=?optimset('Display',? iter',?' MaxFunEvals',?1E5);
x?=?fmincon (@obj,x0,A , b, [], [], [], [], @nonlcon, opt)
función?f?=?obj(x)
f?=?(? 10*x(1)*x(2)? ?x(3)?) ?/? (?10*x(1)*x(2)?) ?7.076E-3 ?/? (?x( 1)^3*x(2)?);
función?[c,?ceq]? =?nonlcon(x)
c? =?4.66E-4? -?x(1)^2*x(2);
ceq?=?x(1)^3*x(2)/x(3)?- ?2.612;
Resultado: La optimización finalizó con éxito: la magnitud de la derivada direccional en la dirección de búsqueda es menor que 2*options.TolFun y la restricción máxima violada es menor que options.TolCon
Activando restricciones: 1
x= 0.59453.35000.2695
Es decir, b=0.5945, h=3.3500, S=0.2695.