I have a rather complex CP scheduling model and I would like to start it off with a heuristically obtained initial / starting solution. While I am able to use IloSolution to provide values of all IloInterval variables to the model, CP Optimizer (12.4 and 12.5.1) does not recognize it as a proper feasible solution right away and starts branching.
I believe the issue will get resolved if there was a way for me to specify values of CumulFunction expressions as part of the starting solution, but unfortunately I don't see a way to do it.
Here is the setup in more detail:
Not only do I have a simple heuristic to find a starting solution, the model can be simplified to various extents by removing some scheduling flexibility and then solved faster, so I am trying to solve it in multiple stages by solving "easier" stages first and then passing on the solution obtained as a starting point for the next stage. This starting point is always guaranteed to be a proper feasible solution.
The issue, I believe, is the fact that several of the resource constraints on these interval variables are specified using CumulFunctions, which sum up resource usage in each 'service region' and make sure it never exceeds the time-dependent (and itself dynamic) resource availability in that service region. The resource availability per service region itself is a CumulFunction which, when summed over all regions, must not exceed a time-dependent (but fixed and provided as input) overall global resource availability.
The value of these regional cumulative functions for resource availability, unfortunately, cannot be inferred from values of the IloInterval variables provided through IloSolution. (Regional resource usage can be inferred, of course, but not availability.) My guess is that CP Optimizer is unable to realize that, given the IloInterval variable values, the regional resource availability CumulFunctions can in fact be set in such a way so as to satisfy the overall global availability constraint.
Any suggestions on how to make CPO realize it is getting a feasible starting solution would be greatly appreciated!
PS. If the description of CumulFunctions for resource usage and availability seem overly complex, I would be happy to provide clarification. If there is an easier way to model all this, that would be much appreciated too!