Mark MILP as beta; add QCQP and SOCP to README#1384
Conversation
Update the README Supported APIs and intro to reflect 26.06 capabilities: mark Mixed Integer Linear Programming (MILP) as beta, and add Quadratically Constrained Quadratic Programming (QCQP) and Second-Order Cone Programming (SOCP) as beta to the C API and Python sections. The intro no longer lists MILP among the GA strengths. Server section is left unchanged aside from the MILP beta label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
List each numerical optimization feature on its own bullet in the Python section instead of grouping them on one line, so the (beta) label is unambiguous per feature (matching the C API section). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe README and documentation were updated to mark MILP, QCQP, and SOCP as beta-supported and to revise Supported APIs (C, Python, Server) to add QCQP (beta) and SOCP (beta) and mark MILP as (beta) where applicable. ChangesProduct documentation for supported optimization problems
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@README.md`:
- Around line 33-34: The README’s C API support list currently lists QCQP and
SOCP but the canonical API docs only document LP/MILP/QP; update the C API
section to match the canonical source by either removing the QCQP and SOCP
bullets from the C API support list (symbols: "QCQP", "SOCP", "C API support
list") or add a clear qualifier stating these are experimental/new and point
readers to the authoritative .rst-based docs (mention ".rst" as canonical
source) with a short note. Ensure the README text and the C API bullet list (the
two lines mentioning QCQP/SOCP) are synchronized with the upstream .rst
documentation.
- Line 39: Update the README line containing "Linear Programming (LP) and
Quadratic Programming (QP); Mixed Integer Linear Programming (MILP) (beta),
Quadratically Constrained Quadratic Programming (QCQP) (beta), and Second-Order
Cone Programming (SOCP) (beta)" to indicate that QCQP and SOCP Python support is
CVXPY-only; specifically, modify that fragment so QCQP (beta) and SOCP (beta)
are followed by a parenthetical qualifier like "(CVXPY-only)" or similar,
ensuring the sentence still lists LP, QP, MILP (beta) as before and only flags
QCQP and SOCP as limited to CVXPY.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: c039c46f-2ef9-415a-83cd-4de5cfeb0282
📒 Files selected for processing (1)
README.md
| - Python support | ||
| - Routing (TSP, VRP, and PDP) | ||
| - Linear Programming (LP), Mixed Integer Linear Programming (MILP) and Quadratic Programming (QP) | ||
| - Linear Programming (LP) and Quadratic Programming (QP); Mixed Integer Linear Programming (MILP) (beta), Quadratically Constrained Quadratic Programming (QCQP) (beta), and Second-Order Cone Programming (SOCP) (beta) |
There was a problem hiding this comment.
Python QCQP/SOCP statement needs scope qualifier (CVXPY-only).
This line reads as broad Python API support, but the provided convex-features docs state QCQP/SOCP are currently CVXPY-only. Please qualify that limitation inline to avoid misleading users.
Suggested wording
- - Linear Programming (LP) and Quadratic Programming (QP); Mixed Integer Linear Programming (MILP) (beta), Quadratically Constrained Quadratic Programming (QCQP) (beta), and Second-Order Cone Programming (SOCP) (beta)
+ - Linear Programming (LP) and Quadratic Programming (QP); Mixed Integer Linear Programming (MILP) (beta), and Quadratically Constrained Quadratic Programming (QCQP) (beta) / Second-Order Cone Programming (SOCP) (beta) via CVXPY📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Linear Programming (LP) and Quadratic Programming (QP); Mixed Integer Linear Programming (MILP) (beta), Quadratically Constrained Quadratic Programming (QCQP) (beta), and Second-Order Cone Programming (SOCP) (beta) | |
| - Linear Programming (LP) and Quadratic Programming (QP); Mixed Integer Linear Programming (MILP) (beta), and Quadratically Constrained Quadratic Programming (QCQP) (beta) / Second-Order Cone Programming (SOCP) (beta) via CVXPY |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` at line 39, Update the README line containing "Linear Programming
(LP) and Quadratic Programming (QP); Mixed Integer Linear Programming (MILP)
(beta), Quadratically Constrained Quadratic Programming (QCQP) (beta), and
Second-Order Cone Programming (SOCP) (beta)" to indicate that QCQP and SOCP
Python support is CVXPY-only; specifically, modify that fragment so QCQP (beta)
and SOCP (beta) are followed by a parenthetical qualifier like "(CVXPY-only)" or
similar, ensuring the sentence still lists LP, QP, MILP (beta) as before and
only flags QCQP and SOCP as limited to CVXPY.
There was a problem hiding this comment.
The "CVXPY-only" note in convex-features.rst is scoped to third-party modeling languages (the AMPL/CVXPY/GAMS/JuMP/PuLP table), not the native Python SDK. The native SDK exposes quadratic constraints directly via data_model.set_quadratic_constraints / get_quadratic_constraints (python/cuopt/cuopt/linear_programming/data_model/data_model.py), so QCQP/SOCP are not CVXPY-only here. Adding a "(CVXPY-only)" qualifier would be inaccurate, so leaving this line as-is.
There was a problem hiding this comment.
@rgsl888prabhu, thanks for the clarification — you're right. My review comment was incorrect. The convex-features.rst "CVXPY-only" note is scoped to the third-party modeling language integrations table, not the native Python SDK. Since the SDK directly exposes QCQP/SOCP through set_quadratic_constraints / get_quadratic_constraints, adding a "(CVXPY-only)" qualifier to the README's Python support line would be misleading. The current wording is correct as-is.
✏️ Learnings added
Learnt from: rgsl888prabhu
Repo: NVIDIA/cuopt PR: 1384
File: README.md:0-0
Timestamp: 2026-06-03T18:09:10.018Z
Learning: In NVIDIA/cuopt, QCQP and SOCP support in the Python API is NOT limited to CVXPY. The "CVXPY-only" note in `docs/cuopt/source/convex-features.rst` is scoped solely to the third-party modeling languages table (AMPL/CVXPY/GAMS/JuMP/PuLP). The native Python SDK exposes quadratic constraints directly via `data_model.set_quadratic_constraints` and `get_quadratic_constraints` in `python/cuopt/cuopt/linear_programming/data_model/data_model.py`. Do not add a "(CVXPY-only)" qualifier when documenting Python-level QCQP/SOCP support.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
Learnt from: akifcorduk
Repo: NVIDIA/cuopt PR: 779
File: cpp/include/cuopt/linear_programming/mip/solver_stats.hpp:36-40
Timestamp: 2026-01-28T15:32:54.183Z
Learning: C++ headers under cpp/include/cuopt are internal/intermediate infrastructure, not public-facing. The officially supported public APIs for cuOpt are C (via cuopt_c.h) and Python. Documentation and breaking change requirements apply to those public APIs, not to internal C++ classes.
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-29T00:38:03.302Z
Learning: Modify, build, test, debug, and contribute to cuOpt internals using `skills/cuopt-developer/`, including C++/CUDA, Python, server, and CI work; for VRP dimension work, also read `skills/cuopt-developer/references/vrp_skills.md`
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2026-05-29T18:17:08.027Z
Learning: Applies to cpp/include/cuopt/linear_programming/cuopt_c.h : Flag any change to `cpp/include/cuopt/linear_programming/cuopt_c.h` as ABI-sensitive
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-29T00:38:03.302Z
Learning: User-facing skills must be organized under `skills/cuopt-user-rules/` for end users calling cuOpt (routing, LP, MILP, QP, install, server), not under internals directories like `skills/cuopt-developer/`
Learnt from: chris-maes
Repo: NVIDIA/cuopt PR: 500
File: cpp/tests/linear_programming/c_api_tests/c_api_test.c:1033-1048
Timestamp: 2025-12-06T00:22:48.638Z
Learning: In cuOPT's quadratic programming API, when a user provides a quadratic objective matrix Q via set_quadratic_objective_matrix or the C API functions cuOptCreateQuadraticProblem/cuOptCreateQuadraticRangedProblem, the API internally computes Q_symmetric = Q + Q^T and the barrier solver uses 0.5 * x^T * Q_symmetric * x. From the user's perspective, the convention is x^T Q x. For a diagonal Q with values [q1, q2, ...], the resulting quadratic terms are q1*x1^2 + q2*x2^2 + ...
Learnt from: chris-maes
Repo: NVIDIA/cuopt PR: 1247
File: docs/cuopt/source/cuopt-c/lp-qp-milp/lp-qp-milp-c-api.rst:54-58
Timestamp: 2026-05-26T22:55:07.739Z
Learning: For cuOpt (NVIDIA/cuopt), the external docs site is generated directly from the `.rst` files checked into the repository (e.g., `docs/cuopt/source/**/*.rst`). Deprecation notices, migration guidance, and API documentation should be maintained in these in-repo `.rst` files — they are the canonical source for the external docs site.
Learnt from: CR
Repo: NVIDIA/cuopt PR: 0
File: .github/.coderabbit_review_guide.md:0-0
Timestamp: 2026-05-29T18:17:08.027Z
Learning: Applies to cpp/src/**/*.{cpp,cu,hpp,cuh} : Verify optimization algorithm correctness in simplex, branch-and-bound, routing heuristics, diving, and crossover
Learnt from: chris-maes
Repo: NVIDIA/cuopt PR: 1294
File: RELEASE-NOTES.md:21-23
Timestamp: 2026-06-03T00:01:21.272Z
Learning: In the NVIDIA/cuopt repository's `RELEASE-NOTES.md`, release notes from version 26.06 onward intentionally use present tense (imperative mood, e.g., "Replace SpMV calls...", "Reduce memory footprint...") rather than past tense. Do not flag present-tense verb usage in 26.06+ release note entries as a style inconsistency.
Learnt from: chris-maes
Repo: NVIDIA/cuopt PR: 1268
File: cpp/src/dual_simplex/crossover.cpp:1256-1262
Timestamp: 2026-05-21T16:19:54.072Z
Learning: In NVIDIA/cuopt crossover (cpp/src/dual_simplex/crossover.cpp), `add_slacks_to_basis` was refactored in PR `#1268` to O(m) complexity by precomputing a `slack_map` over the last `m` (slack) columns and then doing a single pass over `dependent_rows`. The old O(n * |dependent_rows|) implementation required per-iteration time-limit checks, but the new O(m) implementation does not — do not flag missing time-limit guards inside `add_slacks_to_basis`.
Keep the docs consistent with the README: present MILP as beta in the introduction (intro line, MILP section header, and the MIP Python landing page), and note that QCQP/SOCP support is in beta in the convex features page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
Replace the grouped "beta support for ..." phrasing with an explicit (beta) marker after each feature (MILP, QCQP, SOCP), matching the Supported APIs list so the beta scope is unambiguous. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
Address review feedback: the introduction intro sentence listed only MILP under beta support; add QCQP and SOCP alongside it for parity with the README and the convex features docs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
Match the README style: tag MILP, QCQP, and SOCP each with (beta) in the introduction sentence instead of the grouped "beta support for" phrasing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
| - Algebraic modeling Python API allows users to easily build constraints and objectives | ||
| - Linear Programming (LP) | ||
| - Quadratic Programming (QP) | ||
| - Mixed Integer Linear Programming (MILP) (beta) |
There was a problem hiding this comment.
I think it's useful to group the continuous problems together LP, QP, QCQP, SOCP and put MILP last since it is in a different category.
There was a problem hiding this comment.
Done in 67ed4cb — reordered the Supported APIs lists (C, Python, Server) and both intro sentences so the continuous problems (LP, QP, QCQP, SOCP) are grouped together and MILP is listed last.
| - C API support | ||
| - Linear Programming (LP) | ||
| - Mixed Integer Linear Programming (MILP) | ||
| - Mixed Integer Linear Programming (MILP) (beta) |
There was a problem hiding this comment.
Same here. I would group all the continuous problems together and then put MILP last
Address review feedback: order the Supported APIs lists and intros so the continuous convex problems (LP, QP, QCQP, SOCP) are grouped together and MILP is listed last, since it is a discrete/different category. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Ramakrishna Prabhu <ramakrishnap@nvidia.com>
chris-maes
left a comment
There was a problem hiding this comment.
LGTM. Thanks @rgsl888prabhu
|
/merge |
Updates the README Supported APIs and intro to reflect 26.06 capabilities:
(beta)(C, Python, Server).(beta)to the C API and Python sections (matchesconvex-features.rst).🤖 Generated with Claude Code