I am currently working on a Branch & Benders' Cut algorithm using Mosel. Based on the way that my original formulation is decomposed into the master and the sub problem, all variables in the objective function of the original formulation end up in the sub problem (those are the continuous variables). Hence, the master problem only contains a dummy variable in the objective function that is linked to the Benders' optimality cuts.
The problem I am facing is that whenever Xpress obtains an integer solution during the branch & bound algorithm (either as the result of an integer LP solution in a node or obtained through the heuristic), this solution obviously has the same value as the dummy variable. However, I would like this solution to have the "objective value of the original formulation".
If I don't change the objective value and let Xpress accept such a solution, then the search immediately terminates as the lower and upper bound are equal (in the root node, the dummy variable has an initial value of zero, i.e., before adding optimality cuts). If I reject this solution and just update the CUTOFF value, then Xpress will never find a feasible integer solution and terminate with the message integer infeasible.
So my question is, can I somehow change the objective value of an integer solution before it is accepted by Xpress (in the optnode or preintsol callback)?
I hope this makes sense.