Originally posted by: azak
Thank you for the comments, I'm sorry if it was unclear, I'll try to explain in more details.
>>So, how did the node log you attached have a zero objective, not only for the root, but for many subsequent nodes in the optimization? Were you using your second objective?
Yes, that is for the second objective. In general the problem is easily solvable if we have high K, which results in either the optimal number of colors (obj1) or 0 (obj2) as all the a variables are set to 0. In the example that I use for analysis here, the optimal number of colors to satisfy regular and group constraints is 10 (solving obj 1- log_bigK_o1).
The challenge start when we decrease the number of colors in such a way that diffNeighColor is still satisfied but some a(i) are forced to 1. Hence, the obj1 should be at least NbColors whereas obj2>0.
>>If so, can you post a log for a challenging model for the first objective?
Yes, attached as log_smallK_o1. The optimal number of colors is 10, I decreased to 9 (the bound could be 8 if some vertex weights are 0). Even more, I know that by reducing by 1 color, some of the groups will reuse a color. Summing the min weights of vertices in such groups I get 2.5518, so min value of obj1 is 10.5518 (2.5518 for obj2).
>>I'm not completely clear on the second objective; is it trying to minimize the sum of reused colors in a group that allows violations of the basic unique color requirement for edges?
It allows violations and reuse a color within the group (among the vertices that are not connected), so it still keeps the basic unique requirement for edges (diffNeighColor).
>>If I correctly understand your second objective, I am not particularly surprised that the model with the second objective is more difficult to solve for a branch and cut solver like CPLEX than the first. You are introducing some soft constraints with the second objective. Soft constraints can weaken a formulation in the sense that certain infeasibilities that previously could be used to derive cuts no longer are available. Think about it this way; if you had a knapsack constraint, you initially might be able to deduce numerous cover cuts. But, if you soften it by subtracting a surplus variable, you remove those cover cuts. The same thing applies for your model with clique cuts.
>>So, are most of your performance difficulties occurring with the second objective, or do you have them with the first objective as well? I'd really like to see a node log from a problematic run using the first objective, as I now have concluded the log you sent above involves the second objective, not the first.
Yes, the log attached before is with obj2. I have the problem with obj1 objective as soon as any of a[i] is set to 1 (previously mentioned log log_smallK_o1)
>>Regarding models with the second objective, try solving an auxiliary model where you minimize just the sum of the reuse variables.
I changed the second objective also to
O3: sum a(i) (log_smallK_o3) the bound doesn't move from 0 and I know that the optimal value is 28.
>>Also, try fixing all the reuse variables to 0 and solving the MIP. If it is infeasible, you immediately can add the cut that the sum of the reuse variables is >= 1.
I added then constraint sum a(i)>=1, and the bound is stuck at 1 (log_smallK_o3_v2).
Similarly no move if I use obj 2. The bound shows 0, even though I know that for this particular graph there would be 28 repeated colors and if those are applied to the nodes with the lowest weights within groups the objective should be at least 2.5518. I really don't understand this behavior.
>>Regarding models with the first objective, try setting CPLEX's clique cut parameter to its most aggressive setting of 3. That might help performance.
I tried that, as well as all other aggressive cuts, the bound doesn't move.
>>Also, you could run CPLEX's conflict refiner if the model is infeasible, and the resulting conflict may shed light on some tighter cuts.
Can you give me some more hints on how to use the conflict refiner efficiently?
#CPLEXOptimizers#DecisionOptimization