Skip to content

[Experimental work in progress] Add experimental heuristic search for Gecode 6.5 - #256

Draft
zayenz wants to merge 36 commits into
feature/open-cpfrom
feature/open-search
Draft

zayenz wants to merge 36 commits into
feature/open-cpfrom
feature/open-search

Conversation

@zayenz

@zayenz zayenz commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Add heuristic search for ordinary Gecode Space subclasses as an experimental preview for 6.5.0. Stacked on #248.

  • A*, configurable best-first search, complete anytime beam search (CABS), and progressive column search.
  • Separate ranking, admissible bounds, and optional dominance pruning. The engines are sequential and use an exact scalar integer objective.
  • Conventional CP and transition formulations of TSPTW, with benchmark instances and an independent tour checker. The 15-puzzle example also supports A* and CABS.

Enable with GECODE_ENABLE_EXPERIMENTAL=ON or --enable-experimental. Preview APIs may change. Experimental changelog entries are listed separately.

Validation on macOS covers experimental features enabled and disabled, focused ASan/UBSan checks with CBS, and independent TSPTW and puzzle optimum checks. Linux and Windows validation is pending.

Ordinary Gecode 6.x search can miss an improvement that requires search to complete a partial state. These engines compare objective values directly when accepting solutions.

The .zdev research and task records will be removed before squash merge.

@zayenz zayenz changed the title Add experimental heuristic search for Gecode 6.5 [Experimental work in progress] Add experimental heuristic search for Gecode 6.5 Oct 13, 2026
@zayenz
zayenz force-pushed the feature/open-search branch 5 times, most recently from 10fad23 to 4b24088 Compare October 14, 2026 12:11
@zayenz
zayenz force-pushed the feature/open-search branch from 4b24088 to 489e4c2 Compare October 15, 2026 12:49
@zayenz
zayenz force-pushed the feature/open-search branch 4 times, most recently from 96d44c7 to b599534 Compare October 15, 2026 14:52
zayenz added 17 commits October 15, 2026 17:06
Zdev-Change-Id: Z3a84f10967609b95b8d767472cd476f6d65d3b852ac05f06ffbd7ee533e2dff6
Zdev-Change-Id: Zf7164128cb1c60f3502e6dd904bfae78a1c067fc6b1e32fac4d8d76ab5c76bec
Zdev-Change-Id: Zc598681fcab190d75394270ba287657f523f67370c84776cda96117c3db3269a
Zdev-Change-Id: Z7b809ac2be0294a753b5f04da7261e3f03135f5864c0715cc88211329634cfea
…entries

Zdev-Change-Id: Z6c14976b91b4983c41b4d8aba39c65183b90baac364c11cd459868c3d515f7ac
Zdev-Change-Id: Z3b4a698a6fbd8abd10a3b7bdc565ae3f5b3308cd222245962cbcc7c6d8f503cf
Zdev-Change-Id: Z3b6d8222c576b70bbe9e85ec7b92b5365cefe2eaa836ed4adf89b501642550be
Invalidate completion witnesses after dependent decisions and incumbent cuts, propagate nested stop/statistics through ordinary search, and handle prepared terminal spaces. Compact CABS dominated candidates once.

Use the existing exact scalar guidance for native incumbent acceptance and remove the extracted Gecode 7 comparison API. Preserve ordinary Gecode 6.x model compatibility and document its existing hidden-completion admission limitation.

Independently verified experimental ON 479/479, OFF 475/475, focused and fresh ASan+UBSan 16/16, native examples, independent tiny TSPTW checks and CADDS witness.

Zdev-Change-Id: Z7ac9860f3c380e35cd3ad5e9e7581b300387e90413a48deae4c40e1d6614e440
Remove kernel dependencies on search types and use a preparation driver with kernel propagation statistics. Pack restriction notification into existing Space control state, and use persistent brancher lifecycle hooks.

Validated experimental ON/OFF checks, focused completion/search checks, ASan+UBSan, kernel-only linkage, source inventory and examples. Independent Astra high review passed.

