欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

win10下python3.7安装cvxpy库与cvxopt

程序员文章站 2022-07-12 10:23:14
...

CVXPY是斯坦福大学凸优化组开发的一个Python软件包,方便用户以数学形式定义凸优化模型。它是一种可以内置于Python中的模型编程语言,可以自动转化问题为标准形式,调用 solver,解包结果集。

win10 + Anaconda python3.7

准备工作,这一步可有可无(如果后面安装使用出问题,那就需要回过头来做这一步骤)
Visual Studio C++ compiler
win10下python3.7安装cvxpy库与cvxopt
不过也有看到说可以不装这个,直接有现成的*https://www.lfd.uci.edu/~gohlke/pythonlibs/#ecos。这里选择的版本是根据后面得到的版本信息来选择的。安装方法和后面的cvxopt一样pip install ecos-2.0.7.post1-cp37-cp37m-win_amd64.whl
win10下python3.7安装cvxpy库与cvxopt
我试了试,的确有用hhh。

Step 1: 点击进入 Anaconda Prompt

win10下python3.7安装cvxpy库与cvxopt

Step 2: 输入命令 pip install cvxpy

可以选择想要用的镜像源

https://pypi.tuna.tsinghua.edu.cn/simple
https://mirrors.aliyun.com/pypi/simple/
https://pypi.douban.com/simple
https://mirrors.ustc.edu.cn/pypi/web/simple
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cvxpy

Step 3: 输入命令 pip install cvxopt

1.点击进入 Anaconda Prompt
2.输入 python,按 Enter 键,进入python界面
3.输入两行命令(每行命令按 Enter 结束)

32 位系统

>>> import pip
>>> print(pip.pep425tags.get_supported())

64 位系统

>>> import pip._internal.pep425tags
>>> print(pip._internal.pep425tags.get_supported())

win10下python3.7安装cvxpy库与cvxopt
4.根据版本信息下载两个 .whl 文件:Numpy+mkl 和 CVXOPT
Numpy+mkl :https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
CVXOPT:https://www.lfd.uci.edu/~gohlke/pythonlibs/#cvxopt
这个下载有点慢,我下载了一个打包合集,合适的话可以直接下载——在这。
win10下python3.7安装cvxpy库与cvxopt
听说numpy+mkl1.16.6版本兼容性好一些。
win10下python3.7安装cvxpy库与cvxopt
假设两个.whl文件都存在D盘

5.点击进入 Anaconda Prompt
6.卸载 numpy:pip uninstall numpy
7.进入两个 .whl 文件所在的文件夹

输入命令cd 文件所在路径(如果文件在D盘,需要先输入 D: 跳转到 D盘,然后输入 cd 文件所在路径)
win10下python3.7安装cvxpy库与cvxopt
之前都保存在D盘,所以直接跳转D就行了。
win10下python3.7安装cvxpy库与cvxopt
8. 输入命令 “pip install 文件名.whl”,按 Enter 键
比如:pip install cvxopt-1.2.5-cp37-cp37m-win_amd64.whl

Step 4: 输入命令 pip install cvxopt

进入 Anaconda Prompt,再入python环境,import cvxpy,不出问题的话就是成功了。
win10下python3.7安装cvxpy库与cvxopt

Step 5: 试一个小例子

Min2x1+3x2s.t.x1+2x2>=22x1+x2>=3x1,x20\begin{aligned} \text{Min} &\quad 2x_1 + 3x_2\\ \text{s.t.} &\quad x_1 + 2x_2 >= 2\\ &\quad 2x_1 + x_2 >= 3\\ &\quad x_1,x_2 \geq 0 \end{aligned}

x1 = cvx.Variable(nonneg=True)
x2 = cvx.Variable(nonneg=True)
obj = cvx.Minimize(2*x1 + 3*x2)
constrains = [x1 + 2*x2 >= 2, 2*x1 + x2 >= 3]
prob = cvx.Problem(obj, constrains)
prob.solve()
print('求解状态:%s,用时:%s' %(prob.status, prob.solver_stats.solve_time))
print("The optimal value is", prob.value)
print("A solution x is", x1.value, x2.value)
print("Dual value is", constrains[0].dual_value, constrains[1].dual_value)
求解状态:optimal,用时:2.4e-05
The optimal value is 3.6666666664998697
A solution x is 1.333333333418318 0.333333333221078
Dual value is 1.3333333332844253 0.33333333331070386