Для небольшого количества машин и событий решается динамическим программированием на графе событий.
Для большого количества - точного решения нет, но очень неплохо зарекомендовали генетические алгоритмы (результат субоптимален с ошибкой не более 3% от оптимального).