Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Finding a solution with a given optimum

    Posted 02/04/11 10:12 AM

    Originally posted by: pfaut


    Is it possible to have CPLEX either find the optimal solution of a problem or find a solution with at least a given threshold.

    As an example:
    Given I got a Problem P and "think" there is a solution with objective T. Now I would like CPLEX to find either the optimal solution (if it is worse then T) or any feasible solution with objective value T.

    I think it should be possible using goals but I am not quite sure how. I am using CPLEX in a c++ application.
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: Finding a solution with a given optimum

    Posted 02/04/11 04:49 PM

    Originally posted by: SystemAdmin


    Rather than Goals I think I would try a Callback. You basically want to examine each new incumbent as it is found, and if it meets your threshold then stop the optimization - if the threshold never is met then whatever CPLEX terminates with will be the optimum. (Of course you might want some additional stopping criterion such as a time limit, in case proof of optimality is elusive.) The example ilomipex4.cpp that comes with the product distribution contains something that isn't exactly what you are doing but may serve as a starting point. And of course there is a section in the User's Manual on the subject of callbacks.
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: Finding a solution with a given optimum

    Posted 02/07/11 05:31 AM

    Originally posted by: pfaut


    I have read the callback section. What I am missing (maybe just did not find it) is a method telling the solver to stop solving and take the best integer optimal solution. The example in ilomipex4.cpp, especially the logging callback seems quite interesting but still I dont really get how to "stop" the solver at a specific position and how to extract the correct solution at that point.
    Maybe some explanation:

    I am trying to find "minimal sized" solutions (i.e. solutions with a minimum number of non zero variables) in a Linear program. After finding an optimal solution (with seize X), a constraint is added, that prohibits this solution from being found again. Therefore I can easily accept all further solutions with size X since it was proven, that X is currently the smallest possible solution. Only if no solution of size X can be found any more I have to prove optimality again.
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: Finding a solution with a given optimum

    Posted 02/07/11 05:53 AM

    Originally posted by: SystemAdmin


    Stopping is simple: just call the abort() member function of the callback base class. Take a look at the ilomipex4 example, in particular the timeLimitCallback() callback method.

    Tobias
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: Finding a solution with a given optimum

    Posted 02/07/11 10:26 AM

    Originally posted by: pfaut


    Thank you.
    To be honest, I thought the abort() method would cause CPLEX to abort without keeping the solving information :/
    Should have had a better look at the example.
    #CPLEXOptimizers
    #DecisionOptimization