Originally posted by: Sultan_Niz7755
Hi everybody,
Let me share you with problem. I have to rewrite a column oriented formulation of original problem. The scheduling problem can be considered as a problem of selecting N columns, one for each patient, that's why I have typed range K = 1..N. Let y(k) for k€Omega be a binary decision variable that takes 1 if the feasible column k is selected and 0 otherwise. Accordingly there is also a constraint that it says whether column selected or not like this ( y(k) € {0,1}, forall k€ Omega. And I have typed it accordingly so:
int N = ...;// Number of Patients
int j = ...; // Number of tasks
range Patient = 1..N;
range Task = 1..j;
int P = ...; // Number of Porters
range Porter = 1..P;
int R = ...; // Number of Operating rooms
range Room = 1..R;
int B = ...; // Number of recovery beds
range Bed = 1..B;
int Period = ...;
range H = 0..Period-1; // discrete Time horizon of H Periods, The discrete Time unit is set equal to 10 Minutes
range K = 1..N;
int p[Patient, Task] = ...;
dvar int+ c[K];
dvar boolean x[Patient, K];//1,if column k is related to patient i
dvar int+ s[K,Task];//starting time of the task j according to column k
dvar boolean y[K];//let y(k) for k€K be a binary decision variable that takes 1 if the feasible column k is selected and 0 otherwise
dvar boolean u[H,K];
dvar boolean v[H,K];
dvar boolean w[H,K];
dvar boolean result[Patient, K];
minimize sum (k in K)c[k]*y[k];
subject to {
forall (k in K) c[k] == s[k,4] + (sum (i in Patient) x[i,k]*p[i,4]);
forall (k in K, i in Patient)(x[i,k] == 1) => x[i,k] * p[i,4] == p[i,4];
forall (k in K, i in Patient)(x[i,k] == 0) => x[i,k] * p[i,4] == 0;
forall (i in Patient, k in K, t in H) u[t,k] == (((s[k, 1] <= t) && (s[k, 1] + p[i, 1] - 1) >= t) + ((s[k, 4] <= t) && (s[k, 4] + p[i, 4] - 1) >= t));
forall (i in Patient, k in K, t in H) v[t,k] == ((s[k, 2] <= t) && (s[k, 2] + p[i, 2] + p[i,5] - 1) >= t);
forall (i in Patient, k in K, t in H) u[t,k] == ((s[k, 4] <= t) && (s[k, 4] + p[i, 4] - 1) >= t);
forall (i in Patient) sum (k in K) (result[i, k]) == 1;
forall (i in Patient, k in K) x[i,k] + y[k] <= 1 + result[i, k];
forall (i in Patient, k in K) result[i, k] <= y[k];
forall (i in Patient, k in K) result[i, k] <= x[i,k];
forall (t in H, pi in Porter) sum (k in K) u[t,k]*y[k] <= pi;
forall (t in H, r in Room) sum (k in K) v[t,k]*y[k] <= r;
forall (t in H, b in Bed) sum (k in K) w[t,k]*y[k] <= b;
forall (k in K) y[k] == 1;
}
and it gives just y[1111111111] which is not feasible.
I will be very thankful from any advice.
regards, Sherzod
#CPLEXOptimizers#DecisionOptimization