凸优化:python解决凸优化问题

本文详细介绍了如何使用pip安装CVXPy和CVXOpt库,包括解决Microsoft Visual C++ 14.0所需的问题,并提供了安装链接。此外,还通过实例演示了如何使用CVXPy进行优化问题的建模与求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装CVX包 
用pip安装cvxopt-1.2.1-cp36-cp36m-win_amd64.whl和cvxpy-1.0.9-cp36-cp36m-win_amd64.whl

因为我是python3.6所以是cp36

下载地址: 

cvxpy: 
https://www.lfd.uci.edu/~gohlke/pythonlibs/#cvxpy

cvxopt: 
https://www.lfd.uci.edu/~gohlke/pythonlibs/#cvxopt

参考:https://blog.csdn.net/YEN_CSDN/article/details/80658452

https://blog.csdn.net/zhangjie19930729/article/details/54022924

2、遇到问题:

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

网址上不去,找到了这个:

https://www.lfd.uci.edu/~gohlke/pythonlibs/

下载ecos:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#ecos

验证是否安装成功,可以用一个例子:

from cvxpy import *
import cvxpy as cvx

'''
problem :
minimize (x-y)^2
subject to
        x+y=1
        x-y>=1
'''
from cvxpy import *
# Create two scalar optimization variables.
# 在CVXPY中变量有标量(只有数值大小),向量,矩阵。
# 在CVXPY中有常量(见下文的Parameter)
x = Variable() #定义变量x,定义变量y。两个都是标量
y = Variable()
# Create two constraints.
#定义两个约束式
constraints = [x + y == 1,
              x - y >= 1]
#优化的目标函数
obj = Minimize(square(x - y))
#把目标函数与约束传进Problem函数中
prob = Problem(obj, constraints)
prob.solve()  # Returns the optimal value.
print("status:", prob.status)
print("optimal value", prob.value) #最优值
print("optimal var", x.value, y.value) #x与y的解
# Replace the objective. 不同的目标函数,相同的约束
prob2 = cvx.Problem(cvx.Maximize(x + y), prob.constraints)
print("optimal p1 value", prob2.solve())

# Replace the constraint (x + y == 1).#不同的约束,相同的目标函数
constraints = [x + y <= 3] + prob.constraints[1:] #注意:此处是列表相加,prob.constraints[1:]取prob的约束集中
#从第二个开始的所有约束。
prob2 = cvx.Problem(prob.objective, constraints)
print("optimal P2 value", prob2.solve())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MC数据局

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值