ЗАДАЧА КОМБИНАТОРНОЙ ОПТИМИЗАЦИИ
Обратимся к нашей практике. Нам предстояло разработать планировщик перевозок комбикормов (далее для краткости – кормов или КК) с производящих их комбикормовых заводов (далее – ККЗ) на производственные площадки по выращиванию и откорму животных (пусть это будут свинокомплексы, далее – СК), на которых эти корма потребляются.
И вот представьте себе:
1. Марок кормов – несколько (допустим, 8),
2. Они перевозятся специализированным транспортом – комбикормовозами (далее – кормовозами или ККВ), каждый из которых представляет собой многосекционный грузовой автомобиль (до 8-ми секций различных вместимостей, у каждого ККВ – своих!).
3. При этом предполагается, что одним рейсом может перевозиться сразу несколько марок КК (в реальной практике – до 6-ти), и тогда разные марки КК должны грузиться в отдельные секции.
4. В таких условиях даже распределение подлежащих перевозке кормов одним отдельно взятым рейсом по секциям конкретного ККВ – нетривиальная задача из-за большого числа вариантов такого распределения. Но это для одного рейса одного кормовоза! А кормовозов – несколько (порядка 20-ти), каждый из них за одну смену (12 часов) может сделать по 2-3 или даже 4 рейса на разные площадки СК.
5. Площадок – несколько десятков, причём на крупные площадки за смену должно завозиться по несколько (до 5-ти) машин кормов. Так что распределение кормов по рейсам – тоже отдельная задача, тем более что остатки кормов на ККЗ непрерывно меняются в ходе их производства и отгрузки.
И вот в таких условиях нужно составить детальный план-график перевозок, то есть для каждого рейса каждого ККЗ рассчитать время выезда из первоначального местонахождения, прибытия на загрузку, продолжительность и время окончания загрузки и т.д. А есть ещё и требования биобезопасности (автомобиль может заехать на другую площадку после посещения предыдущей только по определенным правилам), которые мы здесь обсуждать не будем но которые тоже заметно осложняют алгоритм.
В общем, здесь имеем, как говорят математики, задачу комбинаторной оптимизации, поскольку здесь нужно сопоставлять и выбирать различные варианты, комбинации рейсов, загрузок машин: кто как загрузится, куда и в какой последовательности поедет… Причём это задача большой размерности, даже очень большой!