matlab下的CVX, 是极富盛名的凸优化解题工具包。 其实他在python下也有相应的库, 叫 cvxpy.
但是他的安装没有那么容易: 直接使用
pip install cvxpy
会报错。
经过作者多次踩坑, 摸索出了正确的打开方式:
首先, 我用的是python 3.6, 但估计python 3都可以。 系统是Win 10。
使用Anaconda进行下载。 (不了解的可以百度Anaconda,非常有用。)
打开Anaconda Prompt, 依次输入下列两个命令:
conda install -c conda-forge lapack
conda install -c cvxgrp cvxpy
即可 安装完成。
开始编写demo, 测试安装成功与否,使用cxvpy的官方例程:
import cvxpy as cp
import numpy as np
# Generate data.
m = 20
n = 15
np.random.seed(1)
A = np.random.randn(m, n)
b = np.random.randn(m)
# Define and solve the CVXPY problem.
x = cp.Variable(n)
cost = cp.sum_squares(A @ x - b)
prob = cp.Problem(cp.Minimize(cost))
prob.solve()
# Print result.
print("\nThe optimal value is", prob.value)
print("The optimal x is")
print(x.value)
print("The norm of the residual is ", cp.norm(A @ x - b, p=2).value)
运行效果如下:
大功告成!
备注: 继续使用发现, numpy版本报错。 猜测是conda install cvxpy的过程中, 扰乱了numpy 的版本。 使用
pip uninstall numpy
无济于事,无法删除。
最后在site-packages 文件夹下,找到numpy文件夹, 删除, 再重新使用
pip install numpy
即可成功。