03线性规划、整数规划与案例讲解视频上_哔哩哔哩_bilibili
强烈安利b站的司守奎老师讲的python数学建模,非常详细
但是在安装cvxpy库遇到了一点麻烦(有的教程用的是linprog这个库,但是要求最优化问题必须先改写成标准型,感觉还是有点麻烦,果断换了司老师讲的库)
一、问题及解决
用pip安装了相关的库,直接运行报错:
- 报错:ImportError: DLL load failed
- 报错:The solver GLPK_MI is not installed
用print(cvxpy.installed_solvers())查看已安装的东西,显示['ECOS', 'ECOS_BB', 'OSQP', 'SCIPY', 'SCS']
再次pip install cvxopt,显示已安装
虽然在pip list里面都看到了相关的库,但是用不了,于是开始怀疑版本问题,但是很多博主推荐的离线安装网址失效了
最后找到了python扩展库的相关网页cvxpy · PyPI
终于被我发现问题了,原来是我用的python版本太低了(3.8.19),不符合pip install cvxpy默认安装的要求(>=3.9)
重新用anaconda建了个python=3.9的虚拟环境后完美解决
二、安装cvxpy及依赖
先安装依赖项,一顿pip install就好
pip install numpy
pip install mkl
pip install cvxopt
pip install scs
pip install ecos
pip install osqp
最后安装cvxpy库,应该都是满足要求的
pip install cvxpy
三、验证
首先验证这些库安装上没有
import cvxpy as cp
print(cp.installed_solvers())
显示有cvxopt, GLPK_MI
再验证一下能不能正常求解
import numpy as np
import cvxpy as cp
# 1.决策变量
x = cp.Variable(3,pos=True)
# 2.目标函数
c = np.array([70,50,60])
obj = cp.Maximize(c@x)
# 3.约束矩阵
# 左
a = np.array([[2,4,3],[3,1,5],[7,3,5]])
# 右
b =np.array([150,160,200])
cons =[a@x<=b]
# 4.求解
prob = cp.Problem(obj,cons)
prob.solve(solver='GLPK_MI')
print("最优解为:", x.value)
print("最优值为:", prob.value)
高精度求解结果显示为:
哭鼠,没想到一个小小的问题困扰了我好久,以后把“版本对应”四个字刻烟吸肺。。。