Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
Expand all | Collapse all

about starting incumbent

  • 1.  about starting incumbent

    Posted 07/03/12 11:18 PM

    Originally posted by: SystemAdmin


    Dear all,

    I kept a starting incumbent in a txt file and gave it to CPLEX using "status = CPXcopymipstart (env, lp, N1, mycutind, mystartval)".

    CPXcopymipstart returned zero. But CPLEX gave the following warning information:

    Warning: No solution found from 1 MIP starts.

    Actually I have checked the incumbent satisfied all constraints. Attached is the formulation and incumbent file.

    Thanks
    Shaon
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: about starting incumbent

    Posted 07/06/12 12:55 AM

    Originally posted by: SystemAdmin


    You can use CPXrefinemipstartconflict or CPXrefinemipstartconflictext to figure out why CPLEX thinks your MIP start is infeasible.
    From your attached file I do not see which variable takes which value in your MIP start. Note that after reading an LP file the order of variables in CPLEX may not be as expected. Maybe you should first check that the order of variables in the model and the MIP start are the same.
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: about starting incumbent

    Posted 07/06/12 02:07 AM

    Originally posted by: SystemAdmin


    Thanks.

    (1) in the attached file, the starting incumbent has the same order of variables in the formulation. Please see the new attached file.

    (2) Since I created the starting problem in my B&C, I think the order of variables in the formulation should be the same as that CPLEX reads. Thus in the starting incumbent, I use the same order of variables. Furthermore, after CPLEX read the problem data into the created lp, I immediately used CPXgetcolname to get column name. I saw the output order of variables is the same as that in the starting problem and incumbent.
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: about starting incumbent

    Posted 07/07/12 04:04 AM

    Originally posted by: SystemAdmin


    I further used CPXgetconflict to get which linear constraints belonging to the conflict.
    But I checked the given starting incumbent satisfied these constraints.
    #CPLEXOptimizers
    #DecisionOptimization


  • 5.  Re: about starting incumbent

    Posted 07/07/12 05:49 AM

    Originally posted by: SystemAdmin


    Could you please export your model as SAV file and your MIP start and attach both files here?
    The code to export the files is
    CPXwriteprob(env, lp, "model.sav", NULL);
    CPXwritemipstarts(env, lp, "start.mst", 0, 0);
    

    #CPLEXOptimizers
    #DecisionOptimization


  • 6.  Re: about starting incumbent

    Posted 07/07/12 11:13 AM

    Originally posted by: SystemAdmin


    Thanks. Please refer to the attached files. Note that I got these two files from a new case where the given statring incumbent also did not work. I solved this case by the BC and got the following error information

    Warning: No solution found from 1 MIP starts.
    Retaining values of one MIP start for possible repair.
    Warning: Control callbacks may disable some MIP features.
    MIP emphasis: balance optimality and feasibility.
    MIP search method: traditional branch-and-cut.
    #CPLEXOptimizers
    #DecisionOptimization


  • 7.  Re: about starting incumbent

    Posted 07/07/12 11:33 AM

    Originally posted by: SystemAdmin


    Strange, with your model and MIP start files I get
    1 of 1 MIP starts provided solutions.
    MIP start 'm1' defined initial solution with objective 3.3078e+09.
    

    Can you try to solve your problem with the interactive:
    CPLEX> read model.sav
    CPLEX> read start.mst
    CPLEX> opt
    

    Is the MIP start accepted in this case?
    From your output I see that you are using control callbacks. What kind of callbacks do you use? Is the MIP start accepted if you don't use these callbacks?
    #CPLEXOptimizers
    #DecisionOptimization


  • 8.  Re: about starting incumbent

    Posted 07/08/12 11:02 PM

    Originally posted by: SystemAdmin


    Yes, I tried "read model.sav and start.mst". It shows

    1 of 1 MIP starts provided solutions.

    In my B&C, the cut-, incumbent- and branch-callbacks are used.

    If I didn't use these callbacks, the MIP start was accepted.
    #CPLEXOptimizers
    #DecisionOptimization


  • 9.  Re: about starting incumbent

    Posted 07/10/12 03:30 AM

    Originally posted by: SystemAdmin


    Do you ever see your MIP start in the incumbent callback?
    Is it possible that the incumbent callback rejects the MIP start?
    Is it possible that in the cut callback you produce a cut that cuts off the MIP start?
    What version of CPLEX do you use?
    #CPLEXOptimizers
    #DecisionOptimization


  • 10.  Re: about starting incumbent

    Posted 07/10/12 04:51 AM

    Originally posted by: SystemAdmin


    (1) Do you ever see your MIP start in the incumbent callback?
    Although CPLEX did not accept the MIP start, in the following interation, I have ever seen this incumbent for some instances.
    (2) Is it possible that the incumbent callback rejects the MIP start?
    It is possible to reject a MIP start. In my program, cutcallback and incumbent callbak are used. Since I provided a MIP start, generally I let CPLEX do nothing when it reached these two callbacks for the first time.

    (3) Is it possible that in the cut callback you produce a cut that cuts off the MIP start?
    I do not know how to cut off the MIP start. My previous experience is that CPLEX first called incumbentcallbak if I provided a MIP start and CPLEX accepted it. What I needed to do is let incumbentcallback do nothing and then let CPLEX do the branching (say prune).
    (4) What version of CPLEX do you use?
    CPLEX 12.4
    In my other successful B&C, CPLEX first called cutcallback and then incumbentcallback when a MIP start was accepted. I just let CPLEX do nothing for the introduction of MIP start.
    #CPLEXOptimizers
    #DecisionOptimization


  • 11.  Re: about starting incumbent

    Posted 07/12/12 02:28 AM

    Originally posted by: SystemAdmin


    Is the MIP start accepted if you use your callbacks but don't do anything in the callbacks, i.e., if you change your callbacks so that the first thing they do is a 'return'?
    #CPLEXOptimizers
    #DecisionOptimization


  • 12.  Re: about starting incumbent

    Posted 07/12/12 02:58 AM

    Originally posted by: SystemAdmin


    Suppose MIP start is provided.

    If the code first goes to cutcallback, I can let CPLEX do nothing and then go to incumbentcallback since it is an integer soluiton.

    In the incumbentcallback, I can ask CPLEX to accept this solution. Then I will see

    1 of 1 MIP starts provided solutions.

    But I think this is not a normal way to accept a MIP start. In other B&C using CPLEX, CPLEX can accept the starting incumbent.
    #CPLEXOptimizers
    #DecisionOptimization


  • 13.  Re: about starting incumbent

    Posted 07/12/12 09:01 AM

    Originally posted by: SystemAdmin


    I don't get it :-(
    1. CPLEX is expected to invoke the incumbent callback on the MIP start. And if you reject the MIP start there then CPLEX will of course not use it.
    2. In the cut callback you must not generate a cut that cuts off an integer feasible solution. If you want to dynamically generate constraints that may cut off integer feasible solutions then you have to use a lazy constraint callback. Actually, the cut callback should not be invoked for your MIP start. What is the value of the wherefrom parameter when the cut callback is invoked? In any case, if you dynamically generate constraints (cuts or lazy constraints) that are violated by the MIP start then CPLEX will not use the MIP start.

    CPLEX will only use a MIP start if it is not rejected by the incumbent callback and not violated by any constraint (dynamically generated or part of the original model).
    #CPLEXOptimizers
    #DecisionOptimization


  • 14.  Re: about starting incumbent

    Posted 07/14/12 08:24 AM

    Originally posted by: SystemAdmin


    DanielJunglas wrote
    -> CPLEX is expected to invoke the incumbent callback on the MIP start. And if you reject the MIP start there then CPLEX will of course not use it.

    -> Actually, the cut callback should not be invoked for your MIP start.
    I output the course of solution to the screen. Please see the attached files. I just used some information to show which callback the code was in.
    You will see actually the cutcallback is first invoked in stance 1 when I provided a MIP start (of course it was not accepted, as I talked to you on previous threads, the MIP start is feasible).
    But in instance 2, CPLEX first invoked the incumbent where I can accept the MIP start.
    -> What is the value of the wherefrom parameter when the cut callback is invoked? In any case, if you dynamically generate constraints (cuts or lazy constraints) that are violated by the MIP start then CPLEX will not use the MIP start.
    From the attached files, you will see the value of wherefrom varied over different instance, e.g., 106 and 115.

    -> CPLEX will only use a MIP start if it is not rejected by the incumbent callback and not violated by any constraint (dynamically generated or part of the original model).
    As we discussed before, my provided MIP start is feasible, but CPLEX did not accept it.
    New questions:
    From my attached files, you will see at each node, when no cut was found, CPLEX should then invoke branchcallback, but it invoked cutcallback again.
    #CPLEXOptimizers
    #DecisionOptimization


  • 15.  Re: about starting incumbent

    Posted 07/23/12 03:53 AM

    Originally posted by: SystemAdmin


    not answered!
    #CPLEXOptimizers
    #DecisionOptimization


  • 16.  Re: about starting incumbent

    Posted 07/24/12 09:37 AM

    Originally posted by: SystemAdmin


    I think the answer is the same as in this thread: It is expected that CPLEX calls the cut callback more than once per node. The last time the cut callback is invoked for a node the wherefrom parameter is 114.
    Concerning the rejected incumbent? Did you try CPXrefinemipstartconflict()? So far I only see that you tried CPXgetconflict() and I don't see how this could help here since the problem is with a MIP start and not in the model itself.
    #CPLEXOptimizers
    #DecisionOptimization


  • 17.  Re: about starting incumbent

    Posted 07/12/12 03:09 AM

    Originally posted by: SystemAdmin


    The MIP start is used to promote the course of soluiton.

    At the beginning, the code did not goes to the cutcallback where this MIP start is checked. It will make no sense to provide the MIP start.

    So the probem is still not solved.
    #CPLEXOptimizers
    #DecisionOptimization