I am trying to solve a flexible job shop problem variant using or-tools. And in some input configuration, in general after one month of scheduling time, I am facing a weird behavior.
I am aware that the problem is NP-Hard, so I am expecting a sort of exponential growth of the time gap between the last feasible and the new one. I am enumerating all the solutions and print them, and i noticed practically that the library find all the feasible solutions 2 minutes, and actually the last one is the optimal, but the library never exists and continues in explore not finding any other solutions for days, literally days even in on 32 cores machine, and increasing the used memory day by day. The last log line is:
#Bound 24.35s best:20 next:[21,22] bool_core num_cores:2 [core:2 mw:1 d:5] assumptions:1 depth:6 fixed_bools:0/151
The maximum score is 25, and the 20 reached is indee the best possible for this configuration. So I wonder what is the CP-SAT solver actually doing? Isn't it realizing that what it found is indeed the optimal solution? How can I help the solver to end the computation realizing the optimal?