A multi-agent system for scheduling assembly and testing tasks