MATLAB:fmincon
在matlab中,一般使用fmincon来解决非线性优化问题
[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
一般使用:
[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
式中,输出x是最优解,fval是最优化结果,exitflag是优化成功与否
fun是目标函数(最优化函数)
x0是初始状态
A,b是不等式线性约束
Aeq,beq是等式线性约束
lb和ub是x的约束范围
nonlcon 是非线性约束,和fun同理若此项不存在,用[]替代
案例分析:
比如在无人机追逃过程中,XDi和XAj,分别为一个二维的位置点,a为常数,来求解使得f最小的位置x
参考资源:
https://download.csdn.net/download/weixin_44346182/88925127
Python:minimize
在python中,使用scipy库里的minimize函数
pip install scipy -i https://pypi.tuna.tsinghua.edu.cn/simple
和matlab类似,res = minimize(fun(), x0, constraints=cons)
fun()是要优化的函数
x0是初始状态,co
nstraints是约束函数,不过这个是大于0的式子
案例分析
同上的问题,代码
https://download.csdn.net/download/weixin_44346182/88925133
01规划:intlinprog
matlab中解决01规划使用的是intlinprog函数
https://www.cnblogs.com/goodtwo/p/11145699.html
使用方法为:
[x,fval]=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub****)
x是最优解:比如[1,0,1],fval是最优解,f是约束函数的系数,intcon是整数的个数
例如:
三个都是整数变量,intcon=1:3
注意:此函数是求整数规划的最小值,如果是最大值,则优化函数的系数矩阵f去负号
f=[-5 -8];
A=[1 1;5 9];
b=[6 45];
lb=zeros(2,1);%约束范围
intcon=[1 2];
[x,fval]=intlinprog(f,intcon,A,b,[],[],lb,[]);