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
------------------------------
Original Message:
Sent: Mon March 08, 2021 10:15 AM
From: Nourredine Hail
Subject: Hybrid Flow Shop
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,
| 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