CVXPYは凸最適化をPythonらしい記法で書くモデリング層
CVXPY は、凸最適化のための Python フレームワークであり、高レベルのモデリング問題を規律ある凸プログラムに変換し、ソルバーの選択、制約の調整、数値結果の検証を支援します。
ひと目でわかる
- これは何?
- cvxpy/cvxpyはソルバではなくClarabel、SCS、OSQP、HiGHS等へ変換するPython組み込み凸最適化モデリング言語で、pip install cvxpyとPython 3.11以上がREADMEの入口です。
- 誰に向いている?
- 数理モデルを標準形ではなく数式に近い形で書きたいPython利用者や、複数オープンソースソルバを切り替えたい研究者にはCVXPYが合います。ソルバ自体や大規模非凸混合整数をCVXPYだけに任せたい場合はREADMEのスコープ外です。
- 商用利用できる?
- できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 1 日前です。
- 何の言語で書かれている?
- 主に C++ です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
ソルバではなく disciplined convex 変換層
READMEはCVXPYをPython組み込みの凸最適化モデリング言語だと定義し、ソルバが要求する制限的標準形ではなく、数学に近い自然な書き方で問題を表現できると説明しています。CVXPY is not a solverと明言し、既定でClarabel、SCS、OSQP、HiGHSなどオープンソースソルバに依存すると述べます。追加ソルバはwww.cvxpy.org/tutorial/solvers/index.html#choosing-a-solverにリストされるが別途インストールが必要です。
Stanford University研究プロジェクト起源で、現在は多国・多機関で開発されるcommunity projectとREADMEは説明しています。Apache-2.0 license、stars 6314、最新リリースv1.9.2(2026-08-08)がメタデータとReleasesから得られます。Discord、benchmarks、Security ScorecardsへのバッジもREADME上部にあります。
最小二乗と境界制約のコード例
READMEの例はimport cvxpy as cpとnumpyを使い、m=30,n=20の乱数行列Aとベクトルbを生成します。x = cp.Variable(n)、objective = cp.Minimize(cp.sum_squares(A @ x - b))、constraints = [0 <= x, x <= 1]、prob = cp.Problem(objective, constraints)と定義し、result = prob.solve()で最適値を得ます。x.valueとconstraints[0].dual_valueが解と双対値の取り出し方として示されています。
この例をそのまま実行し、数値が返ること、境界制約0以上1以下が守られていることを確認するのがCVXPY導入の最小テストです。READMEはexample library(cvxpy.org/examples)とtutorial、API referenceへのリンクをGetting started節に列挙しています。
凸・MI凸・GP・QCQP・NLPの宣言範囲
With CVXPY, you can model節は、convex optimization problems、mixed-integer convex optimization problems、geometric programs、quasiconvex programs、nonlinear programsを列挙しています。ただしREADMEはDCPルールや非凸問題の扱いの詳細までは本文に載せず、チュートリアルとIssues、StackOverflowへ誘導します。基本用法質問(Why isn't my problem DCP?)はStackOverflowタグcvxpy推奨です。
モデルクラスを広く宣言している一方、実際に解けるかは問題構造と選択ソルバに依存します。READMEの一覧をすべてが自動で解ける保証と混同しないことが重要です。mixed-integer convexは別ソルバ要件が絡む可能性があり、tutorial/solversを読む必要があります。
幾何計画や準凸計画など名称だけ見慣れないクラスもREADMEに並びます。初めて触れる利用者はexample libraryで同型問題を探し、写経後に自分のデータサイズへ拡張する順序がREADMEの学習経路と一致します。数値が不安定な場合はDependencies節のSciPyやNumPy下限版本を先に確認してください。
pip install cvxpyと依存バージョン
Installation節はPyPI経由pip install cvxpy、conda-forge経由conda install -c conda-forge cvxpyを示します。DependenciesとしてPython >= 3.11、Clarabel >= 0.5.0、OSQP >= 1.0.0、SCS >= 3.2.4.post1、NumPy >= 2.0.0、SciPy >= 1.13.0、highspy >= 1.11.0、sparsediffpy >= 0.2.2がREADMEに列挙されています。詳細はcvxpy.org/install/index.htmlです。
venvまたはconda envでこれら下限を満たすかをpip checkやconda listで確認しないと、prob.solve()時にソルバ import エラーが出ます。ソースからのビルドは同インストールガイドのinstall-from-source節へcontributing節がリンクしています。
condaとpipを混在させる環境では依存解決が崩れやすく、READMEは両経路を示すだけで混在禁止までは書いていません。評価用仮想環境はどちらか一方に統一し、pip install cvxpy後にimport cvxpy as cpが成功するかを最初に確認してください。
DiscordとGitHub Issuesの使い分け
Community節はDiscordでリアルタイムチャット、GitHub Discussionsで長文議論、GitHub Issuesで機能要望とバグとREADMEが整理しています。code of conduct(CODE_OF_CONDUCT.md)遵守が求められます。
Issues節はcorrectness、documentation、performance、feature requestsを歓迎とし、基本用法はStackOverflowへ、と重複案内しています。openIssues 193は活発な議論の規模示唆ですが、個別バグの有無はREADMEからは読み取れません。We encourage you to report issues using the Github trackerとREADMEは書いています。
ContributingとTeam節
Contributing節は、convex optimizationの専門家でなくても貢献できるとREADMEは述べます。ソースインストール後、ドキュメント改善、website doc、help wanted issue、example library、benchmark追加が具体例として列挙されています。新exampleや新featureはpriorities align確認のため先に連絡を求めます。
Team節はSteven Diamond、Akshay Agrawal、Riley Murrayら現maintainerとStephen Boyd、Eric Chuら歴史contributorを列挙し、governance document(cvxpy/org governance.md)へリンクしています。Citing節は学術利用者にcvxpy.org/resources/citing/index.html、産業利用者にDiscordかメール連絡を勧めています。
code of conduct遵守がCommunity節で求められ、Issues節はcorrectness、documentation、performance、feature requestsを歓迎と明記しています。contributor向けにinstall-from-sourceへのリンクがあり、パッチ提出前のビルド確認がREADME上の前提です。
README例をprob.solve()まで実行する
評価手順は、Python 3.11以上の仮想環境でpip install cvxpyを実行し、READMEの最小二乗例をscript.pyとして保存、python script.pyでprob.solve()結果、x.value、constraints[0].dual_valueをログに残すことです。失敗時はpip show cvxpyとpip show clarabel scs osqp highsで版本をREADME下限と照合します。
別ソルバを試すならtutorial/solversのchoosing-a-solverページで指定方法(solver=OSQPなど)を読み、同じ問題で解時間とstatusを比較表にします。DCPエラーが出るモデルはIssuesに最小再現を投げる前にtutorialのDCP節を参照します。採用記録にはcvxpy版本、Python版本、使用ソルバ名、solve status、objective valueを残してください。
モデリング層とexample libraryへの入口
READMEは繰り返しCVXPYがソルバではないと述べ、Clarabel、SCS、OSQP、HiGHSへの変換と求解を外部に委ねます。利用者はcp.Variable、cp.Minimize、制約リスト、cp.ProblemというPython APIでモデルを記述し、prob.solve()一呼び出しで数値解と双対値を取り出します。
Getting started節はofficial tutorial、example library、API referenceの三リンクを並べ、example libraryはcvxpy.org/examplesにあります。benchmarksバッジはcvxpy/benchmarksへの入口を示唆し、Contributing節もbenchmark追加を具体例に含みます。
この分割は同じモデルを異なるソルバへ差し替えて比較する研究ワークフローに適しています。追加ソルバはtutorial/solversに列挙されるが別途インストールが必要です。Dependencies節はPython三点一一以上、NumPy二点零点零以上など下限版本を示します。
Stanford起源から多国コミュニティへ移行した経緯、DiscordとGitHub Discussionsの使い分け、DCP失敗時のStackOverflowタグcvxpy案内はREADMEが示す運用指針です。open issue一百九十件超は活発さの指標であり、個別バグはissue trackerで確認します。採用記録にはREADME例のobjective値、制約双対値、使用ソルバ名、参照tutorial URLを残してください。v1.9.2リリース日二〇二六年八月八日を固定する場合はGitHub Releasesからwheel hashも保存します。
編集部の結論
数理モデルを標準形ではなく数式に近い形で書きたいPython利用者や、複数オープンソースソルバを切り替えたい研究者にはCVXPYが合います。ソルバ自体や大規模非凸混合整数をCVXPYだけに任せたい場合はREADMEのスコープ外です。採用前にpip install cvxpy後、READMEのcp.Problem(objective, constraints)例を実行し、prob.solve()とx.value、constraints[0].dual_valueを記録してください。
コミュニティノート