Matlab se da cuenta de la programación no lineal

Función principal:

%标准形式
%  命令窗口调用: [x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
%   fun指目标函数文件,''调用文件
%   nonlcon指非线性约束条件,''调用文件
%   options可忽略
%   x0指初值
%   A指不等式左向系数,同一式下用逗号,不同式下用分号
%   B指不等式右向系数,用分号间隔
%   Aeq指等式左向系数,同一式下用逗号,不同式下用分号
%   Beq指等式右向系数,用分号间隔
%   LB指变量范围最小值,UB指变量范围最大值

%没有明确规定的范围(输入参数不存在),使用[]表示
%X代表向量取值,FVAL为最优值

% 举例:
% min f(x) = x1^2+x2^2+x3^2+8
% st:
%     x1^2-x2+x3^20
%     x1+x2^2+x3^220
%     -x1-x2^2+2 = 0
%     x2+2x3^2 = 3
%     x1,x2,x3 ≥ 0
    
[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')

fun1 función:

%注意取多项式时为点乘
function f=fun1(x);
f=x(1).^2+x(2).^2+x(3).^2+8;

función fun2:

%注意g,h要用中括号起来,g代表不等式约束,h代表等式约束
%必须保证是≤,右侧为0(常数移项左侧)
function [g,h]=fun2(x);
g=[-x(1).^2+x(2)-x(3).^2
    x(1)+x(2).^2+x(3).^3-20];
h=[-x(1)-x(2).^2+2
    x(2)+2*x(3).^2-3];

Blog de referencia: https://blog.csdn.net/weixin_42317398/article/details/107122186

Supongo que te gusta

Origin blog.csdn.net/gls_nuaa/article/details/113126833
Recomendado
Clasificación