欢迎使用 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社区实时交流,请加入我们的 Discord群组 。

  • 要与CVXPY社区进行更长时间、深入的讨论,请使用 Github讨论区 。

  • 要分享功能请求和错误报告,请使用 问题跟踪器 。

开发。

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的一部分。