前言:规划问题分为线性规划和非线性规划两大类,其中线性规划采用cvxpy库就可以解决;非线性规划分为凸规划和非凸规划,做题时应先判断是否是凸规划。对于凸规划采用cvxpy可以解决,非凸规划采用scipy.optimize中的minimize函数解决。每一个小节的实例及代码在参考书籍上都有,文章中就没有打出。
当然对于规划类问题,首推的还是lingo:lingo可以解决所有的规划问题,对于多目标规划化和Python一样无法直接求解,化成单目标即可。推荐学习视频:b站up:爆肝杰哥
Lingo建模基础入门_Savanna07的博客-CSDN博客_lingo中if函数的用法例题
参考书籍:《python数学建模算法与应用》 司守奎 孙玺菁 (强烈推荐!)
具体代码书上有写我就没有再敲出来
1、线性规划模型:求解优化问题(LP)
库:cvxpy numpy pandas
cvxpy是用于求解凸规划问题的库,在使用前必须要验证目标函数和约束条件都是凸函数,但对于线性规划可以直接使用。
步骤:
1、构造目标函数的系数向量、约束矩阵、常数向量(如果这三个都十分简单也可以不用构造矩阵,直接在下面的表达式中表达)
2、未知数:x=cp.Variable(n,pos/integer=True) pos/integer设置是小数还是整数
cvxpy中有三种数据类型,标量、向量和矩阵。n可以是数字,也可以是矩阵,
矩阵的行和列都是从0开始计数的。
3、目标函数:obj=cp.Maximize/Minimize(expression)
矩阵乘法用x@y,矩阵对应元素相乘用cp.multiply(x,y)
cp.sum()可以在里面包含有未知数,常常obj