欢迎使用 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依赖于开源求解器 ClarabelOSQPSCSECOS 。支持额外的求解器,但必须单独安装。

社区。

CVXPY社区由来自世界各地的研究人员、数据科学家、软件工程师和学生组成。欢迎加入我们!

  • 要与CVXPY社区实时交流,请加入我们的 Discord群组

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

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

开发。

CVXPY是一个社区项目,是许多研究人员和工程师的贡献所建立的。

CVXPY由 Steven DiamondAkshay AgrawalRiley MurrayPhilipp 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的一部分。