欢迎使用 CVXPY 1.5
凸优化,人人可用。
我们正在建立CVXPY社区 在Discord上. 加入讨论!
CVXPY是一个用于凸优化问题的开源Python嵌入建模语言。它允许您以符合数学规律的自然方式表达您的问题,而不是遵循求解器所需的限制性标准形式。
例如,以下代码用于求解具有约束条件的最小二乘问题:
import cvxpy as cp
import numpy as np
# 问题数据
m = 30
n = 20
np.random.seed(1)
A = np.random.randn(m, n)
b = np.random.randn(m)
# 构造问题。
x = cp.Variable(n)
objective = cp.Minimize(cp.sum_squares(A @ x - b))
constraints = [0 <= x, x <= 1]
prob = cp.Problem(objective, constraints)
# 通过`prob.solve()`返回最优目标值。
result = prob.solve()
# 最优x的值存储在`x.value`中。
print(x.value)
# 约束条件的最优拉格朗日乘子存储在
# `constraint.dual_value`中。
print(constraints[0].dual_value)
这段简短的脚本是CVXPY可以做的基本示例。除了凸规划,CVXPY还支持几何规划的推广,混合整数凸规划和凸序规划。
要了解CVXPY的指南,请查看 教程 。要了解机器学习、控制、金融等领域的应用,请浏览 示例库 。要了解凸优化的背景知识,请参阅Boyd和Vandenberghe的书籍 凸优化 。
CVXPY依赖于开源求解器 Clarabel 、 OSQP 、SCS 和 ECOS 。支持额外的求解器,但必须单独安装。
社区。
CVXPY社区由来自世界各地的研究人员、数据科学家、软件工程师和学生组成。欢迎加入我们!
开发。
CVXPY是一个社区项目,是许多研究人员和工程师的贡献所建立的。
CVXPY由 Steven Diamond 、 Akshay Agrawal 、 Riley Murray 、 Philipp Schiele 以及 Bartolomeo Stellato 等人开发和维护,还有许多其他人做出了重要的贡献。多年来,许多人对CVXPY的发展产生了影响, 包括Stephen Boyd、Eric Chu、Robin Verschueren、Jaehyun Park、Enzo Busseti、AJ Friend、Judson Wilson、Chris Dembia和Philipp Schiele等。
我们感谢所有的贡献。要参与其中,请参阅我们的 贡献指南 并加入我们的 Discord 社区 。
新闻。
CVXPY 1.3引入了用户可以指定不同规范化后端的选项,这可以大大减少规范化的时间。最初,添加了一个基于SciPy稀疏模块的第二个后端。在这里了解更多关于新后端的信息: 规范化后端。请参阅 CVXPYgen 以获取补充的代码生成方法。在引入语义化版本控制之后, 自CVXPY 1.3发布以来,可以从 cvxpy 命名空间导入的所有内容都被视为是公共API的一部分。