Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Problem with integer cost function

    Posted 05/23/18 09:47 PM

    Originally posted by: yvrob


    Hello everybody,

     

    I am facing a duration problem to solve a heavy MILP on CPLEX, so I am trying to reduce the solving time by using the fact that my cost function is an integer variable. 

     

    Indeed, I see that when I solve the problem, the "best bound" is not an integer and for me, that means that CPLEX is trying to solve the problem for a non-integer variable as well.

    For example, if my best bound is at 11.26, instead of considering all the branches between 11.26 and 12, I would like to "force" CPLEX to set the best bound to the next integer, 12 (as I know for sure that my cost function is integer, no solution will be under this value). It would drastically reduce the number of branches, and hopefully the solving time. 

    Is this possible ? If yes how ? And if no, would it be a mean to specify to CPLEX that I am looking for an integer as a cost function ?

     

    Thank you


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Problem with integer cost function

    Posted 05/24/18 08:30 AM

    I think you are missing something here. There are no "branch between 11.26 and 12". If the best bound displayed is 11.26 then this means that the minimum of all LP relaxations of all open nodes is 11.26.  Given that there is no integrality information in the relaxations, fractional values are to be expected here.

    Consider a node that has a best bound of 11.26. There is no way to tell whether this node contains a feasible solution with objective value 12 or not. In order to be able to prune this node and prevent further processing, you would have to prove that the upper bound (i.e., the best feasible solution you can get from this) is less than 12.

    Internally, CPLEX is aware that your objective function is integer and tries to exploit this as much as possible. For example if your best feasible solution is 13 then CPLEX will stop as soon as the best bound becomes larger than 12.


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Problem with integer cost function

    Posted 05/25/18 03:53 PM

    I've had some luck setting the MIP.Tolerances.ObjDifference parameter to something like 0.999 in cases like this. I don't think it affects CPLEX's ability to recognize when the bound is tight enough to declare victory (although it might), but it seems to let CPLEX prune nodes sooner. I've got an application right now where I appear to get faster solution times (and see "cutoff" more frequently in the node log).


    #CPLEXOptimizers
    #DecisionOptimization