Искусственный интеллект
"От поля до прилавка"

Л.В. Антонян, А.С. Портнов

Искусственный интеллект для оптимизации управления цепочками поставок в агропромышленных холдингах.

Краткое содержание

1. Вместо введения
2. Цепочки или сети поставок?
3. Имеет ли смысл автоматизировать отдельные звенья цепочки поставок?
4. Пример из практики – «Интеллектуальная система логистического планирования»
5. Критерий минимизации транспортных издержек
6. Сложная целевая функция и управляющие параметры
7. Зачем нужны «авансовые» поставки?
8. Как «побудить» Планировщик включать в план авансовые поставки?
9. Зачем Планировщику «вилки»?
10. А реально ли «поднять» сразу несколько звеньев цепи?
11. Цена вопроса (эффекты)
12. В чём «интеллектуальность» наших разработок?
13. Метод направленного поиска
14. Почти как человек
15. Краткие выводы
1. Вместо введения
Современный агропромышленный холдинг представляет собой конгломерат предприятий различных отраслей по производству, хранению, переработке и транспортировке продукции растениеводства и животноводства, включая доставку готовой продукции (ГП) потребителям. Подобная вертикальная агропромышленная интеграция способна давать значительный синергетический эффект, проявляющийся в увеличении выпуска продукции и улучшении её качества при одновременном сокращении затрат и сроков производства и доставки готовой продукции потребителям, а, в конечном итоге, – в повышении рентабельности и прибыли всего конгломерата в целом.

Но для получения максимального эффекта требуется не механическое объединение соответствующих звеньев цепочек поставок, а их синхронизация и централизация управления ими. Это подразумевает меры по реорганизации бизнес-процессов в отдельных звеньях цепочки и лишь затем – выстраивание объединённой цепи поставок.

В этой статье на ряде примеров наших разработок мы проиллюстрируем суть и практику применения концепции «от поля до прилавка», которой мы следуем при разработке программных продуктов для предприятий агропромышленного комплекса.

Мы покажем, что хотя и даже оптимизация отдельных звеньев производственно-логистической цепочки позволяет получать определённые экономические эффекты, но только «взгляд сверху» даёт возможность гармонизировать цели и интересы всех участников цепочки и синхронизировать функционирование её звеньев таким образом, чтобы получать не локальный, а более существенный по масштабу глобальный экономический результат.
Спросить
2. Цепочки или сети поставок?
На самом деле применительно к мало-мальски крупному агропромышленному холдингу уместнее было бы говорить не о цепочках, а именно о сетях поставок. Поскольку, например, зерновые и бобовые культуры могут выращиваться как на продажу сторонним покупателям, так и для производства комбикормов (причём на собственных комбикормовых заводах), то есть уже здесь мы видим ветвление цепочки. А параллельно может выращиваться сахарная свёкла и тоже продаваться на сторону или перерабатываться на собственных сахарных заводах.
Но при этом уборка различных культур может происходить одновременно, что позволяет планировать и осуществлять её централизованно. Это значит теоретически, к примеру, что одна и та же машина может одним рейсом вывезти зерно на элеватор, а следующим – сахарную свёклу на сахарный завод. Более того, затем эта же машина может обратным рейсом вывезти дефекат (побочный продукт переработки сахарной свёклы) с сахарного завода на поле. Правда на практике такое планирование круговых рейсов весьма трудозатратно и требует высокой квалификации логистов, если нет программной поддержки.
Один из наших программных продуктов – «Планировщик вывоза урожая» – позволяет вот так централизованно планировать вывоз урожая с полей. Такая централизация даже сама по себе сулит существенный экономический эффект – как минимум, на транспортных издержках благодаря более эффективной загрузке транспортных средств (ТС) и, соответственно, снижению потребности в них.
Но минимизация затрат на транспорт не должна быть самоцелью. Оптимальное планирование перевозок, приводит к сокращение простоев транспорта, т.е. перевозим больше продукции меньшим автопарком. Меньшим парком ТС и управлять легче, но, что ещё более важно, повышается надёжность доставки продукции благодаря возможности резервирования высвобождающихся ТС на случай форс-мажорных ситуаций. Важно: и сама оптимизация перевозок в отрыве от других звеньев цепочки поставок агрохолдинга не должна быть самоцелью, поскольку перевозки играют в ней хотя и важную, но вспомогательную роль. Это мы подробнее обсудим позже на примере перевозок комбикормов.
А пока отметим, что в дальнейшем мы, всё-таки, будем использовать термин «цепочка (или цепь, но не сеть) поставок» как общепринятый, тем более что те фрагменты, которые мы будем рассматривать, и будут представлять собой либо отдельные звенья, либо цепочки.

