Decision Optimization

 View Only
  • 1.  Hybrid Flow Shop

    Posted Mon March 08, 2021 10:16 AM

    Hi everyone,

     

    Has anyone implemented the Hybrid Flow Shop (minimization of completion time) using CP (or MIP) in OPL?

     

    I am working on a problem that be formulated as HFS with some task's prioritization.

     

    I am aware of the simple flow shop problem in OPC examples, but my problem is way more complex.

     

    Best regards,

     


     

    Description: Description: email-signature-image_0014_H_COC-CTR_Surprint_1_-TO-3__BIL_ENG.png

    Nourredine Hail, PhD in Applied Mathematics
    Senior Operations Research & Data Scientist

    Optimization & Analytics team
    Canadian Tire Corporation
    2111 Steeles Avenue East, Brampton, ON, L6T4L5
    Phone: 905.792.5983  
    nourredine.hail@cantire.com

    "Anyone who stops learning is old, whether at twenty or eighty. Anyone who keeps learning stays young. The greatest thing in life is to keep your mind young."  Henry Ford

     


    #DecisionOptimization


  • 2.  RE: Hybrid Flow Shop

    Posted Mon March 08, 2021 10:52 AM

    The only difference between the classical HFS and the classical Flow-shop scheduling problem is that there are several parallel machines (say C[s]) for each stage s instead of a single one. So with CP Optimizer, you only need to use a cumul function instead of a no-overlap constraints. In OPL, it looks like:

    using CP;

    int N                       = ...; // Number of jobs
    int M                       = ...; // Number of operations per jobs

    int D[i in 1..N][s in 1..M] = ...; // Processing time of operation s of job i
    int C[s in 1..M]            = ...; // Number of machines for stage s (in 1..M)

    dvar interval op[i in 1..N][s in 1..M] size D[i][s];
    minimize max(i in 1..N) endOf(op[i][M]);
    subject to {
      forall(i in 1..N, s in 2..M) {

        endBeforeStart(op[i][s-1], op[i][s]);
      }
      forall(s in 1..M) {
        sum(i in 1..N) pulse(op[i][s],1) <= C[s];
      }
    }



    ------------------------------
    Philippe Laborie
    ------------------------------



  • 3.  RE: Hybrid Flow Shop

    Posted Mon March 08, 2021 12:01 PM

    Hi/Bonjour Philippe,

     

    Thanks a lot for the quick response; this is awesome. I will read more about the pulse function and build a "lite" version of the problem I am working on. I've never used the pulse function before.

     

    I very much appreciate your assistance.

     

    Bonne journée.

     

     

     


     

    Description: Description: email-signature-image_0014_H_COC-CTR_Surprint_1_-TO-3__BIL_ENG.png

    Nourredine Hail, PhD in Applied Mathematics
    Senior Operations Research & Data Scientist

    Optimization & Analytics team
    Canadian Tire Corporation
    2111 Steeles Avenue East, Brampton, ON, L6T4L5
    Phone: 905.792.5983  
    nourredine.hail@cantire.com

    "Anyone who stops learning is old, whether at twenty or eighty. Anyone who keeps learning stays young. The greatest thing in life is to keep your mind young."  Henry Ford