Python cvxpy 安装报错问题

学习数学建模的过程中,在线性规划以及非线性规划的章节中,经常会出现要使用cvxpy.solvers模块求解的模型程序,而python当中是没有自带cvxpy这个库的,这意味着我们需要自行安装库。

根据网络资料的查询,我得知了:安装cvxpy需要先安装numpy,mkl,scipy,cvxopt,scs,ecos,osqp这几个包

至于安装方法,则是通过cmd命令窗口用 pip 以此安装即可

 pip install numpy
 pip install mkl
 pip install cvxopt
 pip install scs
 pip install ecos
 pip install osqp

注:此处安装scs库的时候会可能会出现安装报错

        (这里由于我先前已经安装过了所以没有出现报错)

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

        即:需要安装Visual C++ 14.0,只需要下载一下然后安装就行(可能会有点大),如果实在不想下载的话可以直接去下轮子 轮子下载地址

上述安装完毕之后然后再:

pip install cvxpy

就完成cvxpy库的安装了!!!

你们以为这就结束了吗?这仅仅只是开始.............

运行cvxpy 报错 The solver GLPK_MI is not installed

当我运行一段线性规划的程序时,出现了“The solver GLPK_MI is not installed”的报错

一开始我只是采用了一位博主的解决方法:【数学建模之Python】3.cvxpy库报错:cvxpy.error.SolverError。求解非线性整数规划时遇到。解决方法是安装求解器

毕竟最开始我是觉得,既然报错是说我缺少GLPK_MI这个求解器,那我只要不用这个求解器,换一个求解器不就行了

然而,当我按照博主的方法下载使用另一个求解器之后,原来的程序虽然可以运行了,但是不同求解器运行出来得到的结果却是不同的(此处问题我也不知道为什么,暂时也找不到解答)

如下:

#程序文件Pex6_3_1.py
import cvxpy as cp
import numpy as np
L=np.array([48.7,52.0,61.3,72.0,48.7,52.0,64.0])
w=np.array([2000,3000,1000,500,4000,2000,1000])
a=np.array([8,7,9,6,6,4,8])
x=cp.Variable((2,7), integer=True)
obj=cp.Maximize(cp.sum(x*L))
con=[cp.sum(x,axis=0,keepdims=True)<=a.reshape(1,7),
     x*L<=1020, x*w<=40000, cp.sum(x[:,4:]*L[4:])<=302.7, x>=0]
prob = cp.Problem(obj, con)
prob.solve(solver='GLPK_MI',verbose=True)
print("最优值为:",prob.value)
print("最优解为:\n",x.value)

此代码摘自《Python数学实验与建模》第6章 整数规划与线性规划

此代码的运行结果是:

最优值为: 2039.4
最优解为:
 [[4. 1. 5. 3. 3. 2. 0.]
 [4. 6. 4. 3. 0. 1. 0.]]

而当我更换了求解器,即将solver='GLPK_MI'改为solver='CPLEX'

得出的运行结果却与之前不同:

最优值为: 2009.3
最优解为:
 [[8. 2. 0. 6. 0. 0. 1.]
 [0. 5. 9. 0. 0. 4. 0.]]

所以,我舍弃了这个办法,采取了另一种解决方法:

用cmd命令行输入 pip 下载cvxopt

pip install cvxopt

这时候程序就能成功运行不报错了

你可能感兴趣的:(python,开发语言,线性代数)