You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Correct quadratic-constraint claims in formulation skill (NVIDIA#1407)
Corrects a stale claim in the concepts-only `cuopt-numerical-optimization-formulation` skill: it stated quadratic constraints are unsupported, but cuOpt supports **convex quadratic constraints** (PSD, inequality) via second-order cones, with non-convex and equality forms still unsupported. Three concepts-level edits (no API symbols): the LP/MILP/QP constraints row, the constraints formulation question, and one line noting duals aren't returned when the model has quadratic constraints.
Verified in source (`tests/socp/test_socp.py`, `barrier/translate_soc.hpp`). Follows NVIDIA#1393; companion to NVIDIA#1408 (API dual scope). `validate_skills.sh` passes; generated artifacts regenerate via NVSkills-Eval.
Authors:
- Cameron Afzal (https://github.com/cafzal)
Approvers:
- Ramakrishna Prabhu (https://github.com/ramakrishnap-nv)
URL: NVIDIA#1407
If the objective is purely linear, prefer LP/MILP — do not artificially introduce quadratic terms. If any variable is integer or binary, the problem is MILP regardless of the rest.
37
37
38
-
**Post-solve sensitivity (LP / QP only).** Continuous LP and QP solutions expose **dual values** (shadow prices — the marginal objective change per unit a binding constraint is relaxed: *where to invest to improve the outcome*) and **reduced costs** (for a variable the optimizer left at zero, how far it must improve to enter the solution: a *near-miss*). **MILP solutions have no duals** — integer optima are not continuous, so there are none to return. See the language-specific API skills for how to retrieve them after a solve.
38
+
**Post-solve sensitivity (LP / QP only).** Continuous LP and QP solutions expose **dual values** (the marginal objective change per unit a binding constraint is relaxed: *where to invest to improve the outcome*) and **reduced costs** (for a variable the optimizer left at zero, how far it must improve to enter the solution: a *near-miss*). **MILP solutions have no duals** — integer optima are not continuous, so there are none to return. Duals are also unavailable when the model includes quadratic constraints — the second-order cone path returns primal values only. See the language-specific API skills for how to retrieve them after a solve.
39
39
40
40
## Required formulation questions
41
41
42
42
Ask these if not already clear:
43
43
44
44
1.**Decision variables** — What are they? Bounds?
45
45
2.**Objective** — Minimize or maximize? Linear or quadratic? For QP: any squared or cross terms (x², x·y)? If maximize a quadratic, the user must negate and minimize.
46
-
3.**Constraints** — Linear inequalities/equalities? (Quadratic constraints are not supported.)
46
+
3.**Constraints** — Linear inequalities/equalities? Convex quadratic constraints (inequality only) are also supported, handled as second-order cones; non-convex or equality quadratic constraints are not.
47
47
4.**Variable types** — All continuous (LP / QP) or some integer/binary (MILP)?
48
48
5.**Convexity (QP only)** — For minimization, the quadratic form (matrix Q) should be positive semi-definite for well-posed problems.
0 commit comments