Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Sequence Transitions Times

    Posted 07/14/09 09:26 AM

    Originally posted by: SystemAdmin


    [cmsoc said:]

    Hi, I am implementing a model of a scheduling problem in ILog OPL.
    I red that noOverlap (<sequenceName> [,M]);
    where <sequenceName> is a previously declared sequence decision variable, and M is an optional transition matrix (in the form of a tuple set) that can be used to maintain [b]a minimal distance between the end of one interval and the start of the next interval
    in the sequence.


    master_c = { 0,1,2,3,4 } ;
    C=[0,1,2,3,4];
    Setup = [
    [ 0, 2, 35, 2, 2 ],
    [ 2, 0, 2, 2, 2 ],
    [ 2, 2, 0, 2, 2 ],
    [ 2, 2, 2, 0, 2 ],
    [ 2, 2, 2, 2, 0 ],];

    {int} Types={C[c]|c in master_c};
    tuple triplet{int c; int k; int value;};
    //{triplet} Tiempo={<c,k,par_TVIAJE&#91;<c,k>]>|c in master_c, k in master_c};
    {triplet} Tiempo={<c,k,Setup&#91;c&#93;&#91;k&#93;>|c in Types, k in Types};
    dvar interval Task[c in master_c] size 1; //
    dvar sequence Ruta in Task types C;

    minimize max(c in master_c) endOf(Task[c]);
    subject to {
        forall (o in NOR)
        first(Ruta,Task[o]);

        noOverlap(Ruta,Tiempo); 
    }


    This is the result. the setup time between "Task[4]" and "Task[2]" is 2. why "Task[2]" start at 36?
    What I need is that the distance between "Task[4]" and "Task[2]" is 2;
    Thanks for your help.
    // solution with objective 37
    Task = [<1 0 1 1> <1 6 7 1> <1 36 37 1> <1 3 4 1> <1 9 10 1>];
    Ruta = {"Task[0]" "Task[3]" "Task[1]" "Task[4]" "Task[2]"};
    #DecisionOptimization
    #OPLusingCPOptimizer


  • 2.  Re: Sequence Transitions Times

    Posted 07/16/09 07:01 PM

    Originally posted by: SystemAdmin


    [JR said:]

    Hi

    In CPO the transition distance on a sequence with no-overlap gives the minimal distance between each pair of interval on the sequence.

    The model you send does not work but I figure out you want to post

    first(Ruta,Task[0]);
    noOverlap(Ruta,Tiempo); 

    In such a case Task[2] cannot start before 36 because the distance of 35 between task[0], that is told to be the first one and task[2]

    Hope that helps

    #DecisionOptimization
    #OPLusingCPOptimizer


  • 3.  Re: Sequence Transitions Times

    Posted 07/18/09 09:46 PM

    Originally posted by: SystemAdmin


    [hazel.leo said:]

    Thanks....
    #DecisionOptimization
    #OPLusingCPOptimizer


  • 4.  Re: Sequence Transitions Times

    Posted 07/23/10 10:02 AM

    Originally posted by: SystemAdmin


    Hello cmsoc,

    I suppose that you would like your transition time to be considered only between direct successors (a is next to b) in the sequence and not between all pairs of intervals (a,b) such that a is before b in the sequence.

    With the new release of IBM ILOG CPLEX Optimization Studio V12.2, it is possible to model a noOverlap constraint with transition times that hold between direct successors only. For that, you only need to add an additional boolean parameter to the noOverlap constraint. For example in your OPL code, that would simply be:

    
    noOverlap(Ruta,Tiempo,1);  
    // 1: transition distance holds between direct successors
    


    Note that by default and for compatibility with previous releases, if no boolean is specified, the transition distance hold between all successors.

    Here is a link to the documentation: http://publib.boulder.ibm.com/infocenter/cosinfoc/v12r2/index.jsp.

    You will find more about this new modeling feature by starting from the release notes:

    IBM ILOG CPLEX Optimization Studio V12.2 > Release notes for CP Optimizer V12.2 > Changes since CP Optimizer V2.3 > Transition based scheduling

    Regards,

    Philippe
    #DecisionOptimization
    #OPLusingCPOptimizer