非线形优化 Matlab和Python (含01规划)

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,\[\]);

相关推荐
黑十9 小时前
PyTorch 报 “no CUDA GPUs are available“ 怎么办?3 步排查
服务器·网络·人工智能·pytorch·python
D e re k ZH9 小时前
P5025 [SNOI2017] 炸弹
c++·算法
A boy CDEF girl9 小时前
算法题专栏:优选算法
数据结构·算法·leetcode
没落之王9 小时前
三易五行看宋朝的三界确立
大数据·人工智能·算法
threelab10 小时前
开源图片去水印代码
python
坤坤子吖10 小时前
算法学习——单调队列
开发语言·c++·笔记·学习·算法
taller_200011 小时前
【012】数据类型入门: Excel 数据到 Python 值的转换
python·excel·pie·py
淡漠的蓝精灵11 小时前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
Js.Tx11 小时前
【具体数学 Concrete Mathematics】2.1.5 一般性的方法
算法·具体数学
起个名字费劲死了12 小时前
Halcon学习一:骰子识别
前端·python·学习