Topic
  • 4 replies
  • Latest Post - ‏2013-12-11T20:05:13Z by Cagri
Cagri
Cagri
3 Posts

Pinned topic Extension of Basic Parallel Machine Scheduling CP Model with multiple period.

‏2013-12-05T14:04:15Z |

Hello,

I am trying to write a CP to deal with standart parallel machine scheduling problem with sequence dependent setup times. And we have a single machine operator following this parallel process (e.g. Incubation Operation). It will be a hybrid methodology combined with MILP dealing with planning issues. I built the code already working properly without d index of day explaining each planning day. To use in this hybrid method, I would like to extend the basic model to make schedules for each day of planning horizon, simultaneously.When I add d index of Day to sequence variable, I get some errors.

Could you please help me to overcome this challenge?

Question Marks

  • I am also not clear whether it is possibe to add d index of Day to sequence dvar in this concept or not?
  • Do I need to call the same CP model for each planning period in a recursive manner using a loop?
  • Which alternative can provide computational efficiency?


Note: Errors!, Scheduling model and data file is attached in this massage. (Errors! & OPL CP Mod, Dat, Ops Files)

Cheers!

Cagri SEL
cagrisel@gmail.com
 

Updated on 2013-12-17T11:18:25Z at 2013-12-17T11:18:25Z by Cagri
  • ol
    ol
    19 Posts
    ACCEPTED ANSWER

    Re: Extension of Basic Parallel Machine Scheduling CP Model with multiple period.

    ‏2013-12-09T11:41:52Z  

    Hello,

    replace your declaration of sequence by:


    dvar sequence schedule[d in Days, m in Machines] in all(d in Days, j in Jobs) opttask[d][j][m] types all(d in Days, i in Jobs) T[i];

     

    and this will work.

    Regards,

    Olivier

  • ol
    ol
    19 Posts
    ACCEPTED ANSWER

    Re: Extension of Basic Parallel Machine Scheduling CP Model with multiple period.

    ‏2013-12-11T08:44:40Z  
    • Cagri
    • ‏2013-12-09T12:26:23Z

    Thanks lot for your kindly interest. It works.

    But, I could not clearly understand the definition and usage of T variable. What is the fundamental mission of this variable?

    int T[Jobs]=...; 

    types all(d in Days, i in Jobs) T[i];

    Hello,
    The type is used to specify setup times between two operations executed on the same resource. If an operation 1 of type A is followed by an operation 2 of type B, a matrix (Setup in your model) expresses the setup times between type A and type B.
    In your model this is done by the constraint:
    forall(d in Days, m in Machines)
        noOverlap(schedule[d][m], Setup);
    You can find a complete explanation in the user man of CPO, see "Modeling sequence-dependent setup times".
    Regards,
    Olivier

  • ol
    ol
    19 Posts

    Re: Extension of Basic Parallel Machine Scheduling CP Model with multiple period.

    ‏2013-12-09T11:41:52Z  

    Hello,

    replace your declaration of sequence by:


    dvar sequence schedule[d in Days, m in Machines] in all(d in Days, j in Jobs) opttask[d][j][m] types all(d in Days, i in Jobs) T[i];

     

    and this will work.

    Regards,

    Olivier

  • Cagri
    Cagri
    3 Posts

    Re: Extension of Basic Parallel Machine Scheduling CP Model with multiple period.

    ‏2013-12-09T12:26:23Z  
    • ol
    • ‏2013-12-09T11:41:52Z

    Hello,

    replace your declaration of sequence by:


    dvar sequence schedule[d in Days, m in Machines] in all(d in Days, j in Jobs) opttask[d][j][m] types all(d in Days, i in Jobs) T[i];

     

    and this will work.

    Regards,

    Olivier

    Thanks lot for your kindly interest. It works.

    But, I could not clearly understand the definition and usage of T variable. What is the fundamental mission of this variable?

    int T[Jobs]=...; 

    types all(d in Days, i in Jobs) T[i];

  • ol
    ol
    19 Posts

    Re: Extension of Basic Parallel Machine Scheduling CP Model with multiple period.

    ‏2013-12-11T08:44:40Z  
    • Cagri
    • ‏2013-12-09T12:26:23Z

    Thanks lot for your kindly interest. It works.

    But, I could not clearly understand the definition and usage of T variable. What is the fundamental mission of this variable?

    int T[Jobs]=...; 

    types all(d in Days, i in Jobs) T[i];

    Hello,
    The type is used to specify setup times between two operations executed on the same resource. If an operation 1 of type A is followed by an operation 2 of type B, a matrix (Setup in your model) expresses the setup times between type A and type B.
    In your model this is done by the constraint:
    forall(d in Days, m in Machines)
        noOverlap(schedule[d][m], Setup);
    You can find a complete explanation in the user man of CPO, see "Modeling sequence-dependent setup times".
    Regards,
    Olivier

  • Cagri
    Cagri
    3 Posts

    Re: Extension of Basic Parallel Machine Scheduling CP Model with multiple period.

    ‏2013-12-11T08:46:43Z  
    • ol
    • ‏2013-12-11T08:44:40Z

    Hello,
    The type is used to specify setup times between two operations executed on the same resource. If an operation 1 of type A is followed by an operation 2 of type B, a matrix (Setup in your model) expresses the setup times between type A and type B.
    In your model this is done by the constraint:
    forall(d in Days, m in Machines)
        noOverlap(schedule[d][m], Setup);
    You can find a complete explanation in the user man of CPO, see "Modeling sequence-dependent setup times".
    Regards,
    Olivier

    Thank you very much.