Hoping to get advice and suggestions for a new project I'm working on...
This is a classical production scheduling problem:
Jobs are scheduled through a number of workcentres (currently up to 100) in a pre-defined and unchangeable sequence.
Jobs can visit the same workcentre several times during manufacture.
The time a Job is on a particular workcentre is split into set-up, run and move times.
Set-up is the time required to get a workcentre ready for production.
Run is the time reuired to process an individual part.
Move is the time required to transfer the part(s) to the next workcentre.
Typically, parts are processed in small batches, typically in the range 1 - 100 pieces with most parts being processed a single unit at a time.
Batches are never split.
Batches are never combined.
Jobs are released to production with the aim of completing on or before the required completion date.
Often, Jobs are constrained such that Job 'C' can only start once Jobs 'A' and 'B' are complete.
Individual workcentres have finite capacity e.g.: the SAW workcentre is available 8 hours per working day, the LATHE is available 24 hours per working day. Some workcentres have multiple identical resources e.g.: MILL is made up of 3 identical machines - but an individual Job can only use one at a time.
The challenge is to schedule all Jobs so as to minimise the makespan (total time in work) whilst meeting required dates and not exceeding workcentre capacity.
Does anyone have experience of this type of problem?
I'm currently looking at using JBoss Drools Planner - but I'm not convinced that the algorithms it uses are the most appropriate for this problem - I also know that at least some commercial solution use branch-and bound algorithims - so I'd welcome any advice on that particular method.