Спросить
3. Имеет ли смысл автоматизировать отдельные звенья цепочки поставок?
Не надо быть квалифицированным математиком, чтобы понимать, что глобальная оптимизация, как правило, предпочтительнее локальной, то есть, что если требуется оптимизировать какой-то процесс, то в идеале его следует оптимизировать в целом, а не пытаться вносить локальные улучшения в отдельные подпроцессы и затем «сшивать» получающиеся решения.
Это значит, что нужно выбрать какой-то глобальный критерий (или критерии) оптимизации всей цепочки поставок и искать решение, оптимальное по этому критерию (соответственно, критериям). В простейшем случае критерий оптимизации – это некоторая целевая функция, подлежащая максимизации или минимизации (более сложные случаи, как и разные тонкости, мы рассматривать не будем).
Если речь о цепочке поставок, то в роли целевой функции может выступать прибыль, подлежащая, естественно, максимизации. В варианте «от поля до прилавка» это будет выручка от реализации готовой продукции (допустим, из мяса свиней или птицы) за вычетом затрат:
• производственных (начиная с выращивания тех же зерновых и бобовых культур как сырья для производства комбикормов и заканчивая мясопереработкой);
• логистических (начиная с завоза семян и материалов на поля и заканчивая доставкой готовой продукции потребителям);
• маркетинговых и прочих.
И нужно спланировать производственные, логистические и прочие процессы таким образом, чтобы вот эту целевую функцию максимизировать. В частности, например, нужно определить, какую номенклатуру готовой продукции и в каких объёмах надо будет для этого произвести. Ясно, что решать задачу в такой постановке абсолютно нереально: ведь даже целевая функция сама по себе смотрится устрашающе. Поэтому с неизбежностью надо спускаться на уровень отдельных звеньев цепочки поставок или, по крайней мере, коротких фрагментов.
Спросить
4. Пример из практики – «Интеллектуальная система логистического планирования»
Несколько лет назад нами в рамках продолжения проекта по аудиту транспортных процессов одного из крупных Агрохолдингов, была разработана (на платформе «1С») «Интеллектуальная система логистического планирования» (ИСЛП), автоматизировавшая планирование и контроль процессов доставки комбикормов (КК) с комбикормовых заводов (ККЗ) на площадки свинокомплексов (СК). То есть, здесь, вроде бы, налицо вычленение и автоматизация отдельного звена цепочки поставок. И если бы мы и в самом деле рассматривали перевозку комбикормов не как звено цепочки поставок, а совершенно отдельно, то мы бы с неизбежностью пришли к минимизации транспортных издержек как к критерию оптимизации.

Постановка задачи в общих чертах выглядела так. На определённый плановый период (например, на сутки или смену) требуется спланировать доставку заданных (по маркам КК и по производственным площадкам СК) объёмов комбикормов в заданные окна приёма КК на площадках доступным в моменте парком комбикормовозов (ККВ) с заданными вместимостями секций и окнами готовности к выполнению перевозок. При этом должны быть также заданы транспортные плечи между соответствующими объектами (базой ККВ, ККЗ, площадками СК), нормы времени выполнения погрузо-разгрузочных и других технологических операций, удельные затраты на ККВ и некоторые другие параметры (в частности, относящиеся к биобезопасности).

