Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MiniZinc users can now select automatic, racing, ordinary or explicitly
configured native solving through the experimental Gecode Optimize registration.
The default remains structural automatic selection. Solver flags expose the
existing improvements without requiring C++ integration or search annotations.
MiniZinc often emits binary decisions as integer
0..1variables and wraps alinear objective in an auxiliary variable. Preserve the source types and checks
while recognizing those binary domains internally. Bounded automatic presolve
eliminates one safely defined affine objective auxiliary, preserves any
restrictive auxiliary bounds, and reconstructs/checks its original value. This
lets ordinary MiniZinc knapsack models reach the existing exact DP route.
Changes
racing allowances, checked LP frequency/tightening, root covers, search order,
reliability probes, Hamming neighborhoods, resource caps and diagnostics.
NativeAutoSettings/solve_native_auto_configuredand raceautomatic-candidate settings. Disabled mechanisms remain disabled in reduced
and independent component solves. Explicit settings reject incompatible modes
or missing dependencies before solving.
node budget. Optional diagnostics distinguish requested settings from actual
policy, LP/cut/probe activity, and neighborhood completion or skip reasons.
Sequential exploration/restarting can increase CPU work or solve time;
several seconds or longer may find a much better strategy for a long solve.
as build-tree flags; verify the installed relative registration in place.
The experimental native integer scope is unchanged. This does not add numerical
LP/MILP/QP MiniZinc model support, conflict learning or parallel racing. The
benchmark dashboard is outside this PR.
Validation
All 75 CTest entries pass, as do 135 real MiniZinc checks against each of
the build registration, installed registration and a checked-LP-disabled harness.
Three backend-free native coordinator tests also pass.
See the QA walkthrough for
the actual MiniZinc 2.10.1 commands, independent objective/witness checks,
algorithm activity and regression results. Tests also cover strict flag
forwarding, zero/finite budgets, output/proof markers, original domain and
objective reconstruction, and unavailable checked LP.
Review base
Depends on #1. This follow-up draft targets
codex/solver-parity-pr(884795c87), which contains the core optimization contribution. This comparison contains only the MiniZinc controls and their integration, documentation and QA. Both prerequisite and follow-up branches are published in this fork.