cuopt-numerical-optimization-api-c について
cuOpt C API で LP、MILP、QP を解くための Agent Skill です。API 呼び出し順、QP の制約、双対値の取得、デバッグ方法を説明し、C の例を案内します。
主な機能
- 01C による LP、MILP、QP の求解
- 02API 呼び出し順の提示
- 03QP の定式化制約
- 04LP/QP の双対値と被約費用の取得
- 05MPS 解析と問題の調査
活用シーン
- 01C で LP または MILP の求解処理を実装
- 02連続変数の QP を解く
- 03LP の双対値と被約費用を取得
- 04MPS 解析や処理性能の問題を調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nvidia/ skills --skill cuopt-numerical-optimization-api-cインストール後、Claude Code で/cuopt-numerical-optimization-api-cを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigassets/README.mdassets/lp_basic/lp_simple.cREADME.mdassets/lp_duals/lp_duals.cREADME.mdassets/lp_warmstart/README.mdassets/milp_basic/milp_simple.cREADME.mdassets/milp_production_planning/milp_production.cREADME.mdassets/mps_solver/mps_solver.cREADME.mdassets/mps_solver/data/sample.mpsevals/evals.jsonreferences/examples.md詳細
cuOpt 数理最適化 — C API
cuOpt C API を使用して LP、MILP、QP の問題を解きます。3 種類すべてで同じライブラリ、ヘッダー、ビルドパターン、主要な呼び出し(cuOptCreate*Problem、cuOptSolve、cuOptGetObjectiveValue)を使用します。QP では、二次目的関数を作成する呼び出しが API に追加されます。
コーディングを始める前に、問題の種類と定式化(変数、目的関数、制約、変数の型)を確認してください。
このスキルは C のみに対応しています。
API 呼び出しの順序
LP/MILP の場合、C のエントリーポイントは次の順序で呼び出します。cuOptCreateRangedProblem(sense は CUOPT_MINIMIZE / CUOPT_MAXIMIZE、制約行列は row_offsets / col_indices / values を使った CSR 形式、var_types は CUOPT_CONTINUOUS / CUOPT_INTEGER マクロを使った char 配列)→ cuOptSolve(problem, settings, &solution) → cuOptGetObjectiveValue(solution, &obj_value) → 対応する cuOptDestroy* 呼び出し。<cuopt/mathematical_optimization/cuopt_c.h> をインクルードしてください。ビルド手順を含む、順序どおりの完全なコードは references/examples.md を参照してください。
C API による QP(ベータ版)
QP では LP/MILP と同じライブラリ、インクルードパス、ライブラリパス、ビルドパターンを使用します。異なるのは問題作成の呼び出しだけで、二次目的関数を受け取ります。QP 固有の作成/求解呼び出しについては cuOpt C ヘッダー(cpp/include/cuopt/mathematical_optimization/)を、QP のエンドツーエンドの例についてはリポジトリのドキュメント docs/cuopt/source/cuopt-c/lp-qp-milp/ を参照してください。
QP のルール:
- 最小化のみ(
CUOPT_MINIMIZE)。f(x)を最大化するには、目的関数の係数と Q のエントリーの符号を反転します。 - 連続変数のみ — すべての変数に
CUOPT_CONTINUOUSを設定してください。整数 QP はサポートされていません。 - 凸問題では、Q は PSD(半正定値)である必要があります。
双対値(LP/QP)
cuOptGetDualSolution と cuOptGetReducedCosts は、LP と QP の双対値および被約費用を返します。二次制約を含む問題では返されず(配列には NaN が設定されます)、制約がすべて線形の場合にのみ読み取ってください。呼び出し手順については assets/lp_duals を参照してください。
デバッグ(MPS/C)
MPS の解析: 必須セクションは次の順序です。NAME、ROWS、COLUMNS、RHS、(任意の)BOUNDS、ENDATA。整数マーカー:'MARKER'、'INTORG'、'INTEND'。
OOM または処理が遅い場合: 問題の規模(変数、制約)を確認し、スパース行列を使用して、時間制限とギャップ許容値を設定してください。
例
- examples.md — LP/MILP とビルド手順
- assets/README.md — 以下のすべてのリファレンスコードのビルドコマンド
- lp_basic — シンプルな LP:問題の作成、求解、解の取得
- lp_duals — 双対値と被約費用
- lp_warmstart — PDLP のウォームスタート(README を参照)
- milp_basic — 整数変数を含むシンプルな MILP
- milp_production_planning — リソース制約付きの生産計画
- mps_solver —
cuOptReadProblemを使って MPS ファイルから求解
CLI(MPS ファイル)の場合は、cuopt_cli と製品ドキュメントを使用してください。
エスカレーション
コントリビューションやソースからのビルドについては、製品またはリポジトリのドキュメントを参照してください。