Skip to content

Commit

Permalink
Update MOI_wrapper.jl
Browse files Browse the repository at this point in the history
  • Loading branch information
odow authored Mar 12, 2024
1 parent afbd55a commit 2a5e16e
Showing 1 changed file with 89 additions and 89 deletions.
178 changes: 89 additions & 89 deletions test/MOI_wrapper.jl
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,22 @@ function runtests()
end

function test_MOI_Test_cached()
second_order_exclude = String[
"test_conic_GeometricMeanCone_VectorAffineFunction",
"test_conic_GeometricMeanCone_VectorAffineFunction_2",
"test_conic_GeometricMeanCone_VectorOfVariables",
"test_conic_GeometricMeanCone_VectorOfVariables_2",
"test_conic_RotatedSecondOrderCone_INFEASIBLE_2",
"test_conic_RotatedSecondOrderCone_VectorAffineFunction",
"test_conic_RotatedSecondOrderCone_VectorOfVariables",
"test_conic_RotatedSecondOrderCone_out_of_order",
"test_conic_SecondOrderCone_Nonpositives",
"test_conic_SecondOrderCone_Nonnegatives",
"test_conic_SecondOrderCone_VectorAffineFunction",
"test_conic_SecondOrderCone_VectorOfVariables",
"test_conic_SecondOrderCone_out_of_order",
"test_constraint_PrimalStart_DualStart_SecondOrderCone",
]
# second_order_exclude = String[
# "test_conic_GeometricMeanCone_VectorAffineFunction",
# "test_conic_GeometricMeanCone_VectorAffineFunction_2",
# "test_conic_GeometricMeanCone_VectorOfVariables",
# "test_conic_GeometricMeanCone_VectorOfVariables_2",
# "test_conic_RotatedSecondOrderCone_INFEASIBLE_2",
# "test_conic_RotatedSecondOrderCone_VectorAffineFunction",
# "test_conic_RotatedSecondOrderCone_VectorOfVariables",
# "test_conic_RotatedSecondOrderCone_out_of_order",
# "test_conic_SecondOrderCone_Nonpositives",
# "test_conic_SecondOrderCone_Nonnegatives",
# "test_conic_SecondOrderCone_VectorAffineFunction",
# "test_conic_SecondOrderCone_VectorOfVariables",
# "test_conic_SecondOrderCone_out_of_order",
# "test_constraint_PrimalStart_DualStart_SecondOrderCone",
# ]
model =
MOI.instantiate(KNITRO.Optimizer; with_bridge_type=Float64, with_cache_type=Float64)
MOI.set(model, MOI.Silent(), true)
Expand All @@ -55,90 +55,90 @@ function test_MOI_Test_cached()
config;
include = String[
"test_constraint_ZeroOne_bounds",
"test_constraint_ZeroOne_bounds_2",
# "test_constraint_ZeroOne_bounds_2",
"test_constraint_ZeroOne_bounds_3",
"test_constraint_get_ConstraintIndex",
"test_constraint_qcp_duplicate_diagonal",
"test_constraint_qcp_duplicate_off_diagonal",
],
verbose = true
)
MOI.Test.runtests(
model,
config;
exclude=String[
# TODO(odow): this test is flakey.
"test_cpsat_ReifiedAllDifferent",
# Returns OTHER_ERROR, which is also reasonable.
"test_conic_empty_matrix",
# Uses the ZerosBridge and ConstraintDual
"test_conic_linear_VectorOfVariables_2",
# Returns ITERATION_LIMIT instead of DUAL_INFEASIBLE, which is okay.
"test_linear_DUAL_INFEASIBLE",
# Incorrect ObjectiveBound with an LP, but that's understandable.
"test_solve_ObjectiveBound_MAX_SENSE_LP",
# KNITRO doesn't support INFEASIBILITY_CERTIFICATE results.
"test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_",
# TODO(odow): bridge issues
"test_basic_VectorNonlinearFunction_AllDifferent",
"test_basic_VectorNonlinearFunction_BinPacking",
"test_basic_VectorNonlinearFunction_Circuit",
"test_basic_VectorNonlinearFunction_Complements",
"test_basic_VectorNonlinearFunction_CountAtLeast",
"test_basic_VectorNonlinearFunction_CountBelongs",
"test_basic_VectorNonlinearFunction_CountDistinct",
"test_basic_VectorNonlinearFunction_CountGreaterThan",
"test_basic_VectorNonlinearFunction_GeometricMeanCone",
"test_basic_VectorNonlinearFunction_HyperRectangle",
"test_basic_VectorNonlinearFunction_Nonnegatives",
"test_basic_VectorNonlinearFunction_Nonpositives",
"test_basic_VectorNonlinearFunction_NormInfinityCone",
"test_basic_VectorNonlinearFunction_NormOneCone",
"test_basic_VectorNonlinearFunction_RotatedSecondOrderCone",
"test_basic_VectorNonlinearFunction_SecondOrderCone",
"test_basic_VectorNonlinearFunction_SOS1",
"test_basic_VectorNonlinearFunction_SOS2",
"test_basic_VectorNonlinearFunction_Table",
"test_basic_VectorNonlinearFunction_Zeros",
# ConstraintDual not supported for SecondOrderCone
second_order_exclude...,
],
verbose = true,
)
# Run the tests for second_order_exclude, this time excluding
# `MOI.ConstraintDual` and `MOI.DualObjectiveValue`.
push!(config.exclude, MOI.ConstraintDual)
push!(config.exclude, MOI.DualObjectiveValue)
@info "Running SOC"
MOI.Test.runtests(model, config; include=second_order_exclude, verbose = true)
# MOI.Test.runtests(
# model,
# config;
# exclude=String[
# # TODO(odow): this test is flakey.
# "test_cpsat_ReifiedAllDifferent",
# # Returns OTHER_ERROR, which is also reasonable.
# "test_conic_empty_matrix",
# # Uses the ZerosBridge and ConstraintDual
# "test_conic_linear_VectorOfVariables_2",
# # Returns ITERATION_LIMIT instead of DUAL_INFEASIBLE, which is okay.
# "test_linear_DUAL_INFEASIBLE",
# # Incorrect ObjectiveBound with an LP, but that's understandable.
# "test_solve_ObjectiveBound_MAX_SENSE_LP",
# # KNITRO doesn't support INFEASIBILITY_CERTIFICATE results.
# "test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_",
# # TODO(odow): bridge issues
# "test_basic_VectorNonlinearFunction_AllDifferent",
# "test_basic_VectorNonlinearFunction_BinPacking",
# "test_basic_VectorNonlinearFunction_Circuit",
# "test_basic_VectorNonlinearFunction_Complements",
# "test_basic_VectorNonlinearFunction_CountAtLeast",
# "test_basic_VectorNonlinearFunction_CountBelongs",
# "test_basic_VectorNonlinearFunction_CountDistinct",
# "test_basic_VectorNonlinearFunction_CountGreaterThan",
# "test_basic_VectorNonlinearFunction_GeometricMeanCone",
# "test_basic_VectorNonlinearFunction_HyperRectangle",
# "test_basic_VectorNonlinearFunction_Nonnegatives",
# "test_basic_VectorNonlinearFunction_Nonpositives",
# "test_basic_VectorNonlinearFunction_NormInfinityCone",
# "test_basic_VectorNonlinearFunction_NormOneCone",
# "test_basic_VectorNonlinearFunction_RotatedSecondOrderCone",
# "test_basic_VectorNonlinearFunction_SecondOrderCone",
# "test_basic_VectorNonlinearFunction_SOS1",
# "test_basic_VectorNonlinearFunction_SOS2",
# "test_basic_VectorNonlinearFunction_Table",
# "test_basic_VectorNonlinearFunction_Zeros",
# # ConstraintDual not supported for SecondOrderCone
# second_order_exclude...,
# ],
# verbose = true,
# )
# # Run the tests for second_order_exclude, this time excluding
# # `MOI.ConstraintDual` and `MOI.DualObjectiveValue`.
# push!(config.exclude, MOI.ConstraintDual)
# push!(config.exclude, MOI.DualObjectiveValue)
# @info "Running SOC"
# MOI.Test.runtests(model, config; include=second_order_exclude, verbose = true)
return
end

