Mathematical modelling and a meta-heuristic for flexible job shop scheduling