Skip to content

Commit ce7a890

Browse files
committed
add Logical alias for Logical Variable. Closes #73
1 parent 60ef8bc commit ce7a890

21 files changed

+159
-157
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ data = gdp_data(model)
4545

4646
## Logical Variables
4747

48-
Logical variables are JuMP `AbstractVariable`s with two fields: `fix_value` and `start_value`. These can be optionally specified at variable creation. Logical variables are created with the `@variable` JuMP macro by adding the tag `LogicalVariable` as the last keyword argument. As with the regular `@variable` macro, variables can be named and indexed:
48+
Logical variables are JuMP `AbstractVariable`s with two fields: `fix_value` and `start_value`. These can be optionally specified at variable creation. Logical variables are created with the `@variable` JuMP macro by adding the tag `Logical` as the last keyword argument. As with the regular `@variable` macro, variables can be named and indexed:
4949

5050
```julia
51-
@variable(model, Y[1:3], LogicalVariable)
51+
@variable(model, Y[1:3], Logical)
5252
```
5353

5454
## Logical Constraints
@@ -134,7 +134,7 @@ using DisjunctiveProgramming
134134
135135
m = GDPModel()
136136
@variable(m, 0 ≤ x[1:2] ≤ 20)
137-
@variable(m, Y[1:2], LogicalVariable)
137+
@variable(m, Y[1:2], Logical)
138138
@constraint(m, [i = 1:2], [2,5][i] ≤ x[i] ≤ [6,9][i], DisjunctConstraint(Y[1]))
139139
@constraint(m, [i = 1:2], [8,10][i] ≤ x[i] ≤ [11,15][i], DisjunctConstraint(Y[2]))
140140
@disjunction(m, Y)

examples/ex1.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ using HiGHS
77
# Disjunction Method 1: Assign Logical Variables Explicitly
88
m = GDPModel()
99
@variable(m, -5 x 10)
10-
@variable(m, Y[1:2], LogicalVariable)
10+
@variable(m, Y[1:2], Logical)
1111
@constraint(m, 0 x 3, DisjunctConstraint(Y[1]))
1212
@constraint(m, 5 x, DisjunctConstraint(Y[2]))
1313
@constraint(m, x 9, DisjunctConstraint(Y[2]))

examples/ex2.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ using HiGHS
55

66
m = GDPModel(HiGHS.Optimizer)
77
@variable(m, 0 x[1:2] 20)
8-
@variable(m, Y[1:2], LogicalVariable)
8+
@variable(m, Y[1:2], Logical)
99
@constraint(m, [i = 1:2], [2,5][i] x[i] [6,9][i], DisjunctConstraint(Y[1]))
1010
@constraint(m, [i = 1:2], [8,10][i] x[i] [11,15][i], DisjunctConstraint(Y[2]))
1111
@disjunction(m, Y)

examples/ex3.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ using DisjunctiveProgramming
33

44
m = GDPModel()
55
@variable(m, -5 x 10)
6-
@variable(m, Y[1:2], LogicalVariable)
6+
@variable(m, Y[1:2], Logical)
77
@constraint(m, exp(x) <= 2, DisjunctConstraint(Y[1]))
88
@constraint(m, x >= -3, DisjunctConstraint(Y[1]))
99
@constraint(m, exp(x) >= 3, DisjunctConstraint(Y[2]))

examples/ex4.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ using DisjunctiveProgramming
66
# ¬((Y[1] ∧ ¬Y[2]) ⇔ (Y[3] ∨ Y[4]))
77

88
m = GDPModel()
9-
@variable(m, Y[1:4], LogicalVariable)
9+
@variable(m, Y[1:4], Logical)
1010
@constraint(m, ¬((Y[1] ¬Y[2]) (Y[3] Y[4])) IsTrue())
1111
reformulate_model(m, BigM())
1212
print(m)

examples/ex5.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ using DisjunctiveProgramming
66
##
77
m = GDPModel()
88
@variable(m, 1 x[1:2] 9)
9-
@variable(m, Y[1:2], LogicalVariable)
10-
@variable(m, W[1:2], LogicalVariable)
9+
@variable(m, Y[1:2], Logical)
10+
@variable(m, W[1:2], Logical)
1111
@objective(m, Max, sum(x))
1212
@constraint(m, y1[i=1:2], [1,4][i] x[i] [3,6][i], DisjunctConstraint(Y[1]))
1313
@constraint(m, w1[i=1:2], [1,5][i] x[i] [2,6][i], DisjunctConstraint(W[1]))

examples/ex6.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@ using DisjunctiveProgramming
55
m = GDPModel()
66
@variable(m, -5 <= x[1:3] <= 5)
77

8-
@variable(m, y[1:2], LogicalVariable)
8+
@variable(m, y[1:2], Logical)
99
@constraint(m, x[1] <= -2, DisjunctConstraint(y[1]))
1010
@constraint(m, x[1] >= 2, DisjunctConstraint(y[2]))
1111
@constraint(m, x[2] == -1, DisjunctConstraint(y[2]))
1212
@constraint(m, x[3] == 1, DisjunctConstraint(y[2]))
1313
@disjunction(m, y)
1414
@constraint(m, y in Exactly(1))
1515

16-
@variable(m, w[1:2], LogicalVariable)
16+
@variable(m, w[1:2], Logical)
1717
@constraint(m, x[2] <= -3, DisjunctConstraint(w[1]))
1818
@constraint(m, x[2] >= 3, DisjunctConstraint(w[2]))
1919
@constraint(m, x[3] == 0, DisjunctConstraint(w[2]))
2020
@disjunction(m, w, DisjunctConstraint(y[1]))
2121
@constraint(m, w in Exactly(y[1]))
2222

23-
@variable(m, z[1:2], LogicalVariable)
23+
@variable(m, z[1:2], Logical)
2424
@constraint(m, x[3] <= -4, DisjunctConstraint(z[1]))
2525
@constraint(m, x[3] >= 4, DisjunctConstraint(z[2]))
2626
@disjunction(m, z, DisjunctConstraint(w[1]))

src/constraints.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ To select exactly 1 logical variable `Y` to be `true`, do
419419
420420
```jldoctest
421421
julia> model = GDPModel();
422-
julia> @variable(model, Y[i = 1:2], LogicalVariable);
422+
julia> @variable(model, Y[i = 1:2], Logical);
423423
julia> @constraint(model, [Y[1], Y[2]] in Exactly(1));
424424
```
425425

src/datatypes.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ struct LogicalVariable <: JuMP.AbstractVariable
1616
start_value::Union{Nothing, Bool}
1717
end
1818

19+
const Logical = LogicalVariable
20+
1921
"""
2022
LogicalVariableData
2123

src/macros.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ julia> @variable(model, w);
292292
293293
julia> @variable(model, x);
294294
295-
julia> @variable(model, Y[1:4], LogicalVariable);
295+
julia> @variable(model, Y[1:4], Logical);
296296
297297
julia> @constraint(model, [i=1:2], w == i, DisjunctConstraint(Y[i]));
298298

0 commit comments

Comments
 (0)