function test_zero_one_with_no_bounds()
model = MOI.instantiate(KNITRO.Optimizer)
MOI.set(model, MOI.Silent(), true)
x = MOI.add_variable(model)
MOI.add_constraint(model, x, MOI.ZeroOne())
MOI.set(model, MOI.ObjectiveSense(), MOI.MAX_SENSE)
MOI.set(model, MOI.ObjectiveFunction{typeof(x)}(), x)
MOI.optimize!(model)
@test isapprox(MOI.get(model, MOI.VariablePrimal(), x), 1.0; atol=1e-6)
return
end
# function test_zero_one_with_no_bounds()
# model = MOI.instantiate(KNITRO.Optimizer)
# MOI.set(model, MOI.Silent(), true)
# x = MOI.add_variable(model)
# MOI.add_constraint(model, x, MOI.ZeroOne())
# MOI.set(model, MOI.ObjectiveSense(), MOI.MAX_SENSE)
# MOI.set(model, MOI.ObjectiveFunction{typeof(x)}(), x)
# MOI.optimize!(model)
# @test isapprox(MOI.get(model, MOI.VariablePrimal(), x), 1.0; atol=1e-6)
# return
# end

function test_RawOptimizerAttribute()
model = MOI.instantiate(KNITRO.Optimizer)
attr = MOI.RawOptimizerAttribute("bad_attr")
@test !MOI.supports(model, attr)
@test_throws MOI.UnsupportedAttribute{typeof(attr)} MOI.get(model, attr)
@test_throws MOI.UnsupportedAttribute{typeof(attr)} MOI.set(model, attr, 0)
attr = MOI.RawOptimizerAttribute("maxtime_real")
@test MOI.supports(model, attr)
@test_throws MOI.GetAttributeNotAllowed{typeof(attr)} MOI.get(model, attr)
MOI.set(model, attr, 10.0)
@test MOI.get(model, attr) == 10.0
return
end
# function test_RawOptimizerAttribute()
# model = MOI.instantiate(KNITRO.Optimizer)
# attr = MOI.RawOptimizerAttribute("bad_attr")
# @test !MOI.supports(model, attr)
# @test_throws MOI.UnsupportedAttribute{typeof(attr)} MOI.get(model, attr)
# @test_throws MOI.UnsupportedAttribute{typeof(attr)} MOI.set(model, attr, 0)
# attr = MOI.RawOptimizerAttribute("maxtime_real")
# @test MOI.supports(model, attr)
# @test_throws MOI.GetAttributeNotAllowed{typeof(attr)} MOI.get(model, attr)
# MOI.set(model, attr, 10.0)
# @test MOI.get(model, attr) == 10.0
# return
# end

end

Expand Down

0 comments on commit 2a5e16e

Please sign in to comment.