Какой алгоритм использовать для задачи?
books.google.ru/books?id=HIaf7DSPtl0C&printsec=fro...
Задача о назначениях, страница 163 и далее по сноскам.
Отличная книжка к слову сказать.PS т.к у вас ситуация значительно проще и стоимость доставки не зависит от исполнителя - я бы попробовал для разнообразия попробовать следующий алгоритм: отсортировать заказы по убыванию времени доставки, и пробежаться по ним циклом, пытаясь найти максимальное количество наборов заказа имеющих итоговое время доставки 1-2-3 часа.
Впрочем не уверен что жесткий милиметраж имеет практический смысл, т.к в реальной логистике +-20% на время доставки это нормально.
Задача сводится к разбиению исходного множества грузов на группы, суммарное время доставки которых не превосходит 2:58, но максимально близко к этой величине.
Точное решение - перебор всех вариантов - на таком количестве грузов неприменим.
Один из методов приближённого решения - жадный алгоритм. Рассортируем грузы по убыванию времени доставки. Заведём (1000/(178/30)) = 169 ячеек и для каждого груза из отсортированного списка будем просматривать ячейки начиная с первой на возможность добавления в неё груза с учётом ограничений.