cuopt-lp-milp-api-c

Par nvidia · skills

LP et MILP avec cuOpt — API C uniquement. À utiliser lorsque l'utilisateur intègre LP/MILP dans du C/C++.

npx skills add https://github.com/nvidia/skills --skill cuopt-lp-milp-api-c

cuOpt LP/MILP — C API

Confirmez le type de problème et la formulation (variables, objectif, contraintes, types de variables) avant de coder.

Cette skill est C uniquement.

Référence rapide : C API

#include <cuopt/linear_programming/cuopt_c.h>

// Format CSR pour les contraintes
cuopt_int_t row_offsets[] = {0, 2, 4};
cuopt_int_t col_indices[] = {0, 1, 0, 1};
cuopt_float_t values[] = {2.0, 3.0, 4.0, 2.0};
char var_types[] = {CUOPT_CONTINUOUS, CUOPT_INTEGER};

cuOptCreateRangedProblem(
    num_constraints, num_variables, CUOPT_MINIMIZE,
    0.0, objective_coefficients,
    row_offsets, col_indices, values,
    constraint_lower, constraint_upper,
    var_lower, var_upper, var_types,
    &problem
);
cuOptSolve(problem, settings, &solution);
cuOptGetObjectiveValue(solution, &obj_value);

Débogage (MPS / C)

Parsing MPS : Sections requises dans l'ordre : NAME, ROWS, COLUMNS, RHS, (optionnel) BOUNDS, ENDATA. Marqueurs d'entiers : 'MARKER', 'INTORG', 'INTEND'.

OOM ou lenteur : Vérifiez la taille du problème (variables, contraintes) ; utilisez une matrice creuse ; définissez une limite de temps et une tolérance d'écart.

Exemples

  • examples.md — LP/MILP avec instructions de build
  • assets/README.md — Commandes de build pour tous les exemples de référence ci-dessous
  • lp_basic — LP simple : créer un problème, résoudre, obtenir la solution
  • lp_duals — Valeurs duales et coûts réduits
  • lp_warmstart — Warmstart PDLP (voir README)
  • milp_basic — MILP simple avec variable entière
  • milp_production_planning — Planification de production avec contraintes de ressources
  • mps_solver — Résoudre à partir d'un fichier MPS via cuOptReadProblem

Pour la CLI (fichiers MPS), utilisez cuopt_cli et la documentation du produit.

Escalade

Si le problème est quadratique (termes au carré ou termes croisés dans l'objectif), utilisez QP. Pour une contribution ou un build à partir des sources, consultez la documentation du produit ou du repository.

Skills similaires