HULAHO

LiMiT · Deterministic workspace

Finite constraint solving and optimization

Search explicit variable domains and distinguish best-found results from proven optima.

Describe feasible assignments

Each variable needs a finite domain. Constraints can express comparisons, all-different and sums. Missing domains and unsupported operators are rejected instead of guessed.

constraints: {"variables":{"x":[1,2,3]},"constraints":[{"op":"gt","left":{"var":"x"},"right":1}]}

Add an objective

A linear objective assigns a numeric weight to each relevant numeric variable. The solver uses bounds to prune branches that cannot improve the current candidate.

optimize: {"variables":{"x":[0,1,2,3],"y":[0,1,2,3]},"constraints":[{"op":"sum","vars":["x","y"],"equals":3}],"objective":{"direction":"max","weights":{"x":2,"y":1}}}

Interpret completion

A complete search can establish optimality for the supplied finite model. A limited search reports its best found assignment without a proof of optimality. Numeric objectives use floating-point arithmetic; the optimizer is not an unrestricted mixed-integer solver.

Read the methods and limitations or try the examples in the workspace.