Skip to content

Commit a88cb73

Browse files
authored
Merge pull request #261 from JuliaOpt/bl/testnoinfcert
Test LIN3/LIN4 without infeasibility certificate
2 parents 71410b2 + e0b23a3 commit a88cb73

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/Utilities/mockoptimizer.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,19 +247,21 @@ loadconstraint!(mock::MockOptimizer, ci::CI, f::MOI.AbstractFunction, s::MOI.Abs
247247
canloadconstraint(mock::MockOptimizer, F::Type{<:MOI.AbstractFunction}, S::Type{<:MOI.AbstractSet}) = canloadconstraint(mock.inner_model, F, S)
248248

249249
"""
250-
mock_optimize!(optimizer::MockOptimizer, primstatus::MOI.ResultStatusCode, varprim::Vector, dualstatus::MOI.ResultStatusCode, conduals::Pair...)
250+
mock_optimize!(optimizer::MockOptimizer, termstatus::MOI.TerminationStatusCode, primstatus::MOI.ResultStatusCode, varprim::Vector, dualstatus::MOI.ResultStatusCode, conduals::Pair...)
251251
252-
Sets the termination status of `optimizer` to `MOI.Success`, the result count to 1, the primal (resp. dual) status to `primstatus` (resp. `dualstatus`).
252+
Sets the termination status of `optimizer` to `termstatus`, the result count to 1, the primal (resp. dual) status to `primstatus` (resp. `dualstatus`).
253253
The primal values of the variables in the order returned by `ListOfVariableIndices` are set to `varprim`.
254+
If `termstatus` is missing, it is assumed to be `MOI.Success`.
254255
If `primstatus` (resp. `dualstatus`) is missing, it is assumed to be `MOI.FeasiblePoint`.
255256
The dual values are set to the values specified by `conduals`. Each pair is of the form `(F,S)=>[...]` where `[...]` is the the vector of dual values for the constraints `F`-in-`S` in the order returned by `ListOfConstraintIndices{F,S}`.
256257
If `primstatus`, `varprim` and `dualstatus`, the problem is assumed to be infeasible with the infeasibility certificate contained in `conduals`.
257258
"""
258-
function mock_optimize!(optimizer::MockOptimizer, primdual...)
259-
MOI.set!(optimizer, MOI.TerminationStatus(), MOI.Success)
259+
function mock_optimize!(optimizer::MockOptimizer, termstatus::MOI.TerminationStatusCode, primdual...)
260+
MOI.set!(optimizer, MOI.TerminationStatus(), termstatus)
260261
MOI.set!(optimizer, MOI.ResultCount(), 1)
261262
mock_primal!(optimizer, primdual...)
262263
end
264+
mock_optimize!(optimizer::MockOptimizer, primdual...) = mock_optimize!(optimizer, MOI.Success, primdual...)
263265

264266
# Sets variable primal to varprim
265267
function mock_primal!(optimizer::MockOptimizer, primstatus::MOI.ResultStatusCode, varprim::Vector, dual...)

test/contconic.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,16 @@
2525
MOIT.lin2ftest(optimizer, config)
2626
optimizer.optimize! = (optimizer::MOIU.MockOptimizer) -> MOIU.mock_optimize!(optimizer)
2727
MOIT.lin3test(optimizer, config)
28+
optimizer.optimize! = (optimizer::MOIU.MockOptimizer) -> MOIU.mock_optimize!(optimizer, MOI.InfeasibleNoResult)
29+
MOIT.lin3test(optimizer, MOIT.TestConfig(infeas_certificates=false))
30+
optimizer.optimize! = (optimizer::MOIU.MockOptimizer) -> MOIU.mock_optimize!(optimizer, MOI.InfeasibleOrUnbounded)
31+
MOIT.lin3test(optimizer, MOIT.TestConfig(infeas_certificates=false))
2832
optimizer.optimize! = (optimizer::MOIU.MockOptimizer) -> MOIU.mock_optimize!(optimizer)
2933
MOIT.lin4test(optimizer, config)
34+
optimizer.optimize! = (optimizer::MOIU.MockOptimizer) -> MOIU.mock_optimize!(optimizer, MOI.InfeasibleNoResult)
35+
MOIT.lin4test(optimizer, MOIT.TestConfig(infeas_certificates=false))
36+
optimizer.optimize! = (optimizer::MOIU.MockOptimizer) -> MOIU.mock_optimize!(optimizer, MOI.InfeasibleOrUnbounded)
37+
MOIT.lin4test(optimizer, MOIT.TestConfig(infeas_certificates=false))
3038
end
3139
@testset "Conic SOC tests" begin
3240
optimizer.optimize! = (optimizer::MOIU.MockOptimizer) -> MOIU.mock_optimize!(optimizer, [1.0, 1/√2, 1/√2],

0 commit comments

Comments
 (0)