Hello dear community,
As a bit of context, our current solution is using CPLEX .NET API with F# in order to control an optimisation process.
During a phase, we lunch several runs of CPLEX attempting to fix a number of variables (or bound them) to accelerate the process of finding the sweet spot of relaxation following the established business rules.
During this part of the process, one of our colleague added this line (in order to debug the state of the process) :
let test = passe.InstanceOPL.Modele.GetElement("varMDG").AsNumMap() ...and after this sole modification, it seems like CPLEX is now finding an equivalent solution of the original solution (with same objective) to this part of the process. If we comment the line, it seems we get the original CPLEX answer back.
...and what is even stranger is that the F# variable "test" is not even used, so it would be only the "GetElement" (or "AsNumMap") that would be changing the behavior of CPLEX!
So I am right? It is possible that the invocation of these query functions may affect CPLEX outcome on equivalent solutions?
Of course we are working on enhancing this process to eliminate the equivalent state. Also, just to mention, should it be the case, we are not necessarily looking for a modification of the API or CPLEX, but we would like to understand the "magic", mostly to ensure that some other part of our code would not responsible of this behavior. :)
Thanks in advance!
------------------------------
Luc Charest
------------------------------
#DecisionOptimization