Конечно, планирование перевозок комбикормов по критерию минимизации транспортных издержек имеет определённый смысл. Потому что при таком критерии Планировщик будет стремиться максимально загружать кормовозы, поскольку перевозки полупустыми рейсами, конечно, обойдутся дороже, для каждого ККВ будет подбираться «компактный» набор рейсов, а число ККВ, включаемых в план перевозок, – по возможности минимизироваться. Но это и будет та самая локальная оптимизация, о которой говорилось выше. Истинные же цели оптимизации – на уровне всей цепочки поставок в целом – приоритетно должны учитывать следующие цели:
• своевременное и надёжное снабжение свинокомплексов комбикормами;
• своевременный вывоз кормов с комбикормовых заводов для обеспечения их бесперебойной работы (из-за ограниченности объемов и сроков хранения кормов);
• и только после соблюдения этих факторов стремиться к варианту с минимальными затратами.

Однако, думаю излишне объяснять, что достижение первых двух целей может потребовать вовсе не уменьшения, а, возможно, даже увеличения затрат на доставку: и тех же полупустых рейсов, и привлечения дополнительных единиц ККВ.
5. Критерий минимизации транспортных издержек
Вообще, критерий минимизации транспортных издержек хорошо работает при фиксированных объёмах поставок. Если, например, нужно в течение суток доставить ровно 600 тонн кормов разных марок с ККЗ на разные площадки свинокомплексов (в соответствии с поданными ими заявками). И если это вообще возможно, то да – можно стремиться сделать это с наименьшими издержками. Но допустим, что в данных конкретных условиях это невозможно и что наличным парком кормовозов можно доставить только 590 тонн.
Следует ли стремиться доставить и оставшиеся 10 тонн любой ценой? А может быть, на конкретном свинокомплексе, заказавшем эти 10 тонн, имеющихся запасов кормов на складе вполне хватит, чтобы можно было безболезненно перенести доставку на следующие сутки и отправить туда уже не полупустую, а полностью загруженную машину?

Но возможна и противоположная ситуация. Предположим, что за те же сутки имеющимся парком кормовозов можно доставить те же 590 тонн, но заявок подано только на 500 тонн. Означает ли это, что следует ограничиться перевозкой этих самых 500 тонн и сэкономить на транспортных издержках, оставив 1 или 2 кормовоза в резерве? Не приведёт ли это к тому, что на следующий день придётся перевозить 700 тонн и это окажется невозможно? Или не приведёт ли это на ККЗ к переполнению бункеров не вывезенной своевременно готовой продукцией и, как следствие, к остановкам завода?

То есть, мы видим, что оптимизация перевозок кормов без учёта ситуации хотя бы в смежных звеньях цепочки поставок (а именно к этому ведёт следование критерию минимизации транспортных издержек) может приводить к крайне нежелательным последствиям, негативный эффект от которых может, как показывает практика, многократно перекрывать эффект такой локальной оптимизации затрат на перевозки.

Какие выводы вытекают из вышеизложенного? Следует ли совсем отказаться от минимизации издержек на доставку комбикормов? Конечно, нет. И уж, тем более, о поставках «любой ценой» можно вести речь только в исключительных, экстренных случаях. Но критерий оптимизации должен быть более сложным и учитывать транспортные издержки наряду с другими переменными. Это могла бы быть какая-то многокритериальная оптимизация. Но мы пошли другим путём.
6. Сложная целевая функция и управляющие параметры
Целевая функция у нас одна, но она более сложная, чем просто издержки на доставку. Она включает и разные другие переменные со своими весовыми коэффициентами.

Причём эти весовые коэффициенты – управляющие параметры алгоритма планирования – пользователь системы может варьировать, давая, тем самым, алгоритму «знать», что в конкретный момент важнее. Вот, например, в нашу целевую функцию входят штрафы за недопоставки. Причём для разных площадок они могут быть разными, чтобы алгоритм «понимал», на какие площадки в данный момент важнее поставить корма своевременно и в полном объёме.

