win10下python3.7安装cvxpy库与cvxopt

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

win10 + Anaconda python3.7

准备工作,这一步可有可无(如果后面安装使用出问题,那就需要回过头来做这一步骤)
Visual Studio C++ compiler
win10下python3.7安装cvxpy库与cvxopt_第1张图片
不过也有看到说可以不装这个,直接有现成的轮子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_第2张图片
我试了试,的确有用hhh。

Step 1: 点击进入 Anaconda Prompt

win10下python3.7安装cvxpy库与cvxopt_第3张图片

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张图片
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_第5张图片
听说numpy+mkl1.16.6版本兼容性好一些。
win10下python3.7安装cvxpy库与cvxopt_第6张图片
假设两个.whl文件都存在D盘

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

输入命令cd 文件所在路径(如果文件在D盘,需要先输入 D: 跳转到 D盘,然后输入 cd 文件所在路径)
win10下python3.7安装cvxpy库与cvxopt_第7张图片
之前都保存在D盘,所以直接跳转D就行了。
win10下python3.7安装cvxpy库与cvxopt_第8张图片
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_第9张图片

Step 5: 试一个小例子

Min 2 x 1 + 3 x 2 s.t. x 1 + 2 x 2 > = 2 2 x 1 + x 2 > = 3 x 1 , x 2 ≥ 0 \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} Mins.t.2x1+3x2x1+2x2>=22x1+x2>=3x1,x20

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

你可能感兴趣的:(一些基础分享)