Skip to content

Commit

Permalink
[docs] move manual section on Semicontinuous and Semiinteger variables (
Browse files Browse the repository at this point in the history
  • Loading branch information
odow authored Nov 6, 2023
1 parent ec3c779 commit 7f72a6a
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 37 deletions.
28 changes: 0 additions & 28 deletions docs/src/manual/constraints.md
Original file line number Diff line number Diff line change
Expand Up @@ -1296,34 +1296,6 @@ julia> @constraint(model, [t; u; x] in RotatedSecondOrderCone())
[t, u, x[1], x[2]] ∈ MathOptInterface.RotatedSecondOrderCone(4)
```

## Semi-integer and semi-continuous variables

Semi-continuous variables are constrained to the set
``x \in \{0\} \cup [l, u]``.

Create a semi-continuous variable using the [`Semicontinuous`](@ref) set:
```jldoctest
julia> model = Model();
julia> @variable(model, x);
julia> @constraint(model, x in Semicontinuous(1.5, 3.5))
x in MathOptInterface.Semicontinuous{Float64}(1.5, 3.5)
```

Semi-integer variables are constrained to the set
``x \in \{0\} \cup \{l, l+1, \dots, u\}``.

Create a semi-integer variable using the [`Semiinteger`](@ref) set:
```jldoctest
julia> model = Model();
julia> @variable(model, x);
julia> @constraint(model, x in Semiinteger(1.0, 3.0))
x in MathOptInterface.Semiinteger{Float64}(1.0, 3.0)
```

## Special Ordered Sets of Type 1

In a Special Ordered Set of Type 1 (often denoted SOS-I or SOS1), at most one
Expand Down
24 changes: 24 additions & 0 deletions docs/src/manual/variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,30 @@ julia> set_integer(x)
in the model, returning a function that can be called to undo the operation
later on.

## Semi-integer and semi-continuous variables

Semi-continuous variables are constrained to the set
``x \in \{0\} \cup [l, u]``.

Create a semi-continuous variable using the [`Semicontinuous`](@ref) set:
```jldoctest
julia> model = Model();
julia> @variable(model, x in Semicontinuous(1.5, 3.5))
x
```

Semi-integer variables are constrained to the set
``x \in \{0\} \cup \{l, l+1, \dots, u\}``.

Create a semi-integer variable using the [`Semiinteger`](@ref) set:
```jldoctest
julia> model = Model();
julia> @variable(model, x in Semiinteger(1.0, 3.0))
x
```

## Start values

There are two ways to provide a primal starting solution (also called MIP-start
Expand Down
31 changes: 22 additions & 9 deletions docs/src/tutorials/linear/tips_and_tricks.jl
Original file line number Diff line number Diff line change
Expand Up @@ -237,15 +237,6 @@ M = 100

# ## Semi-continuous variables

# !!! info
# This section uses sets from [MathOptInterface](@ref moi_documentation).
# By default, JuMP exports the `MOI` symbol as an alias for the
# MathOptInterface.jl package. We recommend making this more explicit in
# your code by adding the following lines:
# ```julia
# import MathOptInterface as MOI
# ```

# A semi-continuous variable is a continuous variable between bounds $[l,u]$
# that also can assume the value zero, that is:
# $$x \in \{0\} \cup [l,u].$$
Expand All @@ -255,6 +246,17 @@ M = 100
model = Model();
@variable(model, x in Semicontinuous(1.0, 2.0))

# You can also represent a semi-continuous variable using the reformulation:

model = Model();
@variable(model, x)
@variable(model, z, Bin)
@constraint(model, x <= 2 * z)
@constraint(model, x >= 1 * z)

# When `z = 0` the two constraints are equivalent to `0 <= x <= 0`. When `z = 1`,
# the two constraints are equivalent to `1 <= x <= 2`.

# ## Semi-integer variables

# A semi-integer variable is a variable which assumes integer values between
Expand All @@ -264,6 +266,17 @@ model = Model();
model = Model();
@variable(model, x in Semiinteger(5.0, 10.0))

# You can also represent a semi-integer variable using the reformulation:

model = Model();
@variable(model, x, Int)
@variable(model, z, Bin)
@constraint(model, x <= 10 * z)
@constraint(model, x >= 5 * z)

# When `z = 0` the two constraints are equivalent to `0 <= x <= 0`. When `z = 1`,
# the two constraints are equivalent to `5 <= x <= 10`.

# ## Special Ordered Sets of Type 1

# A Special Ordered Set of Type 1 is a set of variables, at most one of which
Expand Down

0 comments on commit 7f72a6a

Please sign in to comment.