Setting incumbents and adding cuts immediately after that
Hello!
So, I have a bit of weird setup given in a paper. The paper asks me to solve a surface-level model and then whenever an integer MIPSOL callback is triggered, it asks me to solve a smaller(reduced) but full model. This reduced model shall give rise to an incumbent. I shall set the incumbent using cbSetSolution. But, then to avoid looking at the same search space again - the paper also asks me to add a cut - which is where I am a bit puzzled.
So - I have done the following setup :

Basically, the goal of the H1 heuristic is that, when I solve the reduced model(h1_repair) --→ I get the best possible solution possible and thus there is no use in revisiting the same hub set again!
In the meanwhile it so happens that this hub set full solution is yielding a better solution than the current upper bound — then update it using incumbent setter…

Now-in my logs this is what is happening!
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3314808.951535336 3312358.6399932285
✅ Incumbent solution set successfully
✅Objective value: 3314808.951535336
🚨 H1 Repair Cuts found!
0 0 3314808.95 0 - - 3314808.95 - - 1s
0 0 3318036.34 0 15 - 3318036.34 - - 1s
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
67705797.82855582 3541479.8552169413
✅ Incumbent solution set successfully
✅Objective value: 67705797.82855582
🚨 H1 Repair Cuts found!
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3323327.9430234255 3320127.1943098833
✅ Incumbent solution set successfully
✅Objective value: 3323327.9430234255
🚨 H1 Repair Cuts found!
0 0 3323327.94 0 - - 3323327.94 - - 2s
0 0 3324591.33 0 16 - 3324591.33 - - 2s
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3327807.1016868185 3324810.9724162114
✅ Incumbent solution set successfully
✅Objective value: 3327807.1016868185
🚨 H1 Repair Cuts found!
0 0 3327807.10 0 - - 3327807.10 - - 2s
0 0 3335663.09 0 26 - 3335663.09 - - 2s
0 0 3339350.12 0 27 - 3339350.12 - - 2s
0 0 3339350.12 0 30 - 3339350.12 - - 2s
0 0 3340359.69 0 31 - 3340359.69 - - 2s
0 0 3340359.69 0 31 - 3340359.69 - - 2s
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3363294.216006811 3359918.765018452
✅ Incumbent solution set successfully
✅Objective value: 3363294.216006811
🚨 H1 Repair Cuts found!
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3383621.765053873 3381849.861350233
✅ Incumbent solution set successfully
✅Objective value: 3383621.765053873
🚨 H1 Repair Cuts found!
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3670949.0903868824 3667747.5044768383
✅ Incumbent solution set successfully
✅Objective value: 3670949.0903868824
🚨 H1 Repair Cuts found!
0 2 3351421.65 0 31 - 3351421.65 - - 3s
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3358440.3069479093 3355324.521096331
✅ Incumbent solution set successfully
✅Objective value: 3358440.3069479093
🚨 H1 Repair Cuts found!
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3367579.262431262 3364051.41752381
✅ Incumbent solution set successfully
✅Objective value: 3367579.262431262
🚨 H1 Repair Cuts found!
Set parameter TimeLimit to value 30
Set parameter MIPGap to value 0.1
3371124.0601348197 3367776.853519313
✅ Incumbent solution set successfully
✅Objective value: 3371124.0601348197
You shall see that the incumbent of the original model is not getting updated.
Also, if I leave the process to go on like this - what essentially happens is that since I am immediately adding a cut to not visit the same set of hubs again - all such possible combinations get added - and I end up with “No Optimal Solution”!!!! i.e. infeasible!!!
Cutting planes:
Gomory: 2
Lift-and-project: 1
MIR: 2
Zero half: 2
Mod-K: 1
Lazy constraints: 64
Explored 103 nodes (665 simplex iterations) in 18.33 seconds (0.41 work units)
Thread count was 16 (of 16 available processors)
Solution count 0
Model is infeasible
Best objective -, best bound -, gap -
User-callback calls 685, time in user-callback 16.90 sec
Passed until here...
No optimal solution found
Model status: 3
Now, I am not sure how to escape this issue!
Please do read the following snippet from the attached paper

I would have to do a very similar thing for H2 also - but right now doing it for H1!
Hope you guys can help me out soon! Thanks.
Please sign in to leave a comment.
Comments
0 comments