Sequencing and scheduling: algorithms and complexity