Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions src/MosekTools.jl
Original file line number Diff line number Diff line change
Expand Up @@ -407,10 +407,7 @@ end
# MOI.PositiveSemidefiniteConeTriangle,
# MOI.PositiveSemidefiniteConeScaled ]
# # ok
# elseif dom in [MOI.ZeroOne,
# MOI.Integer] &&
# fun in [MOI.SingleVariable,
# MOI.VectorOfVariables]
# elseif dom == MOI.Integer && fun in [MOI.SingleVariable, MOI.VectorOfVariables]
# # ok
# else
# return false
Expand Down
6 changes: 3 additions & 3 deletions src/attributes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -153,14 +153,14 @@ function MOI.get(model::MosekModel,
end
function MOI.get(model::MosekModel,
::MOI.NumberOfConstraints{MOI.SingleVariable, S}) where S<:Union{ScalarLinearDomain,
ScalarIntegerDomain}
MOI.Integer}
F = MOI.SingleVariable
return count(id -> MOI.is_valid(model, MOI.ConstraintIndex{F, S}(id)),
allocatedlist(model.x_block))
end
function MOI.get(model::MosekModel,
::MOI.ListOfConstraintIndices{MOI.SingleVariable, S}) where S<:Union{ScalarLinearDomain,
ScalarIntegerDomain}
MOI.Integer}
F = MOI.SingleVariable
ids = filter(id -> MOI.is_valid(model, MOI.ConstraintIndex{F, S}(id)),
allocatedlist(model.x_block))
Expand Down Expand Up @@ -199,7 +199,7 @@ function MOI.get(model::MosekModel,
F = MOI.SingleVariable
for D in [MOI.LessThan{Float64}, MOI.GreaterThan{Float64},
MOI.EqualTo{Float64}, MOI.Interval{Float64},
MOI.Integer, MOI.ZeroOne]
MOI.Integer]
if !iszero(MOI.get(model, MOI.NumberOfConstraints{F, D}()))
push!(list, (F, D))
end
Expand Down
20 changes: 4 additions & 16 deletions src/constraint.jl
Original file line number Diff line number Diff line change
Expand Up @@ -170,11 +170,6 @@ function delete_variable_constraint(m::MosekModel, col::ColumnIndex,
::Type{MOI.Integer})
putvartype(m.task, col.value, MSK_VAR_TYPE_CONT)
end
function delete_variable_constraint(m::MosekModel, col::ColumnIndex,
::Type{MOI.ZeroOne})
putvartype(m.task, col.value, MSK_VAR_TYPE_CONT)
putvarbound(m.task, col.value, MSK_BK_FR, 0.0, 0.0)
end
function delete_variable_constraint(m::MosekModel, col::ColumnIndex,
::Type{MOI.LessThan{Float64}})
bk, lo, up = getvarbound(m.task, col.value)
Expand Down Expand Up @@ -206,10 +201,6 @@ end
function add_variable_constraint(m::MosekModel, col::ColumnIndex, ::MOI.Integer)
putvartype(m.task, col.value, MSK_VAR_TYPE_INT)
end
function add_variable_constraint(m::MosekModel, col::ColumnIndex, ::MOI.ZeroOne)
putvartype(m.task, col.value, MSK_VAR_TYPE_INT)
putvarbound(m.task, col.value, MSK_BK_RA, 0.0, 1.0)
end
function add_variable_constraint(m::MosekModel, col::ColumnIndex, dom::MOI.LessThan)
bk, lo, up = getvarbound(m.task, col.value)
if bk == MSK_BK_FR
Expand Down Expand Up @@ -319,8 +310,6 @@ flag(::Type{MOI.Interval{Float64}}) = 0x8
incompatible_mask(::Type{MOI.Interval{Float64}}) = 0x2f
flag(::Type{MOI.Integer}) = 0x10
incompatible_mask(::Type{MOI.Integer}) = 0x30
flag(::Type{MOI.ZeroOne}) = 0x20
incompatible_mask(::Type{MOI.ZeroOne}) = 0x3f
flag(::Type{<:VectorCone}) = 0x40
incompatible_mask(::Type{<:VectorCone}) = 0x40

Expand All @@ -342,14 +331,13 @@ const ScalarLinearDomain = Union{MOI.LessThan{Float64},
MOI.GreaterThan{Float64},
MOI.EqualTo{Float64},
MOI.Interval{Float64}}
const ScalarIntegerDomain = Union{MOI.ZeroOne, MOI.Integer}

## Add ########################################################################
###############################################################################

MOI.supports_constraint(::MosekModel, ::Type{<:Union{MOI.SingleVariable, MOI.ScalarAffineFunction}}, ::Type{<:ScalarLinearDomain}) = true
MOI.supports_constraint(::MosekModel, ::Type{MOI.VectorOfVariables}, ::Type{<:VectorCone}) = true
MOI.supports_constraint(::MosekModel, ::Type{MOI.SingleVariable}, ::Type{<:ScalarIntegerDomain}) = true
MOI.supports_constraint(::MosekModel, ::Type{MOI.SingleVariable}, ::Type{<:MOI.Integer}) = true
MOI.supports_add_constrained_variables(::MosekModel, ::Type{MOI.PositiveSemidefiniteConeTriangle}) = true

## Affine Constraints #########################################################
Expand Down Expand Up @@ -476,7 +464,7 @@ function MOI.get(m::MosekModel, ::MOI.ConstraintFunction,
return MOI.SingleVariable(_variable(ci))
end
function MOI.get(m::MosekModel, ::MOI.ConstraintSet,
ci::MOI.ConstraintIndex{MOI.SingleVariable, S}) where S <: ScalarIntegerDomain
ci::MOI.ConstraintIndex{MOI.SingleVariable, S}) where S <: MOI.Integer
MOI.throw_if_not_valid(m, ci)
return S()
end
Expand Down Expand Up @@ -642,13 +630,13 @@ end
function MOI.is_valid(model::MosekModel,
ci::MOI.ConstraintIndex{MOI.SingleVariable,
S}) where S<:Union{ScalarLinearDomain,
ScalarIntegerDomain}
MOI.Integer}
return allocated(model.x_block, ci.value) && has_flag(model, _variable(ci), S)
end
function MOI.delete(
m::MosekModel,
ci::MOI.ConstraintIndex{MOI.SingleVariable, S}) where S<:Union{ScalarLinearDomain,
ScalarIntegerDomain}
MOI.Integer}
MOI.throw_if_not_valid(m, ci)
delete_name(m, ci)
vi = _variable(ci)
Expand Down
2 changes: 1 addition & 1 deletion src/variable.jl
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ function throw_if_cannot_delete(m::MosekModel, vi::MOI.VariableIndex)
col = column(m, vi)
for S in [MOI.LessThan{Float64}, MOI.GreaterThan{Float64},
MOI.EqualTo{Float64}, MOI.Interval{Float64},
MOI.Integer, MOI.ZeroOne]
MOI.Integer]
if has_flag(m, vi, S)
MOI.delete(m, MOI.ConstraintIndex{MOI.SingleVariable, S}(vi.value))
end
Expand Down