I'm trying to model a jobshop problem where a job could have an alternative production path. I think the easiest explanation I can give is by using the
Example flexible jobshop problem instead of my current one to keep it simple.
The first job in the example is:
jobs = [ # task = (processing_time, machine_id)
- [ # Job 0
[(3, 0), (1, 1), (5, 2)], # task 0 with 3 alternatives
[(2, 0), (4, 1), (6, 2)], # task 1 with 3 alternatives
[(2, 0), (3, 1), (1, 2)], # task 2 with 3 alternatives
]...
So job 0 can run on 3 different machines in each task. What I`m trying to model right now is that for example if I use machine 2 in task 1 I don`t need to do anything in task 0 and task 2 because the machine can do all 3 tasks at once. Basically using one machine in a later task could make another task obselete.
If I give task 0 an option with 0 processing time the optimizer would obviously always choose that one in case that machine is available at that point, so not really an option.
How can I make an earlier task depent on a later choice, any suggestions?