Эти штрафы виртуальны, учтены в алгоритме, то есть, никому оплачивать их деньгами не приходится, но они позволяют интеллектуальному алгоритму управлять недопоставками: увеличение значения штрафов ведет к снижению недопоставок, но, возможно, ценой некоторого снижения загрузки кормовозов, появления менее оптимальных рейсов и, в конечном счёте, повышения тех самых затрат на перевозки. Зато все вовремя. Конечно, умный алгоритм, если это возможно, прежде всего находит вариант доставки, когда все привозится вовремя, то что нужно и в нужном объеме.

Подобных управляющих параметров может быть много. Например, можно «сообщить» алгоритму, что на какие-то конкретные площадки СК нежелательно привозить одним рейсом ККВ несколько марок кормов (например, более 2-х) – и Планировщик будет пытаться таких ситуаций избегать. Другой пример: в дополнение к штрафам за недопоставки в Планировщике в ходе его доработки была реализована приоритизация заявок СК на поставку кормов. Это значит, что какие-то конкретные заявки более приоритетны (и подлежат исполнению в первоочередном порядке), а какие-то – менее. Например, у долгов (неисполненных заявок прошлых периодов) может быть высокий приоритет, у текущих заявок – средний, а у авансовых поставок – низкий.
7. Зачем нужны «авансовые» поставки?
Авансовые поставки - поставки в счёт будущих потребностей свинокомплексов, необходимости в которых на текущий момент нет, но в ближайшие дни будут. Авансовые поставки, при правильных расчетах, позволяют:
1. равномерно и своевременно вывозить КК с ККЗ, включая её ситуативно невостребованные излишки и освобождая бункера ККЗ для производства новых партий КК;
2. повысить равномерность и своевременность поставок комбикорма на свинокомплексы;
3. обеспечивать свинокомплексам «подушки безопасности» в виде дополнительных запасов комбикормов при существующих уровнях текущих потребностей;
4. существенно оптимизировать загрузку кормовозов и план перевозок в целом.

Прокомментируем эти тезисы вкратце.
Что касается вывоза комбикормов с ККЗ, то если вывозить их в точном соответствии с текущими потребностями свинокомплексов, то объёмы вывоза, как мы уже отмечали выше, будут колебаться (вместе с потребностями). Но поскольку у комбикормовых заводов резервы производственных мощностей обычно отсутствуют, то они вынуждены работать на пределе и поэтому снижать суточные объёмы выпуска при снижении спроса не могут.

Как следствие, ККЗ для соблюдения нормативов себестоимости вынуждены производить доп.объемы корма в соответствии с годовым планом (что крайне редко соответствует ближайшим перспективам потребления). Но возможности складирования корма на ККЗ обычно ограниченны, поэтому снижение объёмов её вывоза чревато остановками производства. А чтобы объёмы вывоза были более стабильными, то нужно иметь возможность производить и поставлять авансом. (Заметили, что мы уже говорим далеко не о снижении затрат на перевозки?)

Дело в том, что проблемы могут создавать и ситуативно невостребованные излишки корма: к примеру, две-три тонны остатка корма невостребованной марки могут блокировать возможность заполнения многотонного бункера ККЗ кормами других («ходовых») марок. А вывезти невостребованный корм можно только в счёт будущих потребностей того или иного свинокомплекса. К тому же, эти две-три тонны могут позволить дозагрузить кормовоз, например, при нехватке кормов (в остатках ККЗ) по текущим заявкам (это уже комментарий к четвёртому пункту, см.выше). Аналогичным образом авансовые поставки позволяют обеспечить равномерность снабжения свинокомплексов кормами в тех же условиях колеблющихся текущих потребностей.

На самом деле вместо подробных пояснений в пользу целесообразности авансовых поставок можно было привести одно общее соображение: они дают дополнительную свободу манёвра, а значит, и дополнительные возможности оптимизации рассматриваемого процесса.
8. Как «побудить» Планировщик включать в план авансовые поставки?
Если по текущим заявкам и, тем более, по долгам для этого у нас предусмотрены штрафы за недопоставки, то штрафовать за неисполнение авансовых поставок, наверное, было бы совсем уж нелогично! Но в отсутствие штрафов Планировщику будет «неинтересно» планировать дополнительные объёмы: ведь дополнительные объёмы – это дополнительные транспортные издержки, которые только «ухудшат» целевую функцию. Значит, целевую функцию нужно как-то модифицировать, чтобы дополнительные объёмы могли её потенциально «улучшать». А для этого в ней должны быть не одни только затраты и штрафы. Но что это может быть ещё?

