1
votes

When I am using CPLEX to solve a MIQP(mixed integer programs with quadratic terms), I found the progress reports just show the incorrect Objective and Best Bound. As shown below, the Objective and the Best Bound is less than -60000 but the Best Integer is 200+. The Best Integer is possible but the others make no sense.

My objective is (Y1-XW)'(Y1-XW)+(Y2-X(I-W))'(Y2-X(I-W)), where Y1, Y2 are known vectors and X is a metrix, I is a unit vector. W is the vector with 453 variables which types are all binary. My purpose is to find a best W to minimize the objective.

It's obvious that the objective value must >= 0, but when I put the linear Obj and the quadratic OBJ, things may get wrong. I also check my input and the .lp file, and they are correct. How can i fix it?

Node Left Objective IInf Best Integer Best Bound ItCnt Gap

  • 0+    0                         1369.0478  -185311.5218            ---
    
  • 0+    0                          749.0133  -185311.5218            ---
    
  • 0+    0                          518.5277  -185311.5218            --- 
    
  • 0+    0                          494.2433  -185311.5218            --- 
    
  • 0+    0                          384.2811  -185311.5218            --- 
    
  • 0+    0                          332.7754  -185311.5218            --- 
    
  • 0+    0                          218.6225  -185311.5218            --- 
    
  • 0+    0                          214.4162  -185311.5218            --- 
    
  • 0+    0                          210.7467  -185311.5218            --- 
    0     0   -61255.7340   408      210.7467   -61255.7340       22   --- 
    
1
Cplex may have reformulated the model to a linear MIP model. I would not worry too much about these initial best bounds. They become more interesting later on. - Erwin Kalvelagen
Thanks for your reply. When I set all the variables integer, the cplex seems work correctly. But it just wrong when I set them binary. - YuJT
Only for binary variables a linear reformulation is obvious. - Erwin Kalvelagen
Is that necessary? Can I turn off this reformulation? I think it just not working on my problem. Thank you. - YuJT
Cplex has documentation on this. See the QToLin switch. - Erwin Kalvelagen

1 Answers

0
votes

I don't know what CPLEX do to the binary variables, it may works in other cases but not mine. I try many methods but failed, so I decided to modify my model so that the variables can be restricted to {-1, 0}, and it turn normal finally.