Skip to content

Commit 1b848c6

Browse files
committed
ConstraintBasisStatus tests for interval and slackscalar bridge
1 parent 26682f7 commit 1b848c6

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

test/bridge.jl

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ end
321321
@testset "Bridge tests" begin
322322
mock = MOIU.MockOptimizer(SimpleModel{Float64}())
323323
config = MOIT.TestConfig()
324+
config_with_basis = MOIT.TestConfig(basis = true)
324325

325326
@testset "GreaterToLess" begin
326327
bridged_mock = MOIB.GreaterToLess{Float64}(mock)
@@ -497,18 +498,31 @@ end
497498
MOI.Interval{Float64})])
498499
MOIU.set_mock_optimize!(mock,
499500
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [5.0, 5.0],
501+
(MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}) => [MOI.BASIC],
502+
(MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}) => [MOI.NONBASIC],
503+
(MOI.SingleVariable, MOI.GreaterThan{Float64}) => [MOI.BASIC, MOI.BASIC],
500504
(MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}) => [0],
501505
(MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}) => [-1]),
502506
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [2.5, 2.5],
507+
(MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}) => [MOI.NONBASIC],
508+
(MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}) => [MOI.BASIC],
509+
(MOI.SingleVariable, MOI.GreaterThan{Float64}) => [MOI.BASIC, MOI.BASIC],
503510
(MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}) => [1],
504511
(MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}) => [0]),
505-
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1.0, 1.0]),
506-
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [6.0, 6.0]))
507-
MOIT.linear10test(bridged_mock, config)
512+
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1.0, 1.0],
513+
(MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}) => [MOI.NONBASIC],
514+
(MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}) => [MOI.BASIC],
515+
(MOI.SingleVariable, MOI.GreaterThan{Float64}) => [MOI.BASIC, MOI.BASIC]),
516+
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [6.0, 6.0],
517+
(MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}) => [MOI.BASIC],
518+
(MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}) => [MOI.NONBASIC],
519+
(MOI.SingleVariable, MOI.GreaterThan{Float64}) => [MOI.BASIC, MOI.BASIC]))
520+
MOIT.linear10test(bridged_mock, config_with_basis)
508521
ci = first(MOI.get(bridged_mock, MOI.ListOfConstraintIndices{MOI.ScalarAffineFunction{Float64}, MOI.Interval{Float64}}()))
509522
newf = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([1.0, -1.0], MOI.get(bridged_mock, MOI.ListOfVariableIndices())), 0.0)
510523
MOI.set(bridged_mock, MOI.ConstraintFunction(), ci, newf)
511524
@test MOI.get(bridged_mock, MOI.ConstraintFunction(), ci) newf
525+
@test MOI.get(bridged_mock, MOI.ConstraintBasisStatus(), ci) == MOI.NONBASIC_AT_UPPER
512526
test_delete_bridge(bridged_mock, ci, 2, ((MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}, 0),
513527
(MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}, 0)))
514528
end
@@ -540,6 +554,16 @@ end
540554
])
541555

542556
# There are extra variables due to the bridge
557+
MOIU.set_mock_optimize!(mock,
558+
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1, 0, 1],
559+
(MOI.ScalarAffineFunction{Float64}, MOI.EqualTo{Float64}) => [MOI.NONBASIC],
560+
(MOI.SingleVariable, MOI.GreaterThan{Float64}) => [MOI.BASIC, MOI.NONBASIC],
561+
(MOI.SingleVariable, MOI.LessThan{Float64}) => [MOI.NONBASIC]))
562+
MOIT.linear2test(bridgedmock, MOIT.TestConfig(duals = false, basis = true))
563+
c1 = MOI.get(bridgedmock, MOI.ListOfConstraintIndices{MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}}())
564+
@test length(c1) == 1
565+
@test MOI.get(bridgedmock, MOI.ConstraintBasisStatus(), c1[]) == MOI.NONBASIC
566+
543567
MOIU.set_mock_optimize!(mock,
544568
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1.0, 1.0, 2.0, 2.0]),
545569
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [0.5, 0.5, 1.0, 1.0],

0 commit comments

Comments
 (0)