I am working on a problem similar to the assembly line scheduling by dynamic programming.The issue is that unlike the classic problem where we have predefined stations now I only have information which task should run before which other(could be more than one) tasks.
I have to find out which tasks to put on which line to minimize the total time taken by the production.So obviously if the tasks are on a single line then they are executing in serial fashion and hence are slower.
So I have following issues
- How do I create time based levels/lines as I don't have a sequence of all tasks? I only know which task comes before which(one or many) tasks. Time based levels are necessary as I have to minimize the time (which would happen when the tasks are executed in parallel).
- How do I determine the optimal order of tasks to minimize time? As several tasks would be waiting for a single task, I have to minimize this time as well.
- Like the original problem, communication between different lines would also have a cost. I have to determine whether this communication cost is worth moving the task to a separate line(from its communicating task)
tl;dr: A parallel version of the assembly line scheduling (Dynamic programming) where all lines could be busy at the same time and I don't have any station numbering/ordering. I just know which tasks should be executed before which.
I have to decide which tasks to put on the same line and which tasks to put on the different lines (given the communication time when tasks are on different lines) to minimize the production time.