Skip to content

Commit d085429

Browse files
author
Jonas Hörsch
committed
WIP Add implementation for addconstraints! with a vector of sets from LinSets
1 parent 4f75448 commit d085429

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

src/constraints/vectorofvariables.jl

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,48 @@ constrdict(model::LinQuadOptimizer, ::VVCI{MOI.Zeros}) = cmap(model).vv_zeros
1515
constrdict(model::LinQuadOptimizer, ::VVCI{SOS1}) = cmap(model).sos1
1616
constrdict(model::LinQuadOptimizer, ::VVCI{SOS2}) = cmap(model).sos2
1717

18+
19+
function set_variable_bound(model::LinQuadOptimizer, columns::Vector{Int}, bounds::Vector{Float64}, sense)
20+
@assert length(columns) == length(bounds)
21+
change_variable_bounds!(model, columns, bounds, sense)
22+
end
23+
24+
function set_variable_bound(model::LinQuadOptimizer, vs::Vector{VarInd}, sets::Vector{LE})
25+
set_variable_bound(model, get_column.(model, vs), [s.upper for s=sets],
26+
fill(backend_type(model, Val{:Upperbound}()), length(vs)))
27+
end
28+
function set_variable_bound(model::LinQuadOptimizer, vs::Vector{VarInd}, sets::Vector{GE})
29+
set_variable_bound(model, get_column.(model, vs), [s.lower for s=sets],
30+
fill(backend_type(model, Val{:Lowerbound}()), length(vs)))
31+
end
32+
function set_variable_bound(model::LinQuadOptimizer, vs::Vector{VarInd}, sets::Vector{EQ})
33+
set_variable_bound(model, get_column.(model, vs), [s.value for s=sets],
34+
fill(backend_type(model, Val{:Upperbound}()), length(vs)))
35+
set_variable_bound(model, get_column.(model, vs), [s.value for s=sets],
36+
fill(backend_type(model, Val{:Lowerbound}()), length(vs)))
37+
end
38+
function set_variable_bound(model::LinQuadOptimizer, vs::Vector{VarInd}, sets::Vector{IV})
39+
set_variable_bound(model, get_column(model, v), [s.upper for s=sets],
40+
fill(backend_type(model, Val{:Upperbound}()), length(vs)))
41+
set_variable_bound(model, get_column(model, v), [s.lower for s=sets],
42+
fill(backend_type(model, Val{:Lowerbound}()), length(vs)))
43+
end
44+
45+
function MOI.addconstraints!(model::LinQuadOptimizer, funcs::VecVar, sets::Vector{S}) where S <: LinSets
46+
# __assert_supported_constraint__(model, VecVar, S)
47+
# __check_for_conflicting__(model, variable, set,
48+
# S, MOI.Semicontinuous{Float64}, MOI.Semiinteger{Float64}, MOI.ZeroOne)
49+
num_vars = length(sets)
50+
set_variable_bound(model, funcs.variables, sets)
51+
# TODO we have to return some sort of constrdict here, need help!
52+
53+
# model.last_constraint_reference += 1
54+
# index = VVCI{S}(model.last_constraint_reference)
55+
# dict = constrdict(model, index)
56+
# dict[index] = variable.variable
57+
# return index
58+
end
59+
1860
function MOI.addconstraint!(model::LinQuadOptimizer, func::VecVar, set::S) where S <: VecLinSets
1961
__assert_supported_constraint__(model, VecVar, S)
2062
@assert length(func.variables) == MOI.dimension(set)

0 commit comments

Comments
 (0)