![](https://habrastorage.org/webt/vu/i5/e6/vui5e6whrn5depyg4fwrnvqikyg.png)
Было-стало после кластеризации и оптимизации культур
Колхозы и агрохолдинги в России почти не автоматизированы. А там на почти ровном месте с минимальными затратами можно получить до 10 % прироста доходности за счёт выбора оптимального портфеля выращиваемых культур, точного распределения техники по работам и вообще нормального планирования. Мы пришли на несколько объектов и провели расчёты для них, о чём сейчас я и расскажу.
Сформулировали три фундаментальных вопроса:
- В каких пропорциях что нужно вырастить и где, чтобы больше заработать?
- Когда какая техника и где будет работать?
- Что должно быть в парке техники, чтобы не возникало рисков срывов сроков проведения агроопераций или больших затрат на найм?
Мы решали все эти задачи, и там море интересных особенностей. Обсуждать мы будем абстрактный колхоз «Путь коммунизма», расположенный в случайном месте (нам просто понравились поля на спутниковой карте), потому что настоящих заказчиков я называть пока не могу.
В таких местах, конечно, действуют рациональные агенты. Но иногда встречается пьющий агроном, иногда попадается косячник-механизатор и другие узнаваемые персонажи из реальной жизни. Нас ждут град, сломанный комбайн и другие приключения. И вот мы пойдём в это всё со своей автоматизацией.
Почему задаёмся такими вопросами?
— В каких пропорциях что нужно вырастить и где, чтобы больше заработать?
Важно оптимизировать агрокультуры под поля, то есть какой культуры сколько вырастить, в каком районе какая из этих культур лучше растёт с учетом типа почвы, на каком поле что росло в прошлые годы, какими маршрутами удобнее будет собирать урожай в уборку и плюс ещё необходимо не забывать учесть большое количество ограничений. Сейчас ответы на эти вопросы формируются очень трудоёмким многоэтапным процессом в экселе без учёта исторических данных, но зато с высоким уровнем субъективизма менеджеров.
— Когда какая техника и где будет работать?
Культуры по полям распределили и возникает необходимость теперь распределить технику по ним. И вот каждый день линейные менеджеры решают следующую задачу: распределить Х техники на Y полей выполнять Z видов операций по W культур. А еще надо бы учесть, успели ли все операции сделать вчера в срок, а если не успели, то какую именно долю?.. Как-то уже слишком много факторов для процесса, который решается в экселе, вам так не кажется? Но при этом данную задачу ежедневно решают во всех агрохолдингах и колхозах, опираясь на опыт и используя порой грубые допущения, пренебрегая оптимальностью конечного результата.
— Что должно быть в парке техники, чтобы не возникало рисков срывов сроков проведения агроопераций или больших затрат на найм?
Зачастую именно техника является узким местом в процессах, поэтому очень важно иметь оптимальный парк техники или план для его формирования на ближайшие годы. Но чтобы получить этот желанный «оптимальный парк техники», необходимо сперва решить корректно задачу, описанную выше, без допущений, и уже на базе этих графиков работ оценить возможные риски и сформировать возможные варианты техники, которые позволили бы снизить вероятность выходов за агросроки или уровень нерационального найма, либо вовсе их избежать.
С вопросами разобрались. Перейдём к тому, как же мы искали на них ответы.
Что выращиваем и где?
Итак, приехали мы в «Путь коммунизма». Сразу пожалел свои NB. В них вообще не комильфо, здесь сапоги решают. Попросили немного сдвинуть запланированное «чаепитие» на вечер, а пока рабочий день был в самом разгаре, сразу познакомить нас с агрономом, который занимается формированием распределения культур по полям. К нему-то мы первым делом и отправились.
Вы, конечно же, хорошо себе представляете ATX-корпус, жизнерадостно хрустящий жёстким диском, как в детстве, за которым работает агроном Василий. У него открыт эксель, в котором развёрнута пугающая таблица всех полей. В общей сложности есть 300 полей.
В ней есть отметки о том, у какого поля какой тип почвы и детальные показатели по её бонитету (бонитет — это такая интегральная оценка производительности почвы), плюс к этому — какая культура росла в прошлом году на этом поле, какая урожайность была по ней и так далее. И вот по-хорошему надо распределить культуры учитывая всё это.
Почему это так важно? Потому что есть море особенностей и нюансов, к примеру, разные культуры по разному изменяют свойства почвы и иногда почве дают «отдыхать», засеивая её паром (на самом деле это означает — засеять ничем). Ещё и удобрения, и пестициды значительно меняют бонитет почвы, и нужно дождаться нейтрализации части элементов, и есть ещё много-много других интересностей, которые были задокументированы ещё в СССР в виде жёсткого набора правил, но основополагающим правилам вообще несколько веков, если не тысячелетий. Если агроном Василий упростит себе жизнь и распределит культуры рандомом по полям, то «Путь коммунизма» понесёт ТАКИЕ потери, в связи со значительно низкой урожайностью по большей части полей, а местами и вовсе полнейшим неурожаем, что полетит его прекрасная кепка с его кудрявой головы.
И начали мы разбираться:
- На какие данные обычно опирается агроном.
- Какие дополнительно ещё понадобятся нам.
- Откуда ноги растут у этих всех данных с точки зрения того, из каких систем они берутся.
- Как максимально элегантно этот процесс распределения культур можно автоматизировать, чтобы минимально отвлекать трудяг нашими умными-разумными скриптами оптимизации, но при этом вписать их в обыденные рабочие процессы.
К нашему счастью, в «Пути коммунизма» автоматизация началась в нулевых, и уже накопленных данных для решения ряда наших задач нам хватало, а именно — это пять лет истории. На одном из других же реальных объектов нам несказанно повезло, и там была бумага примерно за 30-летний период, которую, естественно, оцифровывать мы пока не готовы, да и незачем.
Помимо данных по истории полей и их состоянию, нам так же потребовались дополнительные ограничения, вытекающие из особенностей бизнес-процесса «Пути коммунизма», к примеру, необходимо ли учитывать потребности рынка или других групп предприятий. Вот пример такого ограничения — «У нас должно быть не менее 50 % пшеницы озимой, потому что мы в экспортной зоне производства. При этом есть связи в вертикали с масложировыми комбинатами, и нам необходим подсолнечник не менее чем 10 % от общего объёма. На выращивание нута и других нишевых бобовых отводим не больше 5 %».
Взяв в работу всю полученную информацию, мы ушли думать. Вернувшись через пару недель с первым результатом к агроному Василию, мы согласовали с ним ряд дополнительных ограничений, которые выявили сами на базе этих пяти лет истории. К примеру, что для двух культур были выявлены ещё дополнительные неблагополучные культуры-предшественники (те, что росли в прошлые года), которые занижали урожайность, и обсудили с ним момент того, готовы ли мы убрать из моделирования несколько севооборотов (севооборот — это такое научно обоснованное чередование сельскохозяйственных культур и паров во времени и на территории), в которых такие пары-последовательности культур присутствуют. И, конечно, показали ему первые наши результаты оптимизации.
Наша оптимизация строится на модели, позволяющей формировать оптимальный стратегический сценарий на семь лет, сбалансировав такие факторы как доходность по культурам, ограничения сбыта, ограничения парка техники, допустимые чередования культур по полям и учёт специфики каждого из полей, ограничения мест хранения и логистики до них, а также ввели новое понятие как «кластера полей» и работали при оптимизации уже с ним.
Посмотрев на наши дешборды с результатами, агроном Василий сказал, что результат «похож на правду». Но тут же и вопросы-сомнения посыпались:
— А вот вы план на семь лет сделали, а если мы в следующем году решим-таки купить часть полей?
— А вот мы подумываем сократить производство пшеницы и часть полей свеклой засеять, потому что всё же верится, что сахарный завод запустят наконец?
— А что же делать если вдруг засуха в сезоне?
— Да и вообще, некогда нам в сезоне ваши цифры разглядывать! Поля зовут!
Все вопросы и замечания были учтены, но помимо Василия есть ещё поставщик техники, финдиректор и много других людей, которые определяют будущий бюджет и будущее земель. С каждым прогоном результатов подключался кто-то новый и мы узнавали про всё новые и новые нюансы и ограничения, которые стоит учитывать. Но в один из прогонов результатов мы потеряли нашего Василия. Как оказалось позднее, у него был «home office» по причине плохого самочувствия, вызванного затянувшейся депрессией на фоне остановившихся полевых работ, связанных с недельными дождями.
В итоге близкий к финишному вариант скрипта оптимизации назывался «final_666_13_2019», потому что постоянно всплывали какие-то расхождения или условий становилось так много, что оптимального решения не находилось и приходилось придумывать как же всё учесть.
В итоге сформировался инструмент, который работает следующим образом:
- Есть интерфейс, где пользователь может сперва просмотреть значения всех входных в оптимизацию ограничений. При необходимости их изменить и запустить пересчёт.
- Далее запускается оптимизационная модель.
- Результаты оптимизации подгружаются в дешборды.
Таким образом пользователь-агроном может самостоятельно создавать разные сценарии оптимизации и дальше в подготовленных уже отчётах делать сравнение нескольких. Но когда только подобные проекты внедряются в агрохолдинги или колхозы, мы первое время являемся операторами такой системы в режиме «вопрос=ответ».
Операционное планирование
Долгосрочный севооборот согласован, все счастливы или должны быть счастливы (это приказ директора). Теперь нужно составить график работ на каждом поле.
То есть у нас есть набор последовательности операций для каждой культуры и 300 полей с уже закреплёнными на них культурами в результате нашей оптимизации. Необходимо с этими вводными распределить набор имеющегося у нас транспорта по этим операциям, причём с учётом меняющейся погоды и желательно, естественно, минимизировав количество наёмной техники.
На пальцах это выглядит примерно так. Сперва надо сделать ежедневный план для каждого поля с максимальной выработкой по каждому юниту техники на весь сезон, чтобы определить какой техники больше всего не хватает и на каких операциях. Проанализировать этот момент, подумать, как можно сбалансировать технику. Сбалансировать. Потом заново сделать подневный график для каждого поля и удостовериться ещё в том, что он стал действительно оптимальнее предыдущего. А если вдруг прошёл град в сезоне и убил урожай на десятке полей, то естественно технику уже на эти поля гонять не надо, то есть… необходимо снова пересчитать подневный план на остаток сезона по всем полям!
![](https://habrastorage.org/webt/ov/l8/x0/ovl8x0n4wxnk2k5vthwylabjliw.png)
График операций и необходимой/используемой техники
В реальной жизни такими задачами занимаются линейные менеджеры. И если вы представляете себе линейных менеджеров, как героев фильма Звягинцева «Левиафан», то смею вас огорчить — это не так! По крайней мере, в нашем «Пути коммунизма». Но Россия — страна большая и окунуться в «Левиафан» можно с лихвой. Проверял. Но всё же для нас, людей, сидящих в мегаполисе, режим дня работников нашего «Пути коммунизма» будет дик. Как же без вот этих часовых-двухчасовых маршрутов от дома до офиса и обратно? Мы и подумать не можем о возможности доехать до дома в обед на велосипеде, успеть покушать и посмотреть «Обзор. Чрезвычайные происшествия» или «СашаТаня», а потом снова вернуться «в поля»!
И вот на одного линейного менеджера приходится примерно по 30 полей. И, конечно, сквозного планирования между этими линейными менеджерами нет, что уж говорить о том, что даже подумать об оптимальном графике здесь нереально, не то, чтобы его сделать. Сама размерность задачи не позволяет её решить оптимально силами нескольких человек.
Вы уже примерно понимаете, что в сельском хозяйстве не всё так просто — ультрамногофакторная сфера со сложнопрогнозируемым исходом, и всё категорически зависит от рынка, погоды и ещё кучи внешних факторов. Это означает не просто неопределённость, а неопределённость в степени n. В этом хаосе что-то сформулировать дико сложно.
![](https://habrastorage.org/webt/a8/te/lk/a8telkhscu1ufgun3tu-slco5do.png)
Работы по операциям
А мы ведь ещё планировали парк техники, помните? Был заранее долгосрочный расчёт по типам: мы видим, что есть перекосы в распределении, делаем балансировку, перекидываем три трактора шестой серии с одного подразделения на другое. У кого-то сокращаем трактор с неполной утилизацией. Дефициты у нас будут везде, но менее острые, без провалов. «Путь коммунизма» несколько в шоке, потому что мы отвязываем технику от подразделений и даём оптимальное распределение вот этими перемещениями. Это не меняя структурный парк, а ведь можно ещё учесть получение новых моделей и аренду уборочной техники и грузовиков (на самом деле рынка аренды техники условно нет, кроме вот этих двух типов).
![](https://habrastorage.org/webt/p-/_d/qq/p-_dqqbfza6obypw5ssmoi-jmcc.png)
Данные о сцепках
Надо учитывать вероятность дождей: в эти дни техника не работает. Надо учитывать реальную доступность техники: что-то сломалось, что-то не успели отремонтировать. Зная реальную доступность, строим нарастающий фронт работ. Строим скользящее оперативное планирование. Прописываем супердетальный уровень заданий: на этом поле в такой-то день такой-то вид операций конкретно вот этими юнитами.
Дальше делаем расписание на один следующий день в ночь перед ним. До нас это решалось по методике «кто громче кричит, тот и получает технику» и больше напоминало панику. Все использовали жадные алгоритмы из головы, не особо думая об изменениях во фронте работ в будущие дни.
![](https://habrastorage.org/webt/-d/9_/tv/-d9_tvadgabqacgtwntlt3lvkxu.png)
Пример технологической карты по гороху
Итог
У нас есть оптимальная модель, что сажать, куда сажать и что с этим всем делать, есть распределение техники, есть меняющийся от обстановки план работ на каждый день. Итог нашего решения — прирост валовой доходности на 10 %. Понятно, что итог будет во многом зависеть от конкретного набора вводных по задаче, парка техники, полей, но я бы сказал, что от 2 до 15 % точно можно отыграть чисто на оптимизации севооборота и лучшей утилизации техники. Ну и получить инструмент для более-менее обоснованного принятия решений, что важно, когда люди спорят между собой. Прогнозы «а что, если так» очень помогают на этапе согласований.
На входе от разных агрохолдингов были разные форматы данных. Мы приводили их для своей модели в следующие справочники:
- Культуры: технологические карты по каждой культуре, где есть перечень операций и агрономические сроки реализации.
- Справочник техники: сколько юнитов.
- Виды операций и допустимые сцепки.
- Данные по полям с агроограничениями, про которые я рассказывал в самом начале.
На самом деле нашей головной болью по мелким ручным операциям была как раз унификация процесса. Переход от интуитивных решений к оцениваемым численно очень нужен, но отсутствие каких-то чётких методологий решений деталей и единых форматов описания для той же техники очень всё сдерживает. В части данных мы добились полноценного процесса, часть ещё не до конца сделана, но в целом решения уже принимаются достаточно оптимизированные. В итоге мы приходим в агрохолдинги с аналитической платформой, которая даёт набор гипотез. Строится цифровой двойник. Если холдинг как раз готов или уже переходит от «тушения пожаров» к управлению через планирование, то обычно интересуются и спрашивают. Дальше, видя прогноз по нескольким полям и сравнивая со своим, верят.
Если вам интересно посмотреть на продукт или вы вдруг хотите рассказать об этом знакомым агрономам — пожалуйста, напишите на мою почту Alexander.Efimov@sas.com.
До начала проектов с сельским хозяйством я знал, что всё не просто в нём, но не представлял, насколько, и сколько там на самом деле может оказаться никакого там data science, а настоящей математики. Теперь могу уверенно сказать: удивительно, что мы туда ещё не дошли с методами анализа данных. Потому что тема большая, очень важная и удивительно хорошо поддающаяся оптимизации.