欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matlab实现非线性规划

程序员文章站 2022-06-13 16:34:56
...

主函数:

%标准形式
%  命令窗口调用: [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函数:

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

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];

参考博客:https://blog.csdn.net/weixin_42317398/article/details/107122186

相关标签: matlab