Skip to content

crossover:v0; first simple version for feedback#56

Draft
charles-vzf wants to merge 4 commits into
JuliaDecisionFocusedLearning:mainfrom
charles-vzf:crossover-13
Draft

crossover:v0; first simple version for feedback#56
charles-vzf wants to merge 4 commits into
JuliaDecisionFocusedLearning:mainfrom
charles-vzf:crossover-13

Conversation

@charles-vzf

@charles-vzf charles-vzf commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

Add V1 post-solve crossover (threshold snap + implied bounds) Refs #13

Post-OPTIMAL crossover for PDLP: snap primal coordinates near finite box bounds, tighten implied bounds from equality rows, rollback if KKT residuals regress. Controlled by CrossoverParameters on Algorithm (enabled by default).

V1 is not a basic-vertex crossover (unlike cuOpt): it helps near-bound / implied-bound cases (e.g. toy_lp) but is usually a no-op when variables stay strictly interior. Lightweight first step toward MIP-ready solutions.

Also realized a small bench compared to cuopt:
speed_comparison
I am planning a more advanced version cuopt-like after feedbacks

@codecov

codecov Bot commented Jun 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 86.28319% with 31 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/components/crossover.jl 87.70% 23 Missing ⚠️
src/components/termination.jl 0.00% 6 Missing ⚠️
src/algorithms/common.jl 93.10% 2 Missing ⚠️
Files with missing lines Coverage Δ
ext/CoolPDLPCUDAExt.jl 100.00% <100.00%> (ø)
src/CoolPDLP.jl 100.00% <ø> (ø)
src/algorithms/common.jl 87.01% <93.10%> (+5.38%) ⬆️
src/components/termination.jl 44.00% <0.00%> (-11.00%) ⬇️
src/components/crossover.jl 87.70% <87.70%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Charles Vielzeuf added 4 commits June 8, 2026 08:54
Run effective bounds on device via row kernels (CSR/ELL) with atomic bound
merging, keep CSC on CPU, and vectorize crossover_n_changed so docs and CI
GPU tutorial examples no longer hit scalar indexing errors.
Buildkite runs cuSPARSE CuSparseMatrixCSR solves; dispatch crossover row
kernels via a thin wrapper in CoolPDLPCUDAExt.
Add unit tests for implied-bound branches, backend agreement, pipeline
consistency, and optional CUDA coverage. Replace in-kernel atomic bound
updates with row scan plus host merge so CuSparseMatrixCSR matches CSC/JL
results on equality rows.
@gdalle gdalle marked this pull request as draft June 8, 2026 08:40
@gdalle gdalle self-requested a review June 8, 2026 08:40
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