В последнее время наши программные продукты, автоматизирующие планирование производства или перевозок, мы стали называть интеллектуальными системами производственного и, соответственно, логистического планирования. Насколько, в самом деле, уместно такое определение (или это просто дань моде)? На этот вопрос сложно дать общий ответ. Поэтому обратимся к конкретным примерам.
Если говорить о Планировщике перевозок комбикормов, то там мы имеем комбинаторную задачу, поскольку там приходится определять, какой кормовоз в какие пункты поедет, в какой последовательности и т.д., то есть комбинировать кормовозы, пункты доставки и т.д. Причём кормовозов, пунктов доставки, а ещё и марок кормов и секций кормовозов (точнее, их возможных сочетаний) так много, что полный перебор всех вариантов абсолютно нереален. Это, как говорят математики, задача большой размерности. Нереально (хотя и чисто теоретически возможно) и применение того же симплекс-метода. Как и любых других аналитических методов. Большую размерность не обманешь!
Но что-то же можно в такой ситуации сделать, раз вам это удалось? – спросит пытливый читатель. Да, можно. Для этого нужно начать с уточнения постановки задачи. В чём она состоит? У нас есть площадки свинокомплексов со своими заявками на доставку кормов и окнами приемки, есть кормовозы со своими секциями… Ну, и так далее (не будем повторяться). Есть целевая функция, подлежащая максимизации. А что требуется? Требуется построить план перевозок, который давал бы наибольшее из всех возможных значение целевой функции. Да, неявно предполагается, что мы должны найти абсолютно лучший, идеальный план! И вот это – совершенно безнадёжная затея!
Между тем, в реальной практике этого обычно и не требуется. Требуется найти приемлемый план. Причем такой, который был бы лучше «человеческого». Чтобы недопоставки, если их не удастся избежать, были в разумных пределах, чтобы средняя загрузка кормовозов была приличной (ну, допустим, не ниже 95%), чтобы затраты на перевозки, насколько это вообще важно, тоже были в разумных рамках и т.д. И вот в такой постановке задача уже становится решаемой. Надо только придумать какую-то разумную стратегию поиска решения – и в путь! Причём, важно подчеркнуть, что «разумность» стратегии не подразумевает никаких гарантий достижения цели.
Такие стратегии и методы, не имеющие строго логического обоснования и не гарантирующие получения искомого результата, называются эвристическими. Подобных эвристических методов известно довольно много: это, в частности, и генетические алгоритмы, и алгоритмы муравьиной колонии и даже нейронные сети.