CVXPY是斯坦福大学凸优化组开发的一个Python软件包,方便用户以数学形式定义凸优化模型。它是一种可以内置于Python中的模型编程语言,可以自动转化问题为标准形式,调用 solver,解包结果集。
准备工作,这一步可有可无(如果后面安装使用出问题,那就需要回过头来做这一步骤)
Visual Studio C++ compiler
不过也有看到说可以不装这个,直接有现成的轮子https://www.lfd.uci.edu/~gohlke/pythonlibs/#ecos。这里选择的版本是根据后面得到的版本信息来选择的。安装方法和后面的cvxopt一样pip install ecos-2.0.7.post1-cp37-cp37m-win_amd64.whl
。
我试了试,的确有用hhh。
可以选择想要用的镜像源
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
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())
4.根据版本信息下载两个 .whl 文件:Numpy+mkl 和 CVXOPT
Numpy+mkl :https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
CVXOPT:https://www.lfd.uci.edu/~gohlke/pythonlibs/#cvxopt
这个下载有点慢,我下载了一个打包合集,合适的话可以直接下载——在这。
听说numpy+mkl1.16.6版本兼容性好一些。
假设两个.whl文件都存在D盘
5.点击进入 Anaconda Prompt
6.卸载 numpy:pip uninstall numpy
7.进入两个 .whl 文件所在的文件夹
输入命令cd
文件所在路径(如果文件在D盘,需要先输入 D: 跳转到 D盘,然后输入 cd 文件所在路径)
之前都保存在D盘,所以直接跳转D就行了。
8. 输入命令 “pip install 文件名.whl”,按 Enter 键
比如:pip install cvxopt-1.2.5-cp37-cp37m-win_amd64.whl
进入 Anaconda Prompt,再入python环境,import cvxpy
,不出问题的话就是成功了。
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,x2≥0
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