Skip to main content
edited tags
Link
Bumped by Community user
deleted 38 characters in body
Source Link
TheSimpliFire
  • 5.5k
  • 5
  • 23
  • 56

Good day,

I'm trying to modify the job shop example for CP-SAT solver. (https://developers.google.com/optimization/scheduling/job_shop)

I'm limited to 8 hours working day, So I defined a list of NewIntervalVar() to represent non-working 12h everyday and weekend 24h+24h

I add this list to AddNoOverlap() for every machine interval. (Also, is there a better approach? probably I'm already made mistake with this approach)

non_working_intervals = add_non_working_hours(model)
for machine in all_machines:
    model.AddNoOverlap(machine_to_intervals[machine] + non_working_intervals)

And this works fine if all tasks are less than 8 hours.. Obviously, the model can't fit 15h task in 8h gap and return infeasible..

The question is, how I can redefine the model so it can "automatically" start 15h task on one day and finish it the next day (after 12h). For 15h task it should be like: work 0-8 then gap(no work) 9-24 and then 24-31 (finish last 7h of 15h taks).

The only solution that comes to my mind is to split all tasks into smaller chunks before modeling, but then I should add a mechanism so all parts of a single task must go one by one without interruption (also, I don't know if it's possible to implement)

Thank you in advance!

Good day,

I'm trying to modify the job shop example for CP-SAT solver. (https://developers.google.com/optimization/scheduling/job_shop)

I'm limited to 8 hours working day, So I defined a list of NewIntervalVar() to represent non-working 12h everyday and weekend 24h+24h

I add this list to AddNoOverlap() for every machine interval. (Also, is there a better approach? probably I'm already made mistake with this approach)

non_working_intervals = add_non_working_hours(model)
for machine in all_machines:
    model.AddNoOverlap(machine_to_intervals[machine] + non_working_intervals)

And this works fine if all tasks are less than 8 hours.. Obviously, the model can't fit 15h task in 8h gap and return infeasible..

The question is, how I can redefine the model so it can "automatically" start 15h task on one day and finish it the next day (after 12h). For 15h task it should be like: work 0-8 then gap(no work) 9-24 and then 24-31 (finish last 7h of 15h taks).

The only solution that comes to my mind is to split all tasks into smaller chunks before modeling, but then I should add a mechanism so all parts of a single task must go one by one without interruption (also, I don't know if it's possible to implement)

Thank you in advance!

I'm trying to modify the job shop example for CP-SAT solver. (https://developers.google.com/optimization/scheduling/job_shop)

I'm limited to 8 hours working day, So I defined a list of NewIntervalVar() to represent non-working 12h everyday and weekend 24h+24h

I add this list to AddNoOverlap() for every machine interval. (Also, is there a better approach? probably I'm already made mistake with this approach)

non_working_intervals = add_non_working_hours(model)
for machine in all_machines:
    model.AddNoOverlap(machine_to_intervals[machine] + non_working_intervals)

And this works fine if all tasks are less than 8 hours.. Obviously, the model can't fit 15h task in 8h gap and return infeasible..

The question is, how I can redefine the model so it can "automatically" start 15h task on one day and finish it the next day (after 12h). For 15h task it should be like: work 0-8 then gap(no work) 9-24 and then 24-31 (finish last 7h of 15h taks).

The only solution that comes to my mind is to split all tasks into smaller chunks before modeling, but then I should add a mechanism so all parts of a single task must go one by one without interruption (also, I don't know if it's possible to implement)

Source Link

Scheduling when task duration longer than working interval

Good day,

I'm trying to modify the job shop example for CP-SAT solver. (https://developers.google.com/optimization/scheduling/job_shop)

I'm limited to 8 hours working day, So I defined a list of NewIntervalVar() to represent non-working 12h everyday and weekend 24h+24h

I add this list to AddNoOverlap() for every machine interval. (Also, is there a better approach? probably I'm already made mistake with this approach)

non_working_intervals = add_non_working_hours(model)
for machine in all_machines:
    model.AddNoOverlap(machine_to_intervals[machine] + non_working_intervals)

And this works fine if all tasks are less than 8 hours.. Obviously, the model can't fit 15h task in 8h gap and return infeasible..

The question is, how I can redefine the model so it can "automatically" start 15h task on one day and finish it the next day (after 12h). For 15h task it should be like: work 0-8 then gap(no work) 9-24 and then 24-31 (finish last 7h of 15h taks).

The only solution that comes to my mind is to split all tasks into smaller chunks before modeling, but then I should add a mechanism so all parts of a single task must go one by one without interruption (also, I don't know if it's possible to implement)

Thank you in advance!