Skip to content

Add multi-objective supplier sourcing example (QP frontier + duals)#156

Open
cafzal wants to merge 4 commits into
NVIDIA:mainfrom
cafzal:sourcing-example
Open

Add multi-objective supplier sourcing example (QP frontier + duals)#156
cafzal wants to merge 4 commits into
NVIDIA:mainfrom
cafzal:sourcing-example

Conversation

@cafzal

@cafzal cafzal commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Multi-objective supplier sourcing example — companion to the cuopt-multi-objective-exploration skill

A new supplier_selection/ example demonstrating multi-objective Pareto-frontier exploration with cuOpt on a procurement decision — the workflow packaged as the cuopt-multi-objective-exploration skill (NVIDIA/cuopt#1355). It completes the multi-objective family alongside the #151 examples (finance QP, workforce MILP) with a supply-chain QP.

supplier_selection/supplier_sourcing_frontier_duals.ipynb (QP) — one order is split across suppliers when reliability and diversification conflict: the reliable suppliers cluster, so demanding higher reliability concentrates the order. Minimizes concentration risk wᵀ C w (a dense quadratic, built via QuadraticExpression(qmatrix=...)) subject to a fully-allocated order, a per-supplier cap, and a unit-cost budget; traces the concentration-vs-reliability frontier by ε-constraint (sweep the reliability floor) and reads each point's dual — the sensitivity d(concentration)/d(reliability), the diversification given up per added point of reliability.

sourcing frontier (concentration vs reliability, colored by active suppliers) and the reliability-floor dual

Reuses the repo's notebook idiom (GPU check → cuopt-cu12 install → solve), ships output-stripped (repo convention — every cuopt-examples notebook has 0 cell outputs; run evidence below), with self-contained synthetic data.

User testing

Built by following the skill, then run end-to-end on Colab T4, cuOpt-cu12 — clean, no API errors:

  • The ε-constraint sweep traces an 18-point frontier (reliability floor swept up to the achievable ceiling); all 18 solved to Optimal (0 PrimalFeasible). A single solve was only ever one point on it.
  • Active suppliers drop 12 → 6 as the reliability floor rises — multi-sourcing erodes as you demand reliability (shown by the point color, left panel).
  • The reliability floor's dual rises 0.103 → 10.348 as the floor climbs (the right panel) — the marginal diversification cost of reliability, steepening into the diminishing-returns / knee region.

Notes

  • Synthetic/toy data — 12 suppliers across 3 regions; this demonstrates the method, not a sourcing study.
  • Any non-Optimal (e.g. PrimalFeasible) frontier point is flagged in the sweep output; none occurred here.
  • Builds the dense concentration quadratic from the matrix (QuadraticExpression(qmatrix=...)) rather than a term-by-term loop — the scalable pattern for a dense Q.

Companion to the cuopt-multi-objective-exploration skill (NVIDIA/cuopt#1355).

cafzal added 4 commits June 17, 2026 14:57
…liability frontier + duals)

Signed-off-by: cafzal <cameron.afzal@gmail.com>
…nventions

Signed-off-by: cafzal <cameron.afzal@gmail.com>
…force sibling)

Signed-off-by: cafzal <cameron.afzal@gmail.com>
Signed-off-by: cafzal <cameron.afzal@gmail.com>
@cafzal cafzal marked this pull request as ready for review June 18, 2026 17:26
@cafzal

cafzal commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

@rgsl888prabhu new multi-objective example – supplier-sourcing QP, concentration-vs-reliability frontier + duals; same shape as the #151 examples. Ready for review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant