|
321 | 321 | @testset "Bridge tests" begin |
322 | 322 | mock = MOIU.MockOptimizer(SimpleModel{Float64}()) |
323 | 323 | config = MOIT.TestConfig() |
| 324 | + config_with_basis = MOIT.TestConfig(basis = true) |
324 | 325 |
|
325 | 326 | @testset "GreaterToLess" begin |
326 | 327 | bridged_mock = MOIB.GreaterToLess{Float64}(mock) |
@@ -497,18 +498,31 @@ end |
497 | 498 | MOI.Interval{Float64})]) |
498 | 499 | MOIU.set_mock_optimize!(mock, |
499 | 500 | (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], |
500 | 504 | (MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}) => [0], |
501 | 505 | (MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}) => [-1]), |
502 | 506 | (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], |
503 | 510 | (MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}) => [1], |
504 | 511 | (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) |
508 | 521 | ci = first(MOI.get(bridged_mock, MOI.ListOfConstraintIndices{MOI.ScalarAffineFunction{Float64}, MOI.Interval{Float64}}())) |
509 | 522 | newf = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.([1.0, -1.0], MOI.get(bridged_mock, MOI.ListOfVariableIndices())), 0.0) |
510 | 523 | MOI.set(bridged_mock, MOI.ConstraintFunction(), ci, newf) |
511 | 524 | @test MOI.get(bridged_mock, MOI.ConstraintFunction(), ci) ≈ newf |
| 525 | + @test MOI.get(bridged_mock, MOI.ConstraintBasisStatus(), ci) == MOI.NONBASIC_AT_UPPER |
512 | 526 | test_delete_bridge(bridged_mock, ci, 2, ((MOI.ScalarAffineFunction{Float64}, MOI.GreaterThan{Float64}, 0), |
513 | 527 | (MOI.ScalarAffineFunction{Float64}, MOI.LessThan{Float64}, 0))) |
514 | 528 | end |
|
540 | 554 | ]) |
541 | 555 |
|
542 | 556 | # 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 | + |
543 | 567 | MOIU.set_mock_optimize!(mock, |
544 | 568 | (mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [1.0, 1.0, 2.0, 2.0]), |
545 | 569 | (mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, [0.5, 0.5, 1.0, 1.0], |
|
0 commit comments