Чтобы заставить работать модель, вам нужно как минимум изменить
EQ5 : //Job-Time Sequencing;
forall(c in customer, k in truck, j in job)
start_load[k][j] + plant_process_time[c] + travel[c] <= start_pour[k][j] + (M*(1-x[c][k][j-1]));
на
EQ5 : //Job-Time Sequencing;
forall(c in customer, k in truck, j in job:(j-1) in job)
start_load[k][j] + plant_process_time[c] + travel[c] <= start_pour[k][j] + (M*(1-x[c][k][j-1]));
Тогда вы можете использовать логические ограничения вместо больших M
EQ5 : //Job-Time Sequencing;
forall(c in customer, k in truck, j in job:(j-1) in job)
(1==x[c][k][j-1] ) => (start_load[k][j] + plant_process_time[c] + travel[c] <= start_pour[k][j]);
Для EQ7 вы можете начать с
EQ7 :
forall(c in customer)
forall(ordered k,k2 in truck, ordered j,j2 in job)
start_pour[k][j] != start_pour[k2][j2];
или даже
EQ7 :
forall(c in customer)
forall(ordered k,k2 in truck, ordered j,j2 in job)
((1==x[c][k][j] ) && (1==x[c][k2][j2]))=> (abs(start_pour[k][j] -start_pour[k2][j2]) >=plant_process_time[c]);
, если хотите учесть время процесса
И я бы предложил вам иметь взгляните на CPOptimizer в CPLEX, поскольку это очень хорошо для планирования.