Решение мы нашли следующее. У нас целевая функция в Планировщике перевозок комбикормов на самом деле представляет собой некую виртуальную маржинальную прибыль (как и упоминаемые далее составляющие), то есть, выручку от услуг по перевозке кормов за вычетом переменных транспортных затрат на перевозки и штрафов (за недопоставки и прочих). Такая «выручка» рассчитывается по предварительно рассчитываемым тарифам на доставку кормов с ККЗ на площадки свинокомплексов. Тарифы представляют собой переменные транспортные затраты с определённой наценкой. Наценка является одним из управляющих параметров алгоритма планирования, позволяющим, в частности, управлять объёмом перевозок и средней загрузкой кормовозов: чем выше наценка, тем (при прочих равных условиях) выше объём перевозок, но ниже средняя загрузка кормовозов. Естественно, описанная целевая функция подлежит максимизации.

Вот такая целевая функция и делает возможным включение в план перевозок авансовых (и вообще, сверхплановых) поставок. Но этого недостаточно: Интеллектуальный планировщик должен ещё «понимать», в каких пределах возможно превышение плана по объёмам перевозок.
9. Зачем Планировщику «вилки»?
Для того, чтобы планировщик должен ещё «понимал», в каких пределах возможно превышение плана по объёмам перевозок, нужно чтобы потребности (заявки на поставку кормов) площадок свинокомплексов по маркам кормов задавались не фиксированными величинами, а в виде «вилок»: от минимально необходимых объёмов до максимально возможных (которые площадка готова принять).

Например, площадка может задать «вилки» по одной марке корма от 9 до 13 т ( 9т – минимальный объем по рациону, 13т – максимум, что вмести тся в бункеры), а по другой – от 11 до 14 т, а при этом Планировщик – учитывая наличие нужных кормов на ККЗ и другие данные – запланировать загрузку в 22-тонный ККВ, к примеру, 10 т первой марки и 12 т второй. Мы видим, что «вилки» дают Планировщику свободу манёвра и, действительно, возможность оптимально загружать кормовозы, заводу – своевременно отгружать производимые корма, а площадкам – получать дополнительные объёмы как «подушки безопасности и, возможно, чуть реже заказывать поставки.

Важно при этом, что Планировщик может планировать дополнительные (сверх минимальных) объёмы поставок только из излишков, которые остаются после резервирования минимальных объёмов за всеми площадками. Иначе говоря, он не может дать одной площадке дополнительный объём в ущерб другим.
Таким образом, мы видим, что хотя и Планировщик перевозок комбикормов планирует, на первый взгляд, именно и только перевозки комбикормов, используя информацию по начальным остаткам кормов на ККЗ и по динамике их производства, а также по потребностям свинокомплексов в кормах сугубо как входные данные, но на самом деле он (Планировщик) учитывает при этом необходимость своевременного вывоза кормов с ККЗ и своевременного и полного удовлетворения потребностей СК в кормах. И всё это благодаря правильному подбору критерия оптимизации плана перевозок. Потому что, автоматизируя планирование перевозок комбикормов, мы изначально понимали, что автоматизируем не перевозки как таковые, а одно из звеньев целостной цепочки поставок.

В результате такой комплексной оптимизации перевозок комбикормов – именно как звена цепочки поставок – выигрывают все: не только перевозчики, но и производители, и потребители кормов. А дальше можно автоматизировать и смежные звенья цепочки поставок: и планирование потребностей СК в кормах, и планирование их производства. Тогда в целом система должна будет работать в следующей последовательности: сначала – планирование потребностей, затем – производства и после этого – перевозок кормов.
10. А реально ли «поднять» сразу несколько звеньев цепи?
Вполне реально. Внедрение интеллектуальной системы логистического планирования безусловно дает эффект (при правильной эксплуатации системы), но эти эффекты существенно ниже возможных. Поэтому мы предлагаем расширить интеллектуальную цифровизацию и создать программный комплекс, охватывающий следующие звенья цепи:
1. Управление запасами КК на площадках СК;
2. Производство КК на ККЗ;
3. Доставка КК с ККЗ на площадки СК.

Такой подход, с учетом преимуществ указанных в предыдущей главе, даст кратный прирост финансового результата. Прокомментируем эти этапы планирования вкратце.

Система управления запасами КК на площадках СК (далее – СУЗК) получает в реальном времени данные от весовых датчиков, установленных в бункерах СК. Т.е. учитывает реальные остатки КК в бункерах, получает данные о начале выгрузки в бункер, о скорости выгрузки (это критично, если шнековая выгрузка), об объеме доставки и месте. Оперативный контроль и информирование ответственных на мобильное приложение поможет избежать следующих сбоев:
1. Выгрузили КК не в тот бункер;
2. Выгрузили не столько, сколько нужно;
3. Нарушен норматив скорости выгрузки.

На первом этапе, СУЗК, «зная» реальные текущие остатки КК в бункерах, прогноз поедаемости из расчета возраста и количества поголовья, статус бункеров, запланированные поставки КК и др. рассчитывает объем новых заказов КК для пополнения бункеров на площадках СК (реальные потребности на текущий момент, а не «средняя температура по больнице»). Все Заказы с площадок СК автоматически «подтягиваются» в Интеллектуальную Систему планирования производства КК на ККЗ (далее – ИСППК).

На втором этапе, ИСППК консолидирует заказы по маркам КК. ИСППК, «зная» остатки КК в своих бункерах и планы по отгрузке КК, а также производительность линий, нормативы на переналадки, остатки сырья на складах, вместимость бункеров готовой продукции рассчитывает оптимальный семенно-суточный график производства по критерию «максимизации маржи». Из оптимального сменно-суточного графика производства ККЗ видно, какая марка КК в каком объеме и в какое время пополнит бункер готовой продукции. ИСППК оперативно проинформирует ответственных, если обнаружит отклонение в конверсии сырья в корм, т.к. в реальном времени отслеживает расход сырья и производство корма в фактическом весе на основе данных весовых датчиков.

На третьем этапе, Интеллектуальная система логистического планирования (далее – ИСЛП) осуществляет расчет расписания подачи ККВ под загрузку на ККЗ. ИСЛП «знает» почасовой график производства КК, доступные в моменте ККВ и характеристики, поступившие заявки на доставку КК, долги по недовезенным заявкам, транспортные нормативы и дороги. На основе этих данных, а также с учетом сменности и режима работы водителей, мультиокон доступности и текущей дислокации ККВ, нагрузки на ось ККВ, правил биобезопасности и других важных параметров , рассчитывает поминутное расписание движения ККВ от выхода с места текущей дислокации до возвращения в автопарк. Расписание составляется с учетом сложной целевой функции оптимизации, нацеленной на своевременную доставку всех заказов (с учетом долгов) с минимальными затратами.
11. Цена вопроса (эффекты)
Весь расчет и согласования делается за считанные минуты при наличии исходных данных и дисциплине исполнителей. Таким образом, мы охватываем цифровизацией всю цепочку поставок КК. Это приводит к существенному приросту веса поголовья (+1-2%) за тот же период времени, при одновременном снижении себестоимости перевозок и производства КК (до 10%). Система окупается менее чем за год.

Далее можно было обсудить подключение других звеньев к комплексной цифровизации в рамках единой концепции «От поля до прилавка». Например, планирование технологических перевозок, доставки живка с площадок откорма до мясоперерабатывающих предприятий (далее – МПП), планирование производства МПП, доставка готовой продукции с МПП до складов покупателей.

Сквозное адаптивное управление цепочкой поставок дает синергетический эффект. Можно получить существенное снижение себестоимости продукции на прилавке до 30%. Потенциал оптимизации у наших предприятий просто огромен.
12. В чём «интеллектуальность» наших разработок?
В последнее время наши программные продукты, автоматизирующие планирование производства или перевозок, мы стали называть интеллектуальными системами производственного и, соответственно, логистического планирования. Насколько, в самом деле, уместно такое определение (или это просто дань моде)? На этот вопрос сложно дать общий ответ. Поэтому обратимся к конкретным примерам.

Если говорить о Планировщике перевозок комбикормов, то там мы имеем комбинаторную задачу, поскольку там приходится определять, какой кормовоз в какие пункты поедет, в какой последовательности и т.д., то есть комбинировать кормовозы, пункты доставки и т.д. Причём кормовозов, пунктов доставки, а ещё и марок кормов и секций кормовозов (точнее, их возможных сочетаний) так много, что полный перебор всех вариантов абсолютно нереален. Это, как говорят математики, задача большой размерности. Нереально (хотя и чисто теоретически возможно) и применение того же симплекс-метода. Как и любых других аналитических методов. Большую размерность не обманешь!

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

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

Такие стратегии и методы, не имеющие строго логического обоснования и не гарантирующие получения искомого результата, называются эвристическими. Подобных эвристических методов известно довольно много: это, в частности, и генетические алгоритмы, и алгоритмы муравьиной колонии и даже нейронные сети.

13. Метод направленного поиска
Но мы остановили свой выбор на методе направленного поиска с запретами (исключениями), развили его, успешно применили к нескольким различным задачам (не только к перевозкам комбикормов, но, в частности, ещё и к вывозу урожая с полей) и рассказали об этом подходе и нашем опыте его практического применения в другой нашей статье, которая может быть интересна самому широкому кругу читателей. А здесь мы ограничимся кратким описанием этого метода.

Начнём с того, что изначально пользователь выделяет на работу алгоритма определённое время (секунду, 10 секунд, минуту, час...), в течение которого алгоритм строит и сравнивает некоторые (но не все) решения рассматриваемой задачи (в нашем случае – планы перевозок) и выбирает из них наилучшее (по заданному критерию оптимизации), которое и выдаёт по завершении работы пользователю.

Алгоритм стартует «с нуля», то есть с пустого плана перевозок (когда никто ещё никуда не едет) и на каждом шаге разворачивающегося процесса построения плана добавляет в него (пока это возможно) по одному рейсу. Причём, всякий раз выбирая самый выгодный (по целевой функции) рейс (из всех возможных вариантов ККВ и их загрузки, пунктов доставки и т.д.). На первом шаге это будет, скорее всего, самый продолжительный рейс, с самой большой загрузкой. На втором шаге по тому же принципу добавится второй рейс, причём это может быть рейс как того же, так и другого ККВ – как получится. И так далее – пока будет сохраняться возможность добавления новых и новых рейсов.

Когда это станет невозможно, алгоритм запомнит построенный план перевозок как на этот момент наилучший и продолжит поиск более эффективных решений. Для этого ему придётся удалить из плана один из рейсов, причём удалить надо будет самый невыгодный из рейсов – чтобы в результате снижение целевой функции было как можно меньшим. А на следующем шаге алгоритм попытается вместо удалённого добавить в план какой-то другой рейс, причём именно другой, поскольку правило запретов не позволит ему добавить только что удалённый рейс (это станет возможным только через определённое число шагов, называемое в данной концепции длиной списка запретов). Если такие другие рейсы найдутся, то самый выгодный из них будет включён в план, а иначе придётся удалять ещё один рейс. И этот итерационный процесс может продолжаться сколь угодно долго (пока выделенное на него время не истечёт), и на каждом шаге этого процесса достигнутое значение целевой функции сопоставляется с прежним рекордом, и если оно оказывается больше, то текущий план перевозок запоминается как наилучший на замену запомненного ранее.

14. Почти как человек
Такую стратегию вполне мог бы применять и человек при составлении плана вручную, но компьютер делает это неизмеримо быстрее! При этом в алгоритм заложены разные «разумные» соображения, которыми вполне мог бы руководствоваться и человек. Например, человек, зафиксировав очередной рекордный план, наверняка захотел бы попробовать его улучшить, сильно не меняя, какими-то отдельными заменами рейсов. Например, человек мог бы увидеть, что какому-то кормовозу назначен один длинный рейс, к которому дополнительных рейсов добавить не получается, но который можно заменить двумя рейсами покороче – и, тем самым, улучшить план. Алгоритм действует похожим образом благодаря предусмотренному в нём варьированию длины списка запретов, причём варьированию целенаправленному.

