Skip to content

feat: make local-search arms optimize on a COP (SA annealing, objective-bound ratchet)#952

Open
rasros wants to merge 4 commits into
mainfrom
ls-portfolio
Open

feat: make local-search arms optimize on a COP (SA annealing, objective-bound ratchet)#952
rasros wants to merge 4 commits into
mainfrom
ls-portfolio

Conversation

@rasros

@rasros rasros commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Derived from #928, which framed this as an explicit feasibility-finder vs optimizer role split. This takes the opposite approach: every local-search arm optimizes on a COP, so there is no finder role to make explicit.

What changed

  • SA arms drive objective descent past feasibility. A new SourceDrivenStrategy.ownsFeasibleDescent seam lets Metropolis own the feasible-phase walk instead of the engine's greedy strict-improvement gate reverting its exploratory moves.
  • Violation-native arms (probSAT, WalkSAT, feasibility-jump) optimize a COP by repairing an objective ≤ incumbent constraint (ObjectiveBoundFactor) overlaid on the arm's problem and tightened at each incumbent, turning objective descent back into violation repair.
  • The portfolio applies this automatically in materialize: on a COP a descent-driving recipe is left as-is and every other arm gets the ratchet, so no arm bails at feasibility. A CSP leaves every arm a pure feasibility finder. No per-arm flag, no duplicate arms.

Why

On a COP the SAT-style feasibility arms discarded their accumulated landscape state at cost == 0 and handed the objective to a generic greedy tail. Each arm now optimizes with its own machinery, so the feasibility fight's information carries into the optimize phase.

Testing

  • SA anneals a small COP to its optimum; probSAT ratchets a COP to its optimum by repairing the bound factor.
  • Smoke A/B on the curated mzn-bench COP set: the arms reach feasibility and optimize (e.g. the ratchet reaches 194018 on evilshop vs plain probSAT's 237571).

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