MATLAB非线性(线性)最优化函数——fmincon

调用格式

[ x , f o p t , k e y , c ] = f m i n c o n ( F u n , x 0 , A , B , A e q , B e q , x m , x M , C F u n , O P T ) [x,f_{opt},key,c]=fmincon(Fun,x_0,A,B,A_{eq},B_{eq},x_m,x_M,CFun,OPT) [x,fopt,key,c]=fmincon(Fun,x0,A,B,Aeq,Beq,xm,xM,CFun,OPT)

  • x x x:最优化后的值。
  • f o p t f_{opt} fopt:最优化值。
  • k e y key key:是否正常求解,正数时为正常。
  • c c c:求解过程中的一些参数返回。
  • F u n Fun Fun:被优化函数。
  • x 0 x_0 x0:初始点。
    MATLAB非线性(线性)最优化函数——fmincon_第1张图片
    注意是最小化,其次约束是小于等于
    编写约束函数先返回c再ceq
    线性约束也写在非线性约束里会简化很多代码

例子

用的实时脚本
MATLAB非线性(线性)最优化函数——fmincon_第2张图片

f = @(x)x(1)^2-2*x(1)+x(2);
[a,b,c,d] = fmincon(f,[0;0],[],[],[],[],[],[],@ff)



function [c,ceq]=ff(x)
c=[4*x(1)^2+x(2)^2-4;-x(1);-x(2)];
ceq=[];
end

MATLAB非线性(线性)最优化函数——fmincon_第3张图片

你可能感兴趣的:(控制系统仿真与CAD)