Changelog#
Version 1.2.4#
Highlights#
Added
time_limitsupport to model, portfolio, and subprocess solve APIs.Added Aperture solver.
Added CoreTrail solver.
Fixed some ValueError issues when comparin out of domain.
Version 1.2.3#
Highlights#
Fixed comparison operators that could evaluate to
TrueorFalseinstead of a model constraint.Unsupported comparisons now raise clear errors.
Added numeric PB ordering comparisons.
Version 1.2.2#
Highlights#
Fixed soundness issues in mixed Boolean/
IntVarcomparisons and Big-M constraints with negated indicators.
Version 1.2.1#
Highlights#
Disabled preprocessing for UWrMaxSATCompetition due to crashes.
Disabled CGSS PMRES due to soudnness issues.
Started incorporating MaxSATRegressionSuite: tobipaxe/MaxSATRegressionSuite
Fixed
IntVector.all_differentoff by one error (not a soudness isseu, but could raise an error preventing a valid model from solving).Moved SoftRef soft registration and updates under
m.obj.Improved the form
X + Y <= Z + cfast path with a better encoding.Refined Big-M bool sum cases.
Improved
IntVar == sum(unit-bools)with a count ladder builder.Reduced formula size in
IntVar + bool-sumfast path.Improved
sum_var()for mixed integer widths.Improved
cumulative(..., backend="auto")backend selection and overhead.Fixed
IntSetVar.contains(IntVar)on upper bounds.Fixed expression decoding that could inject new vars.
Raise on non nullable enums with empty choice domains.
Fixed
IntVector[IntVar]to use absolute index values.Fixed routing for
IntSetVaralgebra operations.Fixed incremental routing for certain constraints.
Stopped
IntSetVaralgebra ops from mutating model too early.Added decoding for multiplexer and index integer element expressions.
Fixed
IntSetVector.is_in(...)for set-valued rows.Added
EnumVar.is_in_or_none(...)for nullable enum subset checks.Deferred
IntSetVar != ...andIntVector != IntVectoruntil commit.Improved internal helper memoization.
Improved encoding of
IntSetVar.contains(IntVar).Improved
sum_expr(...)performance.Improved performance of
ClauseGroup.extend(..., inplace=True)andClause.append(..., inplace=True).Improved performance of
PBExpr.add/sub(..., inplace=True).Improved performance of
m.obj.add(...).Registered implied AMO/EO structure from cardinalities for usage of PB(AMO).
Switched enum domains to
seqcounter(pairwise up to 8).
Version 1.2.0#
Highlights#
Reimplementesd GMTO to follow original PB(AMO) paper closely.
Safer and more efficient PB(AMO) default auto-routing.
More efficient constraint merging in Model, specially when PB(AMO) auto-routing is involved.
Added MaxHS and iMaxHS support.
Heavily simplified all solver wrappers with inheritance.
Version 1.1.1#
Highlights#
Added
hermax.non_incremental.incomplete.TTOpenWBOInc, a subprocess-isolated wrapper around the TT Open-WBO-Inc variant.New encoder API
hermax.encoder.New PBAMO / structured pseudo-Boolean encoder support.
Broader modeling-layer coverage for typed collections, element constraints, sets, and integer expressions.
Integer modeling domains now use closed bounds
[lb, ub]instead of half-open bounds[lb, ub).Better export/solve convenience and more examples in the docs.
Encoder API#
Added the Encoding Layer API reference page.
Added PB(AMO) API for PBAMO and structured PB encoders.
Exposed the encoder package from Python as
hermax.encoder.
Structured PB / PBAMO#
Pseudo-Boolean support was significantly expanded.
Added PBAMO-backed structured PB encoders.
Added documented encoder families including GGPW, GMTO, GSWC, MDD, and RGGT.
Added overlap-aware structured PB compilation examples and tests.
Modeling Layer#
Improved support for typed vectors and collections.
Added clearer support for variable-index element constraints.
Expanded set-oriented modeling helpers and examples.
Broadened integer-expression coverage, including more aggregate and relation cases.
Added more cumulative and scheduling-oriented regression coverage.