From 599b27e27e85367ccb6ebc6c39ee79c3666acb56 Mon Sep 17 00:00:00 2001 From: Miles Lubin Date: Tue, 18 Jul 2017 21:51:02 +0200 Subject: [PATCH] more discussion of variable bounds --- docs/src/apimanual.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/src/apimanual.md b/docs/src/apimanual.md index 5d67cf9212..aef192f15b 100644 --- a/docs/src/apimanual.md +++ b/docs/src/apimanual.md @@ -170,6 +170,8 @@ as function-set pairs in MOI. In the notation below, ``x`` is a vector of decisi By convention, solvers are not expected to support nonzero constant terms in the `ScalarAffineFunction`s the first four rows above, because they are redundant with the parameters of the sets. For example, ``2x + 1 \le 2`` should be encoded as ``2x \le 1``. +Constraints with `ScalarVariablewiseFunction` in `LessThan`, `GreaterThan`, `EqualTo`, or `Interval` sets have a natural interpretation as variable bounds. As such, it is typically not natural to impose multiple lower or upper bounds on the same variable, and by convention we do not ask solver interfaces to support this. It is natural, however, to impose upper and lower bounds separately as two different constraints on a single variable. The difference between imposing bounds by using a single `Interval` constraint and by using separate `LessThan` and `GreaterThan` constraints is that the latter will allow the solver to return separate dual multipliers for the two bounds, while the former will allow the solver to return only a single dual for the interval constraint. + [Define ``\mathbb{R}_+, \mathbb{R}_-``] #### Conic constraints @@ -562,6 +564,8 @@ MOI defines a very general interface, with multiple possible ways to describe th - `ScalarAffineFunction` in `Nonnegative`, `Nonpositive` or `Zeros`. Alternative constraints are available by using a `VectorAffineFunction` with one output row or `ScalarAffineFunction` with `GreaterThan`, `LessThan`, or `EqualTo`. +- Two `ScalarVariablewiseFunction`-in-`LessThan` constraints applied to the same variable (similarly with `GreaterThan`). These should be interpreted as variable bounds, and each variable naturally has at most one upper or lower bound. + There is no special interface for column generation. If the solver has a special API for setting coefficients in existing constraints when adding a new variable, it is possible to queue modifications and new variables and then call the solver's API once all of the