Skip to content

feat: add experimental C++14 GVNS foundation - #2

Merged
marsguo2049 merged 2 commits into
mainfrom
feat/gvns-foundation-api-draft
Aug 25, 2026
Merged

marsguo2049 merged 2 commits into
mainfrom
feat/gvns-foundation-api-draft

Conversation

@marsguo2049

@marsguo2049 marsguo2049 commented Aug 25, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • add an experimental C++14 GVNS/VND orchestration foundation in the py2cpp4or::gvns namespace
  • define four-state neighborhood outcomes, strict minimization VND restart, sequential neighborhood change, stopping policies, injected RNG, observers, and deterministic traces
  • add a solver-independent CMake target, fully synthetic toy tests, and a minimal GCC/CMake/CTest workflow
  • synchronize repository maturity, architecture, roadmap, and verification language

Scope

This is a foundation/API draft, not a complete GVNS library. It does not add a top-level GVNS driver, problem adapters, model migration, GA or Hybrid GA code, solver integrations, datasets, benchmarks, or performance claims. The module uses only the C++14 standard library and performs no dependency downloads.

Pre-release API review

The review made the following compatibility-oriented corrections:

  • rename acceptance to StrictMinimizationAcceptance and reject non-finite objectives
  • remove the hidden default-construction requirement from OptionalValue<T>
  • define clock ticks as monotonic application-owned units and deadlines as absolute now_ticks() values with an inclusive boundary
  • define RNG ranges, zero-bound behavior, determinism, and cumulative primitive draw accounting
  • document borrowed lifetimes, synchronous observer delivery, exception propagation, and lack of implicit locking
  • fail fast for enabled neighborhoods without callbacks, enabled callbacks returning disabled, and stopped decisions without a reason
  • use neutral run_id and neighborhood-level naming
  • make trace work accounting cumulative and locale-independent; keep the text format explicitly non-stable and non-serializing

Verification

  • GCC 6.3 / MinGW: configure and build passed; CTest 1/1 passed
  • MSVC 19.44 / Visual Studio 2022 x64: configure and build passed; CTest 1/1 passed
  • synthetic executable: 8/8 toy scenarios passed
  • public headers: standalone C++14 syntax checks passed
  • privacy review: no private identifiers, business terminology, local absolute paths, source hashes, proprietary configuration, or commercial solver dependency detected
  • C++ ownership scan: no raw allocation/deallocation or namespace pollution detected
  • git diff --check: passed
  • existing Apache-2.0 license: unchanged
  • clang-tidy and cppcheck were not installed in the local verification environment

Commands:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
ctest --test-dir build -C Release --output-on-failure

Remaining roadmap risks

  • acceptance remains minimization-only
  • clock units and RNG algorithms remain application choices within the documented contracts
  • trace text, status vocabulary, observer exception policy, and thread-safety guarantees are not compatibility-stable
  • no install/export package, stable ABI, Python counterpart, or complete top-level GVNS orchestration is provided

The implementation is ready for public review as an experimental foundation; these remaining items are roadmap work rather than release blockers.

@marsguo2049
marsguo2049 marked this pull request as ready for review August 25, 2026 06:31
@marsguo2049
marsguo2049 merged commit 70f0d06 into main Aug 25, 2026
1 check passed
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