В частности, при получении рекордного плана длина списка запретов уменьшается до 1, а потом постепенно увеличивается, что и позволяет алгоритму искать локальные улучшения плана. А вообще, варьирование длины списка запретов и некоторых других управляющих параметров алгоритма (причем с использованием датчика случайных чисел) существенно повышает эффективность алгоритма по меньшей мере по двум причинам. Во-первых, если использовать фиксированное значение той же длины списка запретов, то оно может оказаться неудачным, а как подобрать удачное – совершенно непонятно. Во-вторых, при фиксированной длине списка запретов весьма вероятно зацикливание алгоритма (то есть, с некоторого момента он может начать «ходить по кругу»), от чего случайное варьирование этого параметра в значительной мере страхует.

В результате получается, что алгоритм «самонастраивается» или, если угодно, «самообучается» прямо в процессе своей работы, что тоже напоминает поведение человека при решении нестандартных задач. Но человек, сталкиваясь с неудачами, может даже пытаться менять способ решения задачи. И такое в нашем алгоритме тоже предусмотрено! И, по отзывам коллег (как и по нашим собственным наблюдениям), усовершенствованный таким образом алгоритм направленного поиска с запретами и в самом деле работает очень «по-человечески». Но при этом, что интересно, он нередко находит парадоксальные для человека варианты, поскольку перебирает он их довольно быстро и никаких парадоксов для него вообще не существует.
15. Краткие выводы
На примерах ряда наших разработок мы обсудили вопросы оптимизации цепочек поставок в агропромышленных холдингах. Мы показали, что хотя и глобальная оптимизация таких цепочек обычно практически невозможна, но их можно эффективно оптимизировать по частям, если правильно выбирать для них критерии оптимизации, направленные на достижение глобальных целей.

Такой подход позволяет, избегая «наполеоновских планов», получать за разумные сроки ощутимый экономический эффект. Это достигается применением довольно изощрённых экономико-математических методов, включая эвристические, которые вполне правомерно относить к сфере искусственного интеллекта, бурно развивающейся в последнее время. А быть, как говорится, «в тренде», причём, не на словах, а на деле, – важнейшая задача всех предприятий на нынешнем этапе развития нашей страны.

Закажите экономико-цифровой аудит для обоснованного решения о цифровизации

Наша команда с 2000 года занимается повышением эффективности предприятий в области оптимизации производства, логистики и цепочек поставок.
Мы выполняли проекты оптимизации процессов с Иркутской нефтяной компанией, ТНК-ВР, ТНК, Юганснефтегаз.
Нам доверяют лидеры отраслей: Норникель, Магнитогорский металлургический комбинат, КАМАЗ, Росэнергоатом, Казахмыс, Казцинк, Северсталь и многие другие. Отзывы это подтверждают.
Мы работаем по методике проведения экономико-цифрового аудита. Она проста и предназначена для выявления потерь, таких как:
1. простои производственных ресурсов,
2. необоснованные запасы,
3. различные браки и сбои,
4. повышенные затраты на разных этапах бизнес-процессов вашего предприятия.
Оформим реестр потерь и точек роста, выделим те, которые устраняются автоматизацией.
Потери не связанные с автоматизацией пойдут бонусом.
Очень важно правильно провести расчеты и представить полученную информацию руководству предприятия для принятия решения.

Наши выводы основаны на фактах: фотофакты, анализ статистики и замеров покажут реальные потери и возможности роста. Экономические эффекты в цифрах в пересчете на год. Наглядно показана окупаемость и за счет чего.

Мы привязываем наше вознаграждение к получению экономических эффектов.

Закажите экономико-цифровой аудит со скидкой 20%, с вами свяжется эксперт для обсуждения сроков и деталей