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.