Decision Optimization

Decision Optimization

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


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

How to interpret the IloVerbose result?

  • 1.  How to interpret the IloVerbose result?

    Posted 09/05/08 11:51 AM

    Originally posted by: SystemAdmin


    [anahana said:]

    I used the IloVerbose to display an output of a routing solution and need some help in interpreting the results. Below is partial sample of one output:

    vehicle2
    Total cost : [411.417..1.#INF)
    Fixed cost : 0
    Cost coefficients : time[1] distance[1]

    Route : depot -> visit45 -> visit47 -> visit46 -> visit48 -> visit11 -> visit12 -> visit9 -> visit19 -> visit10 -> visit20 -> depot
       
    time : depot [0..35.1007], delay [0..35.1007] -> travel [0.737488], wait [0..35.1007] -> visit45 [0.737488..35.8382], delay [10] -> travel [0.338588], wait [0..35.1007] -> visit47 [11.0761..46.1
    768], delay [10] -> travel [0.233797], wait [0..35.1007] -> visit46 [21.3099..56.4106], delay [10] -> travel [0.252947], wait [0..35.1007] -> visit48 [31.5628..66.6635], delay [10] -> travel [0.336468
    ], wait [0..35.1007] -> visit11 [67..77], delay [10] -> travel [1.00744], wait [0..18.4909] -> visit12 [78.0074..96.4984], delay [10] -> travel [0.501649], wait [0..18.4909] -> visit9 [97..107], delay
    [10] -> travel [0.676479], wait [0..59.7336] -> visit19 [107.676..167.41], delay [10] -> travel [0.255541], wait [0..59.7336] -> visit10 [117.932..177.666], delay [10] -> travel [0.334395], wait [0..
    59.7336] -> visit20 [128.266..188], delay [10] -> travel [0.741903], wait [0..90.9917] -> depot [139.008..230], delay [0..1.#INF) -> travel [0], wait [0..1.#INF) TransitSum [105.417..1.#INF)
               
    I need to know what the "time" details of the output mean; for example this output says that Vehicle2 will make visit45 within [0.737488..35.8382] time interval, service that visit for 10 time units (delay[10]), travel for [0.338588] to the next visit (visit47), and then wait for [0..35.1007] time units; my question is about the "wait" part, does it mean that Vehicle2 will wait for some time between 0 and 35.1007 before it begins servicing the next node (visit47 in this case)? If this is the case, then I can conclude that the vehicle leaves to the next visit immediately after finishing service of the current visit, it does not wait at its current visit before moving on to the next visit, right?

    One other issue, assuming the given range for the time output (e.g. visit45 [0.737488..35.8382]) is the sensitivity range for the time variable (within which the variable can change without violating any constraints), I need to know an exact value for it if possible; any idea how I can do that?

    Regards,
    #CPOptimizer
    #DecisionOptimization


  • 2.  Re: How to interpret the IloVerbose result?

    Posted 09/15/08 08:16 PM

    Originally posted by: SystemAdmin


    [Gwyneth said:]

    I need to know what the "time" details of the output mean; for example this output says that Vehicle2 will make visit45 within [0.737488..35.8382] time interval, service that visit for 10 time units (delay[10]), travel for [0.338588] to the next visit (visit47), and then wait for [0..35.1007] time units; my question is about the "wait" part, does it mean that Vehicle2 will wait for some time between 0 and 35.1007 before it begins servicing the next node (visit47 in this case)? If this is the case, then I can conclude that the vehicle leaves to the next visit immediately after finishing service of the current visit, it does not wait at its current visit before moving on to the next visit, right?

    You can conclude that the wait must be in the range [0..35.1007].

    One other issue, assuming the given range for the time output (e.g. visit45 [0.737488..35.8382]) is the sensitivity range for the time variable (within which the variable can change without violating any constraints), I need to know an exact value for it if possible; any idea how I can do that?

    You could instantiate the transits, etc.  More information is available in the FAQ:
    https://support.ilog.com/private/products/dispatcher/faq.cfm?FAQ=64


    #CPOptimizer
    #DecisionOptimization


  • 3.  Re: How to interpret the IloVerbose result?

    Posted 09/16/08 01:16 AM

    Originally posted by: SystemAdmin


    [anahana said:]

    [quote author=Gwyneth link=topic=535.msg1653#msg1653 date=1221491779]
    I need to know what the "time" details of the output mean; for example this output says that Vehicle2 will make visit45 within [0.737488..35.8382] time interval, service that visit for 10 time units (delay[10]), travel for [0.338588] to the next visit (visit47), and then wait for [0..35.1007] time units; my question is about the "wait" part, does it mean that Vehicle2 will wait for some time between 0 and 35.1007 before it begins servicing the next node (visit47 in this case)? If this is the case, then I can conclude that the vehicle leaves to the next visit immediately after finishing service of the current visit, it does not wait at its current visit before moving on to the next visit, right?

    You can conclude that the wait must be in the range [0..35.1007].

    Ok, so this means that Dispatcher uses the "wait first" heuristic in solving the scheduling part of the VRP and if I need to know the exact waiting time at each visit, before the vehicle moves on to the next visit, I need to instantiate the transit variable.

    Thanks
    #CPOptimizer
    #DecisionOptimization


  • 4.  Re: How to interpret the IloVerbose result?

    Posted 09/16/08 04:00 AM

    Originally posted by: SystemAdmin


    [Gwyneth said:]

    Sorry, I don't nkow the "wait first" heuristic.  Can you explain more what you mean here? 

    The wait-variable of v1, returned by v1.getWaitVar(d), represents the additional quantity of dimension d consumed between v1 and its successor, over the time required to serve v1 and travel from v1 to its successor. In the case where d represents time, v1.getWaitVar(d) represents the waiting time.

    v.getTransitVar(dim2) == v.getDelayVar(dim2)
                            + v.getTravelVar(dim2)
                            + v.getWaitVar(dim2);


    #CPOptimizer
    #DecisionOptimization


  • 5.  Re: How to interpret the IloVerbose result?

    Posted 09/16/08 11:45 AM

    Originally posted by: SystemAdmin


    [anahana said:]

    Actually I have read this definition in the documentation, but there is something vague about it. Let me first explain the "wait first" heuristic and then it should become clear why I find this definition a bit vague.

    In the dynamic VRP most of the visit requests are only known while the routing plan is executed, this means that when a vehicle finishes a visit at some location the dispatcher has to make a decision on whether to dispatch that vehicle to the already planned next visit, or make it wait at its current location just in case a new request arrives and changes the entire initial routing plan. Now, if the dispatcher chooses to make all vehicles wait after finishing their visits (of course the vehicles can only wait for a certain amount of time after which they have to leave in order to meet the next visit's time window), it is called the "wait first" heuristic; on the other hand, if the dispatcher chooses to make all the vehicles drive to their next visits immediately after they finish their current visits, it is called the "drive first" heuristic; the "drive first"  heuristic means that the vehicle could arrive at its next visit before the time window begins and therefore the vehicle has to wait at the next visit before it begins serving that next visit.

    Having said that, the vehicle has two waiting locations depending on the "wait" heuristic used; one location is at the current visit, and the other is at the next visit. My question is, which one does the "waitVar" refer to?

    Regards,
    #CPOptimizer
    #DecisionOptimization


  • 6.  Re: How to interpret the IloVerbose result?

    Posted 09/25/08 02:20 PM

    Originally posted by: SystemAdmin


    [ahocquet said:]

    The waitVar is linked to the current visit, but there is no location linked to the waiting. This waiting variable only means there will be a "wait" some between the current visit and the next visit.
    Note that in your case, the service time of your first visit is not set. This explains why your times are not instantiated.
    #CPOptimizer
    #DecisionOptimization


  • 7.  Re: How to interpret the IloVerbose result?

    Posted 09/25/08 08:21 PM

    Originally posted by: SystemAdmin


    [anahana said:]

    thanks for the reply, depending on the current definition of "wait" time and your feedback, I think it is safe to assume that it is the waiting time traveling from the current visit to the next visit.

    as for the service time of the first visit, it is not set because the first visit is the depot; no service occurs at the depot. Can you please explain to me how that affects instantiation of the remaining service times on other visits?

    #CPOptimizer
    #DecisionOptimization


  • 8.  Re: How to interpret the IloVerbose result?

    Posted 09/26/08 12:36 PM

    Originally posted by: SystemAdmin


    [ahocquet said:]

    [quote author=anahana link=topic=535.msg1761#msg1761 date=1222356069]

    as for the service time of the first visit, it is not set because the first visit is the depot; no service occurs at the depot. Can you please explain to me how that affects instantiation of the remaining service times on other visits?



    I understand there is no service time on the depot. You should set the service time of your first and last visits to 0. As far as I see, it doesn't affect the instantiation of the other visits' service time as there are all bound to 10.
    #CPOptimizer
    #DecisionOptimization


  • 9.  Re: How to interpret the IloVerbose result?

    Posted 12/07/08 09:55 AM

    Originally posted by: SystemAdmin


    [anahana said:]



    I understand there is no service time on the depot. You should set the service time of your first and last visits to 0. As far as I see, it doesn't affect the instantiation of the other visits' service time as there are all bound to 10.


    Sorry for replying so late, when you say I should set the service time for the first and last visits to zero, do you mean that the depot service time should be set to zero (as it is the first and last visit on each route)? If this is that case, how can I do it? You see, the depot is not defined as a visit like the other visits, it only exists in the vehicle's file where it has an open and close times. Should I add the depot to the visit's file and set all its parameters to zero (capacity, time windows, service time...etc.)?

    Regards,
    #CPOptimizer
    #DecisionOptimization


  • 10.  Re: How to interpret the IloVerbose result?

    Posted 12/08/08 04:34 PM

    Originally posted by: SystemAdmin


    [ahocquet said:]

    If you agree there is no service time on the first and last visits of the vehicle, then you should model it as such.
    For this purpose, you can just modify the "createVehicles" code by adding the following constraints :
    _mdl.add(first.getDelayVar(_time) == 0);
    _mdl.add(last.getDelayVar(_time) == 0);

    #CPOptimizer
    #DecisionOptimization


  • 11.  Re: How to interpret the IloVerbose result?

    Posted 12/08/08 06:47 PM

    Originally posted by: SystemAdmin


    [anahana said:]

    Thanks for the tip; however, I also had to use IloInstantiateTransits(_env, _time) in order to get one value for each time element (i.e. delay, wait, and travel). Here's an example output:

    time : depot [0], delay [0..1e-010] -> travel [0.119466], wait [0..1e-010] -> visit27[0.119466..0.119466], delay [10] -> travel [0.186955], wait [0..1e-010] -> visit28 [10.3064..10.3064], delay [10] -> travel [0.229387], wait [0..1e-010] -> visit1 [20.5358..20.5358], delay

    Still, I noticed that all "wait" elements are now almost zero (after using IloInstantiateTransits), does this mean that the time between visits only consists of a travel part and a service (delay) part?

    Regards,
    #CPOptimizer
    #DecisionOptimization


  • 12.  Re: How to interpret the IloVerbose result?

    Posted 12/08/08 07:05 PM

    Originally posted by: SystemAdmin


    [ahocquet said:]

    In your case, yes.
    In general, the wait is used if you have breaks or if you have time windows/earliness/tardiness costs.
    #CPOptimizer
    #DecisionOptimization


  • 13.  Re: How to interpret the IloVerbose result?

    Posted 12/08/08 08:00 PM

    Originally posted by: SystemAdmin


    [anahana said:]

    I see. Thanks for the clarification.
    #CPOptimizer
    #DecisionOptimization