Skip to content

Commit

Permalink
Remove support for ZeroOne (#58)
Browse files Browse the repository at this point in the history
  • Loading branch information
blegat committed Oct 4, 2020
1 parent cf33182 commit 43213d5
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 24 deletions.
5 changes: 1 addition & 4 deletions src/MosekTools.jl
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
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
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
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

0 comments on commit 43213d5

Please sign in to comment.