@@ -15,6 +15,48 @@ constrdict(model::LinQuadOptimizer, ::VVCI{MOI.Zeros}) = cmap(model).vv_zeros
15
15
constrdict (model:: LinQuadOptimizer , :: VVCI{SOS1} ) = cmap (model). sos1
16
16
constrdict (model:: LinQuadOptimizer , :: VVCI{SOS2} ) = cmap (model). sos2
17
17
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
+
18
60
function MOI. addconstraint! (model:: LinQuadOptimizer , func:: VecVar , set:: S ) where S <: VecLinSets
19
61
__assert_supported_constraint__ (model, VecVar, S)
20
62
@assert length (func. variables) == MOI. dimension (set)
0 commit comments