|
48 | 48 | x_val = MOI.get(model, MOI.CallbackVariablePrimal(cb_data), x) |
49 | 49 | y_val = MOI.get(model, MOI.CallbackVariablePrimal(cb_data), y) |
50 | 50 | @test MOI.supports(model, MOI.LazyConstraint(cb_data)) |
| 51 | + status = MOI.get(model, MOI.CallbackNodeStatus(cb_data)) |
| 52 | + if [x_val, y_val] ≈ round.(Int, [x_val, y_val]) atol=1e-7 |
| 53 | + @test status == MOI.CALLBACK_NODE_STATUS_INTEGER |
| 54 | + else |
| 55 | + @test status == MOI.CALLBACK_NODE_STATUS_FRACTIONAL |
| 56 | + end |
51 | 57 | if y_val - x_val > 1 + 1e-6 |
52 | 58 | MOI.submit( |
53 | 59 | model, |
|
145 | 151 | end |
146 | 152 | end |
147 | 153 | @test MOI.supports(model, MOI.UserCut(cb_data)) |
| 154 | + status = MOI.get(model, MOI.CallbackNodeStatus(cb_data)) |
| 155 | + @test status == MOI.CALLBACK_NODE_STATUS_FRACTIONAL |
148 | 156 | if accumulated > 10.0 |
149 | 157 | MOI.submit( |
150 | 158 | model, |
|
221 | 229 | ) == MOI.HEURISTIC_SOLUTION_REJECTED |
222 | 230 | solution_rejected = true |
223 | 231 | end |
| 232 | + status = MOI.get(model, MOI.CallbackNodeStatus(cb_data)) |
| 233 | + @test status == MOI.CALLBACK_NODE_STATUS_FRACTIONAL |
224 | 234 | end) |
225 | 235 | @test MOI.supports(model, MOI.HeuristicCallback()) |
226 | 236 | MOI.optimize!(model) |
|
296 | 306 | end |
297 | 307 | x_val = MOI.get(model, MOI.CallbackVariablePrimal(cb_data), x) |
298 | 308 | y_val = MOI.get(model, MOI.CallbackVariablePrimal(cb_data), y) |
| 309 | + status = MOI.get(model, MOI.CallbackNodeStatus(cb_data)) |
| 310 | + if [x_val, y_val] ≈ round.(Int, [x_val, y_val]) atol=1e-7 |
| 311 | + @test status == MOI.CALLBACK_NODE_STATUS_INTEGER |
| 312 | + else |
| 313 | + @test status == MOI.CALLBACK_NODE_STATUS_FRACTIONAL |
| 314 | + end |
299 | 315 | if y_val - x_val > 1 + 1e-6 |
300 | 316 | MOI.submit(model, MOI.LazyConstraint(cb_data), |
301 | 317 | MOI.ScalarAffineFunction{Float64}( |
|
333 | 349 | reason = GLPK.glp_ios_reason(cb_data.tree) |
334 | 350 | push!(cb_calls, reason) |
335 | 351 | if reason != GLPK.GLP_ICUTGEN |
| 352 | + status = MOI.get(model, MOI.CallbackNodeStatus(cb_data)) |
| 353 | + @test status !== nothing |
336 | 354 | return |
337 | 355 | end |
338 | 356 | terms = MOI.ScalarAffineTerm{Float64}[] |
|
352 | 370 | ) |
353 | 371 | user_cut_submitted = true |
354 | 372 | end |
| 373 | + status = MOI.get(model, MOI.CallbackNodeStatus(cb_data)) |
| 374 | + @test status == MOI.CALLBACK_NODE_STATUS_FRACTIONAL |
355 | 375 | end) |
356 | 376 | MOI.optimize!(model) |
357 | 377 | @test user_cut_submitted |
|
385 | 405 | ) == MOI.HEURISTIC_SOLUTION_REJECTED |
386 | 406 | solution_rejected = true |
387 | 407 | end |
| 408 | + status = MOI.get(model, MOI.CallbackNodeStatus(cb_data)) |
| 409 | + @test status == MOI.CALLBACK_NODE_STATUS_FRACTIONAL |
388 | 410 | end) |
389 | 411 | MOI.optimize!(model) |
390 | 412 | @test solution_accepted |
|
0 commit comments