Semi-Flexible Job Shop Scheduling Problem (SFJSSP) with Machine Shifts and Changeovers #4356
Unanswered
hpswalters
asked this question in
CP-SAT questions
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I have developed a solution for the SFJSSP with Machine Breaks that works but does not scale well. One of the main reasons for this is that I use machine intervals over the horizon to define the "off-shift" periods; loop through task_duration in hourly intervals and for each hour specify two variables--it looks like this:
. These intervals are stored along with the machine off-shift intervals so that the
NoOverlap[intervals]
can work its magic. What is good about this is:What is bad about this is it doesn't scale well with:
In attempting to solve this, it occurs to me that a task needs to be broken down into, at most, two parts (assuming all tasks are no longer than shift_duration +1_hour. Therefore, there is either sufficient time on a shift to complete the task (
sufficient_time
) or there is not (sufficient_time.Not()
).Knowing this, the issue now becomes joining the
route_presence
andsufficient_shift_time
booleans into a structure that permits[route_presence and sufficient_shift_time]
or[route_presence and sufficinet_shift_time.Not()]
. Another advantage is that I can leverage "new_optional_fixed_size_interval_var" when there is sufficient shift time but two new_optional_interval_var when there is insufficient shift time.Here is a code snip from the program
with the data
I have attempted multiple iterations defining separate cases for sufficient and insufficient using different variable names, different boolean logic structures for the two conditions (route_presence and sufficient_shift_time. Sometimes I get results, sometimes not. but nothing that gets the solution quality as my original model. I feel confident that this can work and is a viable approach to achieve scalability. I am also fairly confident that there is a correct combination of logic and variables -- I just have not found it, so any and all help/insights would be appreciated.
Thanks,
hpsw
P.S. If it helps I can provide the complete original program and the new program with the data sets I am using
Beta Was this translation helpful? Give feedback.
All reactions