Zdev-Change-Id: Zd9f8a980386fc4e0ee6d9c5087730288f4ace2dd62e3b52d7e837fe0311b69e8
Notify branchers through PostInfo when a cached Home posts a new restriction. Exercise the resulting false-solution case in the existing completion fixture.

Zdev-Change-Id: Z2b63a02c2beaea98e961b403daf9d21faa5b48bd9f2a48f055d02e2bf02d937e
Reject a contradicted optimum even when the cheaper checked tour comes from a failed run. Keep failed runs excluded from performance comparisons.

Zdev-Change-Id: Z177814b6014bcfe8af3cbd9f8be9308b0e620c4ae4485487ab77125935d2a342
Zdev-Change-Id: Z4d366a03b245f7a3abeb3df97fa01dd5a57aaab19774146e8029115ac9bacefc
Zdev-Change-Id: Z5e0354b9ca7c3acb8bafb8a35ba21177068604db5820513e8a0723839ae04a64
Zdev-Change-Id: Z1f66b0a7fe00cc498450492b8845cf17c3aef7550ecdf9d3d1e39337de916690
zayenz added 19 commits October 15, 2026 17:06
Zdev-Change-Id: Za2ccac84325ef9977c45b27488d8e27a764851fe8ad4ea800abcbe71e448fcb1
Zdev-Change-Id: Z8250ae07d6ba9ac0ea51ee13ba4b2a941119b65f72344f3fb2277034a51cd169
Zdev-Change-Id: Z17833b1b93100a39353a843fda7c32be690aaef1321f2a08d9832c1d2a32accb
Zdev-Change-Id: Z2c89afed43b151d906b16e91f0f13f8baa69bb77d0ed9b81d51b1193fd69066c
Zdev-Change-Id: Zcc1487603e0b94ece3dae6c00772e0eddaaec4de507909a74213977161725ea1
Zdev-Change-Id: Z88c7680506b777813639342d75a33f1506023620484baf105835b54619f0ea89
Zdev-Change-Id: Zf72514dc0d043eb83ea6e7e6ba0a8d9d9758646927c111172976b8d5d22c78b1
Zdev-Change-Id: Z5777b3bbecca211373c67eb5228664d2921e554419eee1c22fe7e9f2d0ea1c11
Zdev-Change-Id: Z506a8555011eacc185b7a40c980497a6f88542839e5fc37e1257469312744c06
Zdev-Change-Id: Z2898d3423c97c5cfc8267671fd6bcfb3e2d56a10016cffa403f4a762741769dd
Zdev-Change-Id: Z59d5dfa940b406e93b0180b04d446ba83b224e6a3080a4832ab5e62a42e90b62
Zdev-Change-Id: Z5ce69c135529b2b0730842d041d2296e6275de4ab510dd212634be715fa4a015
Zdev-Change-Id: Z2ba09ac5f1ef224ac3c9afae492a99236863f597d62577c6a38cee07c0ea0099
Zdev-Change-Id: Z75638ccb43a353f9f2cf67fca6c61f2ba2efc3c4ab24694fdce0dcc00ad4b294
Zdev-Change-Id: Ze1c84cb92b8bba8587538d18f901c6411b3af8938c73c35949f19c9fbc2deb4d
Zdev-Change-Id: Z475f4654f5e5d513b7f96c11e5e14fd76a91b305116d68507fa87511f46d13b0
Zdev-Change-Id: Z0657bd3f2f3328edd26a6358c6a4e6ec9af7e855e780f49551bc21532f0df656
Zdev-Change-Id: Z8abcd60d6b2a946c1753ee88047d71c58e9dc1a4bdd3f89be3f8eea021515f40
Zdev-Change-Id: Z689ff9f06d20fe7b5f7f5068434756cd36e2bc5ab31f2f5a01f85d07df84c2f6
@zayenz
zayenz force-pushed the feature/open-search branch from b599534 to bfe3f2f Compare October 15, 2026 15:10

This branch has not been deployed

No deployments
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