# HLPL / VerTeX — full content > Complete machine-readable reference. MCP endpoint: https://vertex.elytica.com/mcp (no auth). --- # Verified formulation techniques Every technique below ships as a complete VerTeX model that has been run and checked. Each model's optimum was computed twice — once by the interpreter, once by an independent reference solver working from the same instance data (exhaustive enumeration, a two-phase simplex, or integer enumeration… Path: `docs/formulation-techniques` # Verified formulation techniques Every technique below ships as a complete VerTeX model that has been run and checked. Each model's optimum was computed twice — once by the interpreter, once by an independent reference solver working from the same instance data (exhaustive enumeration, a two-phase simplex, or integer enumeration with an LP for the continuous part) — and only models where the two agree are published here. Fetch any one with the `get_formulation` tool, or read the source directly under `formulations/`. ## Techniques | Technique | What it does | Reference | |---|---|---| | `absolute-value` | Absolute value in the objective | Charnes, A [doi:10.2307/3006550](https://doi.org/10.2307/3006550) | | `assignment` | Linear assignment | Kuhn, H [doi:10.1002/nav.3800020109](https://doi.org/10.1002/nav.3800020109) | | `bin-packing` | Bin packing | Martello, S | | `binary-product` | Product of two binary variables | Glover, F [doi:10.1287/opre.22.1.180](https://doi.org/10.1287/opre.22.1.180) | | `capacitated-facility-location` | Capacitated facility location | Balinski, M [doi:10.1287/mnsc.12.3.253](https://doi.org/10.1287/mnsc.12.3.253) | | `capacitated-lot-sizing` | Capacitated lot sizing | Bitran, G | | `chance-constraint` | Chance constraint via scenario binaries | Charnes, A | | `count-cardinality` | Counting and cardinality | Nemhauser, G [doi:10.1002/9781118627372](https://doi.org/10.1002/9781118627372) | | `criterion-as-constraint` | Secondary criterion moved into a constraint | Haimes, Y [doi:10.1109/TSMC.1971.4308298](https://doi.org/10.1109/TSMC.1971.4308298) | | `cvrp-mtz` | Capacitated vehicle routing (MTZ load form) | Miller, C [doi:10.1145/321043.321046](https://doi.org/10.1145/321043.321046) | | `diet-blending` | Diet / blending | Stigler, G [doi:10.2307/1231810](https://doi.org/10.2307/1231810) | | `dominating-set` | Minimum dominating set | Haynes, T [doi:10.1201/9781482246582](https://doi.org/10.1201/9781482246582) | | `edge-matching` | Maximum weight matching | Edmonds, J [doi:10.6028/jres.069B.013](https://doi.org/10.6028/jres.069B.013) | | `either-or` | Disjunctive (either-or) constraints | Balas, E [doi:10.1016/S0167-5060(08)70342-X](https://doi.org/10.1016/S0167-5060(08)70342-X) | | `fixed-charge` | Fixed-charge (setup) cost | Beale, E | | `fixed-charge-continuous` | Fixed charge with continuous production | Balinski, M [doi:10.1287/mnsc.12.3.253](https://doi.org/10.1287/mnsc.12.3.253) | | `fixed-charge-network-design` | Fixed-charge network design | Magnanti, T [doi:10.1287/trsc.18.1.1](https://doi.org/10.1287/trsc.18.1.1) | | `goal-programming` | Soft constraints by goal programming | Charnes, A [doi:10.2307/1909344](https://doi.org/10.2307/1909344) | | `graph-colouring` | Graph colouring | Mehrotra, A [doi:10.1287/ijoc.8.4.344](https://doi.org/10.1287/ijoc.8.4.344) | | `implication` | Logical implication between binaries | Williams, H | | `independent-set` | Maximum weighted independent set | Nemhauser, G [doi:10.1007/BF01580444](https://doi.org/10.1007/BF01580444) | | `job-shop-disjunctive` | Job shop, disjunctive formulation | Manne, A | | `knapsack-01` | 0/1 knapsack | Dantzig, G [doi:10.1287/opre.5.2.266](https://doi.org/10.1287/opre.5.2.266) | | `knapsack-bounded` | Bounded knapsack | Martello, S | | `knapsack-multidim` | Multidimensional knapsack | Fréville, A [doi:10.1016/S0377-2217(03)00274-1](https://doi.org/10.1016/S0377-2217(03)00274-1) | | `knapsack-unbounded` | Unbounded knapsack | Gilmore, P | | `linking-aggregated` | Aggregated (big-M) linking constraint | Vielma, J [doi:10.1137/130915303](https://doi.org/10.1137/130915303) | | `linking-disaggregated` | Disaggregated linking constraint | Vielma, J [doi:10.1137/130915303](https://doi.org/10.1137/130915303) | | `logarithmic-encoding` | Logarithmic encoding of a choice | Vielma, J | | `lot-sizing` | Single-item lot sizing with setups | Wagner, H [doi:10.1287/mnsc.5.1.89](https://doi.org/10.1287/mnsc.5.1.89) | | `m-tsp` | Multiple travelling salesman | Bektas, T | | `max-clique` | Maximum clique | Bomze, I | | `max-covering` | Maximal covering location | Church, R [doi:10.1007/BF01942293](https://doi.org/10.1007/BF01942293) | | `max-cut` | Maximum cut | Barahona, F., Grötschel, M., Jünger, M [doi:10.1287/opre.36.3.493](https://doi.org/10.1287/opre.36.3.493) | | `max-flow` | Maximum flow | Ford, L [doi:10.4153/CJM-1956-045-5](https://doi.org/10.4153/CJM-1956-045-5) | | `maximin` | Maximising a minimum | Rawls, J | | `maximin-continuous` | Maximising a minimum over continuous shares | Rawls, J | | `min-cost-flow` | Minimum-cost network flow | Ford, L [doi:10.1515/9781400875184](https://doi.org/10.1515/9781400875184) | | `minimax` | Minimising a maximum | Dantzig, G [doi:10.1515/9781400884179](https://doi.org/10.1515/9781400884179) | | `multi-period-production` | Multi-period production planning | Johnson, L | | `multicommodity-flow` | Multi-commodity flow | Ford, L [doi:10.1287/mnsc.5.1.97](https://doi.org/10.1287/mnsc.5.1.97) | | `multiple-knapsack` | Multiple knapsack | Martello, S | | `mutual-exclusion` | Mutual exclusion and complementarity | Padberg, M [doi:10.1007/BF01580121](https://doi.org/10.1007/BF01580121) | | `p-center` | p-center (minimax location) | Kariv, O | | `p-median` | p-median facility location | Hakimi, S [doi:10.1287/opre.12.3.450](https://doi.org/10.1287/opre.12.3.450) | | `piecewise-incremental` | Piecewise-linear, incremental (delta) form | Markowitz, H [doi:10.2307/1907744](https://doi.org/10.2307/1907744) | | `piecewise-lambda` | Piecewise-linear cost, convex-combination form | Dantzig, G [doi:10.1515/9781400884179](https://doi.org/10.1515/9781400884179) | | `prize-collecting-tsp` | Prize-collecting / orienteering tour | Balas, E | | `product-binary-continuous` | Product of a binary and a bounded continuous variable | Glover, F [doi:10.1287/mnsc.22.4.455](https://doi.org/10.1287/mnsc.22.4.455) | | `product-mix` | Product mix | Dantzig, G [doi:10.1515/9781400884179](https://doi.org/10.1515/9781400884179) | | `robust-box-uncertainty` | Robust counterpart under box uncertainty | Soyster, A | | `semi-continuous` | Semi-continuous variable | Beale, E | | `set-cover` | Weighted set covering | Balas, E [doi:10.1137/1018115](https://doi.org/10.1137/1018115) | | `set-partitioning` | Set partitioning | Balas, E [doi:10.1137/1018115](https://doi.org/10.1137/1018115) | | `shortest-path-arc` | Shortest path by arc selection | Ahuja, R | | `single-machine-disjunctive` | Single-machine sequencing, disjunctive (big-M) formulation | Manne, A | | `sos1-at-most-one` | At most one nonzero (SOS1 by binaries) | Beale, E | | `sos2-piecewise` | Piecewise-linear via SOS2-style adjacency | Beale, E | | `spanning-tree` | Minimum spanning tree | Edmonds, J | | `subset-sum` | Subset sum | Karp, R | | `time-indexed-scheduling` | Time-indexed scheduling | Pritsker, A | | `transportation` | Transportation problem | Hitchcock, F [doi:10.1002/sapm1941201224](https://doi.org/10.1002/sapm1941201224) | | `transshipment` | Transshipment | Orden, A [doi:10.1287/mnsc.2.3.276](https://doi.org/10.1287/mnsc.2.3.276) | | `tsp-dfj-subtour` | Travelling salesman, DFJ subtour elimination | Dantzig, G., Fulkerson, R | | `tsp-mtz` | Travelling salesman with MTZ subtour elimination | Miller, C [doi:10.1145/321043.321046](https://doi.org/10.1145/321043.321046) | | `two-stage-recourse` | Two-stage stochastic programme with recourse | Dantzig, G | | `uncapacitated-facility-location` | Uncapacitated facility location | Balinski, M [doi:10.1287/mnsc.12.3.253](https://doi.org/10.1287/mnsc.12.3.253) | | `vertex-cover` | Minimum weighted vertex cover | Nemhauser, G [doi:10.1007/BF01580444](https://doi.org/10.1007/BF01580444) | | `weighted-single-objective` | Weighted single objective over several criteria | Zadeh, L [doi:10.1109/TAC.1963.1105511](https://doi.org/10.1109/TAC.1963.1105511) | | `zero-sum-game` | Zero-sum matrix game | Dantzig, G [doi:10.1515/9781400884179](https://doi.org/10.1515/9781400884179) | ## By modelling feature - **absolute-value** — `absolute-value` - **adjacency** — `sos2-piecewise` - **aggregated-linking** — `linking-aggregated` - **assignment** — `assignment`, `bin-packing`, `graph-colouring`, `multiple-knapsack` - **at-most-one** — `sos1-at-most-one` - **auxiliary-binary** — `binary-product` - **auxiliary-continuous** — `absolute-value`, `maximin`, `minimax`, `p-center` - **big-M** — `chance-constraint`, `either-or`, `fixed-charge-network-design`, `job-shop-disjunctive`, `linking-aggregated`, `product-binary-continuous`, `single-machine-disjunctive` - **bin-packing** — `bin-packing` - **binary-expansion** — `logarithmic-encoding` - **binary-selection** — `knapsack-01` - **blending** — `diet-blending` - **bounded-counts** — `knapsack-bounded` - **box-uncertainty** — `robust-box-uncertainty` - **bundle-constraint** — `multicommodity-flow` - **capacity** — `capacitated-facility-location`, `capacitated-lot-sizing`, `cvrp-mtz` - **capacity-gating** — `bin-packing` - **cardinality** — `binary-product`, `count-cardinality`, `p-median` - **chance-constraint** — `chance-constraint` - **clique** — `max-clique` - **colouring** — `graph-colouring` - **compact-formulation** — `logarithmic-encoding` - **complement-graph** — `max-clique` - **conflict-pairs** — `mutual-exclusion` - **continuous** — `diet-blending`, `fixed-charge-continuous`, `max-flow`, `maximin-continuous`, `min-cost-flow`, `multi-period-production`, `multicommodity-flow`, `product-mix`, `transportation`, `transshipment`, `zero-sum-game` - **continuous-time** — `single-machine-disjunctive` - **counting** — `count-cardinality` - **covering** — `dominating-set`, `max-covering`, `set-cover`, `vertex-cover` - **covering-lp** — `diet-blending` - **criteria-tradeoff** — `criterion-as-constraint`, `weighted-single-objective` - **delta-form** — `piecewise-incremental` - **deviation-variables** — `goal-programming` - **disaggregated-linking** — `linking-disaggregated` - **disjunction** — `either-or` - **disjunctive** — `job-shop-disjunctive`, `single-machine-disjunctive` - **epsilon-constraint** — `criterion-as-constraint` - **equality-constraint** — `subset-sum` - **exact-cover** — `set-partitioning` - **exponential-family** — `tsp-dfj-subtour` - **facility-location** — `capacitated-facility-location`, `uncapacitated-facility-location` - **fairness** — `maximin`, `maximin-continuous` - **feasibility** — `subset-sum` - **fixed-charge** — `fixed-charge`, `fixed-charge-continuous`, `fixed-charge-network-design` - **flow-conservation** — `min-cost-flow`, `shortest-path-arc`, `transshipment` - **game-theory** — `zero-sum-game` - **glover-linearization** — `product-binary-continuous` - **goal-programming** — `absolute-value`, `goal-programming` - **graph** — `dominating-set`, `edge-matching`, `independent-set`, `vertex-cover` - **ideal-formulation** — `linking-disaggregated` - **implication** — `implication` - **incremental-form** — `piecewise-incremental` - **index-arithmetic** — `capacitated-lot-sizing`, `lot-sizing`, `multi-period-production` - **index-mapping** — `independent-set`, `max-clique`, `max-cut`, `mutual-exclusion`, `spanning-tree`, `vertex-cover` - **indicator-binary** — `either-or` - **integer-variables** — `knapsack-bounded`, `knapsack-unbounded` - **intermediate-nodes** — `transshipment` - **inventory-balance** — `lot-sizing`, `multi-period-production` - **job-shop** — `job-shop-disjunctive` - **knapsack** — `knapsack-01`, `knapsack-bounded`, `knapsack-multidim`, `knapsack-unbounded`, `multiple-knapsack` - **lambda-form** — `piecewise-lambda`, `sos2-piecewise` - **linear-program** — `product-mix` - **load-balancing** — `minimax` - **location** — `max-covering`, `p-center`, `p-median` - **logarithmic-encoding** — `logarithmic-encoding` - **logical-constraint** — `implication` - **lot-sizing** — `capacitated-lot-sizing`, `lot-sizing` - **lp-duality** — `zero-sum-game` - **m-tsp** — `m-tsp` - **matching** — `edge-matching` - **matroid** — `spanning-tree` - **max-flow** — `max-flow` - **maximin** — `maximin`, `maximin-continuous` - **min-cut-duality** — `max-flow` - **minimax** — `minimax`, `p-center`, `zero-sum-game` - **minimum-level** — `semi-continuous` - **mixed-integer** — `fixed-charge-continuous`, `fixed-charge-network-design` - **mtz** — `cvrp-mtz`, `m-tsp`, `prize-collecting-tsp`, `tsp-mtz` - **multi-constraint** — `knapsack-multidim` - **multi-container** — `multiple-knapsack` - **multi-period** — `multi-period-production` - **multi-vehicle** — `m-tsp` - **multicommodity** — `multicommodity-flow` - **network** — `shortest-path-arc` - **network-design** — `fixed-charge-network-design` - **no-extra-variables** — `robust-box-uncertainty` - **not-tu** — `multicommodity-flow` - **on-off-binary** — `semi-continuous` - **optional-visits** — `prize-collecting-tsp` - **ordering** — `piecewise-incremental` - **orienteering** — `prize-collecting-tsp` - **p-center** — `p-center` - **p-median** — `p-median` - **packing** — `independent-set`, `max-clique` - **parametric-set** — `dominating-set`, `edge-matching`, `max-covering`, `min-cost-flow`, `set-cover`, `set-partitioning`, `shortest-path-arc` - **partitioning** — `max-cut` - **period-capacity** — `time-indexed-scheduling` - **piecewise-linear** — `piecewise-incremental`, `piecewise-lambda`, `sos2-piecewise` - **precedence** — `implication`, `job-shop-disjunctive` - **prize-collecting** — `prize-collecting-tsp` - **product** — `product-binary-continuous` - **quadratic-linearization** — `binary-product` - **recourse** — `two-stage-recourse` - **resource-constraints** — `product-mix` - **resource-vector** — `knapsack-multidim` - **robust** — `robust-box-uncertainty` - **routing** — `cvrp-mtz`, `m-tsp` - **scalarization** — `weighted-single-objective` - **scenario-binaries** — `chance-constraint` - **scenario-indexed** — `two-stage-recourse` - **semi-continuous** — `semi-continuous` - **sequencing** — `single-machine-disjunctive`, `tsp-mtz` - **set-packing** — `mutual-exclusion` - **set-partitioning** — `set-cover`, `set-partitioning` - **setup-binary** — `capacitated-lot-sizing`, `fixed-charge`, `lot-sizing` - **single-constraint** — `knapsack-01` - **single-objective** — `criterion-as-constraint`, `weighted-single-objective` - **soft-constraint** — `goal-programming` - **sos1** — `sos1-at-most-one` - **sos2** — `sos2-piecewise` - **sos2-like** — `piecewise-lambda` - **spanning-tree** — `spanning-tree` - **stochastic** — `chance-constraint`, `two-stage-recourse` - **strong-relaxation** — `linking-disaggregated`, `tsp-dfj-subtour` - **subset-constraints** — `spanning-tree` - **subset-restriction** — `count-cardinality` - **subset-sum** — `subset-sum` - **subtour-elimination** — `cvrp-mtz`, `tsp-dfj-subtour`, `tsp-mtz` - **symmetry-prone** — `graph-colouring` - **tight-relaxation** — `time-indexed-scheduling` - **time-indexed** — `time-indexed-scheduling` - **totally-unimodular** — `assignment`, `min-cost-flow`, `transportation` - **transportation** — `transportation` - **tsp** — `tsp-dfj-subtour` - **two-index** — `assignment`, `uncapacitated-facility-location` - **two-stage** — `two-stage-recourse` - **unbounded** — `knapsack-unbounded` - **variable-upper-bound** — `capacitated-facility-location`, `fixed-charge`, `sos1-at-most-one`, `uncapacitated-facility-location` - **vrp** — `cvrp-mtz` - **weak-relaxation** — `linking-aggregated` - **weighted-sum** — `weighted-single-objective` - **worst-case** — `robust-box-uncertainty` - **xor-linearization** — `max-cut` ## What "verified" means here The interpreter and the reference solver share no code. The reference works from the instance data, never from the VerTeX source, and for a linearization it evaluates the *original* construct — a product as an actual product, an absolute value as an actual absolute value — so a formulation that is merely self-consistent still fails if it does not agree with what it claims to linearize. Where the two disagreed, the instance was discarded rather than reconciled. --- # MIP/LP Modelling Language Syntax (HLPL Files) IMPORTANT: Read this entire syntax guide BEFORE creating any optimization models. Path: `docs/syntax` # MIP/LP Modelling Language Syntax (HLPL Files) IMPORTANT: Read this entire syntax guide BEFORE creating any optimization models. This is a domain-specific modelling language for Linear Programming (LP) and Mixed Integer Programming (MIP) that combines: - Mathematical optimization model declarations - Python/Lua scripting for data processing and results analysis - LaTeX for documentation - Template-based reusable constraint blocks ## File Format HLPL files use the .hlpl extension and are plain text files containing: 1. Optional template definitions 2. Model declaration (between "model" and "end") 3. Python or Lua implementation code 4. REQUIRED: main() function that returns integer exit code ## Basic Structure ```hlpl # Optional: Define reusable constraint templates template templateName() end # Main model definition — the model name MAY contain underscores (`shortest_path`), unlike set, # constant and variable names. Whatever it is, the `init_model`/`run_model` calls in the Python # section below must use exactly the same string. model modelName