|
Gecode 6.4.0
|
| API | Meaning and current scope |
|---|---|
| Gecode::Optimize::SolveSession | Persistent numerical backend state, compatible LP basis reuse and revalidated previous MIP hints; supports observed/basis solves. Reuse is reported, not assumed to improve runtime. |
| Gecode::Optimize::solve_lexicographic | Highest-priority-first linear objectives, checked retention rows and explicit degradation. Unfinished stages are not a lexicographic optimum. |
| Gecode::Optimize::analyze_conflict | Numerical deletion-filter conflict groups over original rows/bounds/domains; irreducibility is relative to the documented groups, not a minimum-cardinality conflict or exact proof. |
| Gecode::Optimize::relax_feasibility | Selected row/bound sides with positive L1 penalties in a private model; repair residuals do not make the unchanged original model feasible. |
| Gecode::Optimize::solve_pool | One representative per finite discrete projection; established ranked prefix is separate from a final unranked candidate and from projection exhaustion. |
| Gecode::Optimize::presolve_integer | Explicit checked bounded-integer reductions with owning reconstruction. A presolve fixpoint is not original optimality; postsolve returns a checked original witness without transferring a reduced-model global bound. |
| Gecode::Optimize::solve_scenarios | Serial sparse objective/bound overrides on ordinary Continuous/Integer/Binary linear models under one batch allowance; no shared search tree. Explicit Native uses its one-shot route. |
| Gecode::Optimize::solve_quadratic | Separate weighted-square continuous convex/concave model and original-coordinate checks; see QuadraticModel and QuadraticOptions. |
Workflow support is narrower than the base Model vocabulary. Consult each entry point before combining semis, globals, indicators, guarantees, starts or multistage node limits. Unsupported combinations fail explicitly; a sequence of solves does not imply a global consumed-node or proof contract it does not implement. Private model results retain explicit mappings to original slots.
Gecode::Optimize::read_model and Gecode::Optimize::write_model support a strict numerical LP/free-MPS subset. Unsupported dialect/metadata is rejected. Export performs a checked semantic round trip before atomic replacement; it does not silently omit indicators or globals. This is not full support for every vendor extension.
The opt-in fzn-gecode-optimize driver uses immutable raw FlatZinc capture, Gecode::Optimize::compile_flatzinc and an independent original-source checker before publishing output. Its admitted integer linear, Boolean, reified and typed-global subset includes all-different, element, table/holey domains, explicit-offset circuit, fixed four-argument cumulative and literal-parameter six-argument Regular. Predicate signatures, annotation forms, alias/domain semantics and finite resource admission are checked explicitly. Other predicates or parameter forms may be rejected even when the original fzn-gecode driver supports them.
The separate experimental MiniZinc registration invokes this driver in –minizinc mode. Its compiler library lowers supported forms and preserves explicit rejections elsewhere; it does not change the default registration. The standard -t milliseconds convention belongs to that mode: -t 0 means no limit, whereas the direct –time-limit 0 option requests an immediate limit. Ordinary incomplete MiniZinc output uses protocol status and exit zero; malformed/unsupported inputs remain errors.
The installed gecode/optimize/c_api.h and shared Gecode::optimize_c target provide a versioned C surface. The Python 3.9+ ctypes package is in python/; it loads a built library and does not download a solver at runtime. Delivered bindings cover model/bulk edits, logic/globals including Regular, sessions, complete native starts, solution pools, feasibility repair, scenarios and LP observations/basis/evidence/sensitivity. C++ API availability alone does not imply a matching binding: standalone lexicographic objectives, conflict analysis, integer presolve and the explicit native neighborhood API remain C++ only in this checkpoint. C handles and owning result objects have explicit close/destroy lifetimes; follow the header's counted-buffer and version fields.