It is not really clear to me what you are trying to achieve: changing individual objective coefficients, bounds on variables, or the value or bound of the objective itself?
Note that if you are within a MIP search it is not possible to change the definition of the objective through BCL, however, matters are somewhat different if your algorithm is implemented via iterations over LP solves.
Thank you, Susanne!
I have a MIP master problem and a set of subproblems. For a given solution of the master problem, I can solve the set of subproblems to calculate the expected objective value of the complete problem.
In my algorithm, each time that an integer solution is found in the branch and bound tree of the master problem, I use that solution to calculate the expected objective value of the corresponding node. Then, I just would like to set the cutoff value of each integer node, according to a value that I calculate. I wonder if the cutoff parameter of the callback function XPRSsetcbpreintsol may work for this purpose. Thank you again!
The value passed to the CUTOFF control is applied to the entire MIP search tree. If, via the subproblems, you can calculate a better cutoff for each new integer solution found for the master problem, then you should indeed use this setting in the PREINTSOL callback. As long as you don't explicitly discard the solution in the PREINTSOL callback, the solution will be accepted no matter what you return as cutoff value.
If however you are looking to change the objective value (that is the bound on the objective) depending on subproblem solutions, please note that relaxing the bound would not make sense since the Optimizer will always use the strongest possible bound when comparing against the cutoff. Tightening the bound on the objective does not help the Optimizer either, it is likely to make the node harder to solve. - In this case it would be better to do a manual check within the callback to see if the adjusted objective value can be cut off.
Thank you Sussane!
Retrieving data ...