math_spec.boundedness
Provably unbounded models, named before a solver says a bare unbounded.
A variable that is unbounded on the side its objective term improves toward and appears in no constraint runs to infinity for any data at all. Advice rather than a refusal, because the same shape is what a half-written model looks like.
Which side improves is read off the sign the variable enters the objective
with: under minimize a +v term runs down toward lower. Where that
sign is not decidable without data — a parameter coefficient, or occurrences
of both signs — nothing is claimed.
Sign = Literal['+', '-'] | None
module-attribute
#
unbounded_notes(program)
#
Name every variable the objective can drive to infinity unopposed.
Asked of the program rather than the file: every fact the rule reads is a
declaration — the objective's sense and its terms, the variables each
constraint names, the two bounds — and by the time a program exists a
piecewise: block has already become the constraints it expands into,
which is where the variables it names are held.
| RETURNS | DESCRIPTION |
|---|---|
list[Advice]
|
One note per variable that is unbounded on the side its objective term |
list[Advice]
|
improves toward and named by no constraint. |