Experto: Me gustaría preguntarle cómo usar computadoras para resolver programación no lineal multivariante. Por ejemplo, ¿cómo implementar la siguiente figura a través de la programación?
La función de Matlab utilizada para resolver la minimización de funciones no lineales restringidas de múltiples variables es principalmente la función fmincon, y el modelo matemático es:
min f(x)
st c(x) 0
ceq(x) = 0
A x b
Aeq x = beq
lb x ub
El formato de llamada común es el siguiente:
1 [x, fval] = fmincon(fun, x0, A, b), dado el valor inicial x0, resuelve. para el valor mínimo x de la función objetivo, la restricción
es A*xb, y la solución x y el valor de la función objetivo en x se devuelven al mismo tiempo.
2.[x, fval] = fmincon(fun, x0, A, b, Aeq, beq), dado el valor inicial x0, resolver para el valor mínimo x de la función objetivo, restricciones p>
Las condiciones son A*xb y A x b, y la solución x y el valor de la función objetivo en x se devuelven al mismo tiempo.
3. [x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub), dado el valor inicial x0, resuelve el valor mínimo x de la función objetivo. ,
p>
Las restricciones son A*xb y A x b, definen el límite inferior lb y el límite superior ub de la variable x, y devuelven la solución x y el valor de la función objetivo en x
.
4. [x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon), según lo anterior, agregue el parámetro nonlcon
< La desigualdad no lineal c(x) o la ecuación ceq(x) se proporciona en el número p>, lo que requiere c(x)0 y ceq(x)=0. Al mismo tiempo, se devuelve el valor de la función objetivoen la solución x.
5. [x, fval] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, nonlcon, options), según lo anterior, use los parámetros de opciones
Minimiza el número de parámetros de optimización especificados.
6. x = fmincon(), solo devuelve el valor numérico de la solución x, pero no devuelve el valor de la función objetivo.
Ejemplo 2.3.1 Calcula el volumen máximo de un cilindro con una superficie de 300m2. Establecer un modelo matemático y convertirlo a una forma estándar:
min ?x21
x2
s.t. πx1x2 πx21
= 150
x1, x2 0
Primero escriba el archivo M para definir la función:
función f=myfun(x)
f= -3.14* x(1)*x(1)*x(2);
Guarde el archivo con el nombre myfun.m.
En segundo lugar, escriba un archivo M de restricciones:
función [c, ceq]=mycon(x)
c = [ ];
ceq = 3,14 x(1) x(2) 3,14 x(1)2 ?
Guarde el archivo con el nombre mycon.m.
Ingrese en la ventana de comandos de Matlab:
gt; x0 = [1, 1]; 1 );
gt;gt; [x, fval] = fmincon(′myfun′, x0, [ ], [ ], [ ], [ ], lb, [ ], ′ mycon′)< / p>
Presione Enter para obtener:
x=
3.9904 7.9809
fval=
-399.0434