mcpField
C
cuopt-numerical-optimization-api-c

cuopt-numerical-optimization-api-c

github.com/nvidiaデータ・データベース3.8k1.3k 回インストール今日更新
リポジトリ

cuopt-numerical-optimization-api-c について

cuOpt C API で LP、MILP、QP を解くための Agent Skill です。API 呼び出し順、QP の制約、双対値の取得、デバッグ方法を説明し、C の例を案内します。

主な機能

  1. 01C による LP、MILP、QP の求解
  2. 02API 呼び出し順の提示
  3. 03QP の定式化制約
  4. 04LP/QP の双対値と被約費用の取得
  5. 05MPS 解析と問題の調査

活用シーン

  1. 01C で LP または MILP の求解処理を実装
  2. 02連続変数の QP を解く
  3. 03LP の双対値と被約費用を取得
  4. 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.md
skill-card.md
skill.oms.sig
assets/
README.md
assets/lp_basic/
lp_simple.c
README.md
assets/lp_duals/
lp_duals.c
README.md
assets/lp_warmstart/
README.md
assets/milp_basic/
milp_simple.c
README.md
assets/milp_production_planning/
milp_production.c
README.md
assets/mps_solver/
mps_solver.c
README.md
assets/mps_solver/data/
sample.mps
evals/
evals.json
references/
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 と製品ドキュメントを使用してください。

エスカレーション

コントリビューションやソースからのビルドについては、製品またはリポジトリのドキュメントを参照してください。

コメント