Sequencing and scheduling: Algorithms and complexity