@@ -53,19 +53,38 @@ MockSDOptimizer{T}() where T = MockSDOptimizer{T}(0,
5353 (:: MockSDOptimizer ) -> begin end ,
5454 false ,
5555 false ,
56- MOI. Success ,
57- MOI. UnknownResultStatus ,
58- MOI. UnknownResultStatus ,
56+ MOI. OptimizeNotCalled ,
57+ MOI. NoSolution ,
58+ MOI. NoSolution ,
5959 BlockMatrix {T} (Matrix{T}[]),
6060 BlockMatrix {T} (Matrix{T}[]),
6161 T[])
6262mockSDoptimizer (T:: Type ) = SDOIOptimizer (MockSDOptimizer {T} (), T)
63+
64+ MOI. get (:: MockSDOptimizer , :: MOI.SolverName ) = " MockSD"
65+
66+ function MOI. empty! (mock:: MockSDOptimizer{T} ) where T
67+ mock. nconstrs = 0
68+ mock. blkdims = Int[]
69+ mock. constraint_constants = T[]
70+ mock. objective_coefficients = Tuple{T, Int, Int, Int}[]
71+ mock. constraint_coefficients = Vector{Tuple{T, Int, Int, Int}}[]
72+ mock. hasprimal = false
73+ mock. hasdual = false
74+ mock. terminationstatus = MOI. OptimizeNotCalled
75+ mock. primalstatus = MOI. NoSolution
76+ mock. dualstatus = MOI. NoSolution
77+ mock. X = BlockMatrix {T} (Matrix{T}[])
78+ mock. Z = BlockMatrix {T} (Matrix{T}[])
79+ mock. y = T[]
80+ end
6381coefficienttype (:: MockSDOptimizer{T} ) where T = T
6482
6583getnumberofconstraints (optimizer:: MockSDOptimizer ) = optimizer. nconstrs
6684getnumberofblocks (optimizer:: MockSDOptimizer ) = length (optimizer. blkdims)
6785getblockdimension (optimizer:: MockSDOptimizer , blk) = optimizer. blkdims[blk]
68- function init! (optimizer:: MockSDOptimizer{T} , blkdims:: Vector{Int} , nconstrs:: Integer ) where T
86+ function init! (optimizer:: MockSDOptimizer{T} , blkdims:: Vector{Int} ,
87+ nconstrs:: Integer ) where T
6988 optimizer. nconstrs = nconstrs
7089 optimizer. blkdims = blkdims
7190 optimizer. constraint_constants = zeros (T, nconstrs)
@@ -84,12 +103,16 @@ function setobjectivecoefficient!(optimizer::MockSDOptimizer, val, blk::Integer,
84103end
85104
86105getconstraintcoefficients (optimizer:: MockSDOptimizer , c) = optimizer. constraint_coefficients[c]
87- function setconstraintcoefficient! (optimizer:: MockSDOptimizer , val, c:: Integer , blk:: Integer , i:: Integer , j:: Integer )
106+ function setconstraintcoefficient! (optimizer:: MockSDOptimizer , val, c:: Integer ,
107+ blk:: Integer , i:: Integer , j:: Integer )
88108 push! (optimizer. constraint_coefficients[c], (val, blk, i, j))
89109end
90110
91111MOI. get (mock:: MockSDOptimizer , :: MOI.TerminationStatus ) = mock. terminationstatus
92- MOI. set (mock:: MockSDOptimizer , :: MOI.TerminationStatus , value:: MOI.TerminationStatusCode ) = (mock. terminationstatus = value)
112+ function MOI. set (mock:: MockSDOptimizer , :: MOI.TerminationStatus ,
113+ value:: MOI.TerminationStatusCode )
114+ mock. terminationstatus = value
115+ end
93116MOI. get (mock:: MockSDOptimizer , :: MOI.PrimalStatus ) = mock. primalstatus
94117MOI. set (mock:: MockSDOptimizer , :: MOI.PrimalStatus , value:: MOI.ResultStatusCode ) = (mock. primalstatus = value)
95118MOI. get (mock:: MockSDOptimizer , :: MOI.DualStatus ) = mock. dualstatus
129152function MOIU. rec_mock_optimize (mock:: MockSDOptimizer , opt:: Function , opts:: Function... )
130153 # TODO replace mock.optimize! = ... by MOI.set(..., MOIU.MockOptimizeFunction, ...)
131154 # where MOIU.MockOptimizeFunction is a MockModelAttribute
132- (mock:: MockSDOptimizer ) -> (opt (mock); mock. optimize! = MOIU. rec_mock_optimize (mock, opts... ))
155+ (mock:: MockSDOptimizer ) -> begin
156+ opt (mock)
157+ mock. optimize! = MOIU. rec_mock_optimize (mock, opts... )
158+ end
133159end
134160MOIU. rec_mock_optimize (mock:: MockSDOptimizer , opt:: Function ) = opt
135161
@@ -140,7 +166,9 @@ function MOIU.mock_optimize!(mock::MockSDOptimizer, termstatus::MOI.TerminationS
140166 MOIU. mock_dual! (mock, dual... )
141167end
142168# Default termination status
143- MOIU. mock_optimize! (mock:: MockSDOptimizer , primdual... ) = MOIU. mock_optimize! (mock, MOI. Success, primdual... )
169+ function MOIU. mock_optimize! (mock:: MockSDOptimizer , primdual... )
170+ MOIU. mock_optimize! (mock, MOI. Optimal, primdual... )
171+ end
144172function MOIU. mock_optimize! (mock:: MockSDOptimizer , termstatus:: MOI.TerminationStatusCode )
145173 MOI. set (mock, MOI. TerminationStatus (), termstatus)
146174end
0 commit comments