Decision Optimization

Decision Optimization

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

 View Only
  • 1.  Questions about multiobjective optimization in CPLEX

    Posted Fri August 14, 2020 05:54 PM
    Edited by System Admin Fri January 20, 2023 04:11 PM
    Hi,

    I have a few questions related to using the multiobjective optimization feature with the Java API.

    1. Is there any way to display the node log? I tried the usual approach of setting the log interval to 1, but I don't get anything. I have three priority levels in my test problem, and the first two solve at the root node (if I'm reading the output correctly), but the third chugs along until it hits the time limit without producing any log output.
    2. Does the Java API provide any way for converting a numerical status code (107) back to something human-readable? This relates to the return values of IloCplex.getMultiObjInfo(IloCplex.MultiObjIntInfo.MultiObjStatus, ...), which returns a numerical code rather than an instance of IloCplex.Status.
    3. (This one might actually be more of a suggestion than a question.) When dealing with a single criterion, IloCplex.addMinimize both creates an objective and adds it to the model. I discovered the hard way that this does not work when the objective has multiple criteria (i.e., addMinimize(staticLex(...)) is invalid syntax). The workaround is just to do it in two steps: use minimize(staticLex(...)) to create the objective and then hit that with add(). Is this just an oversight, or will addMinimize be overloaded in a future version, or is there some reason why the steps need to be split?

    Thanks,
    Paul

    ------------------------------
    Paul Rubin
    Professor Emeritus
    Michigan State University
    ------------------------------
    #DecisionOptimization


  • 2.  RE: Questions about multiobjective optimization in CPLEX

    Posted Mon August 17, 2020 02:05 AM
    1. You can set parameter IloCplex.Param.MultiObjective.Display to 2. This should display the node log for each individual solve.
    2. This is a bit tricky. There is no officially documented way to do that. As a workaround you can use function `IloCplex.makeStatus(int status, boolean pfeas, boolean dfeas)` which is static but has package protection. Thus you have to create some in package `ilog.cplex` in order to invoke this function. I have filed enhancement requests to make this easier or have a function that directly returns the status objects.
    3. I filed a request for enhancement for this as well
    You can also file your own RFEs in order to boost the priority of implementing these things.

    ------------------------------
    Daniel Junglas
    ------------------------------



  • 3.  RE: Questions about multiobjective optimization in CPLEX

    Posted Mon August 17, 2020 11:04 AM
    Danke schön!

    ------------------------------
    Paul Rubin
    Professor Emeritus
    Michigan State University
    ------------------------------



  • 4.  RE: Questions about multiobjective optimization in CPLEX

    Posted Tue September 01, 2020 05:41 PM
    I finally found time to look for the RFE site and enter them.

    Paul

    ------------------------------
    Paul Rubin
    Professor Emeritus
    Michigan State University
    ------------------------------