Originally posted by: pbsophie
I'm having an issue with my model. I keep getting the error listed in my subject. Can anyone help? Below is my program:
//Parameters:
int nbJobs = ...;
int nbFamilies = ...;
//Ranges
range Jobs = 1..nbJobs;
range Families = 1..nbFamilies;
range Batches = 1..nbJobs;
float EarlyCost = ...;
float TardyCost = ...;
float duedate
Jobs=...;
float Batch_min
Families=...;
float Batch_max
Families=...;
float process
JobsFamilies=...;
float setup
Families=...;
float release
Jobs=...;
//Decision Variables
dvar float+ start_time
Batches;
dvar int+ number_batch
FamiliesBatches;
dvar float+ Earliness
Jobs;
dvar float+ Tardiness
Jobs;
dvar float+ Completion
Jobs;
dvar int+ X
JobsFamiliesBatches in 0..1;
dvar int+ Y
FamiliesBatches in 0..1;
dvar float+ processB
FamiliesBatches;
dvar float+ CompletionB
Batches;
//objective
minimize
sum(i in Jobs)(EarlyCost * Earliness[i]+TardyCost * Tardiness[i]);
//constraints
subject to {
forall (i in Jobs){
c1: Earliness[i] >= duedate[i] - Completion[i];
c2: Tardiness[i] >= Completion[i]-duedate[i];
c3: duedate[i]== Completion[i] + Earliness[i]-Tardiness[i];
}
forall (f in Families, k in Batches){
c7: number_batch[f][k]>=Batch_min[f];
c8: number_batch[f][k]<=Batch_max[f];
c9: start_time[k] <= CompletionB[k]-processB[f][k];
c10: sum(f in Families)
Y[f][k]==1;
}
forall (i in Jobs, k in Batches, f in Families) {
c13: number_batch[f][k]==sum(f in Families)(X[i][f][k]);
c14: processB[f][k] == (number_batch[f][k] * process[i][f]) + setup[f];
c15: X[i][f][k] == Y[f][k];
c20: sum(k in Batches)
X[i][f][k]==1;
c4: start_time[k] >= release[i]*X[i][f][k];
forall (f in Families) {
c11: CompletionB[1]==sum(f in Families)(processB[f][1]*Y[f][1])+start_time[1];
}
forall (f in Families, k in 2..nbJobs){
c12: CompletionB[k]==start_time[k]+sum(f in Families)(processB[f][k]*Y[f][k]);
}
c6: Completion[i]==CompletionB[k]*X[i][f][k];
}
c16: start_time[1]==CompletionB[1];
forall (k in 2..nbJobs){
c17: start_time[k] >= CompletionB
k-1;
}
//bounds
forall (i in Jobs) {
Earliness[i]>=0;
Tardiness[i]>=0;
Completion[i]>=0;
}
forall (k in Batches){
CompletionB[k]>=0;
start_time[k]>= 0;
}
forall (i in Jobs, f in Families, k in Batches) {
0<=X[i][f][k]<=1;
}
forall (f in Families, k in Batches){
0<=Y[f][k]<=1;
number_batch[f][k]>=0;
processB[f][k]>=0;
}
}
#DecisionOptimization#OPLusingCPLEXOptimizer