Originally posted by: Perth2
I use CPLEX with Java in a column generation heuristic context. I have a restricted master problem (RPM) and a shortest path sub problem.
One iteration goes like this: Starting from a current solution to my LP relaxed RMP, I update my sub problem with the duals from the RMP and find new columns. These columns are then added to the RMP, the RMP is reoptimized and the process is repeated.
At regular points in time I want to solve my RMP as an IP, to see if some of the newly generated columns can be combined to a new IP solution to the RMP.
Right now, I have only one model in CPLEX and I am converting this model back and forth from IP to LP using the calls cplex.conversion(...), cplex.add(conversion), cplex.remove(conversion). I am unsure whether this is the right way to go. Obviously, I want solution information carried along between iterations, with regard to both my LP and IP versions of the model, so as to enable CPLEX to find new LP and IP solutions based on the previous solution and the newly added columns as effectively as possible.
Which setup would be the best to achieve this?
Should I have two models, one IP and one LP that I update in parallel to avoid conversion at all?
I observe in the current setup, for instance, that a found LP solution to my maximisation problem is not carried over to the converted IP as the upper bound.
Should I prevent preprocessing of the model between iterations, so as not to discard any previous solution information?
#CPLEXOptimizers#DecisionOptimization