Нейросети умеют не только писать водянистые тексты и создавать картинки людей с тремя руками, но и решать реальные промышленные задачи.
Привет, Хабр! Меня зовут Андрей Никитин, я руководитель направления искусственного интеллекта в IBS. В этой статье расскажу, как мы внедрили ИИ на производстве минеральных удобрений крупного химического холдинга. Поделюсь, зачем на производстве нужно машинное обучение и почему нашей команде пришлось погрузиться в изучение технологии производства удобрений.

«Нужно больше зол... удобрений!»: с чем пришел заказчик
Одна из крупнейших российских химических компаний обратилась к нам с задачей — разработать рекомендательную систему для цеха по производству минеральных удобрений. Система должна давать рекомендации по изменениям технологического режима, которые повысят выработку готовой продукции.
Из-за подорожания газа в Европе выросла стоимость производства удобрений, поэтому их стало выгодно заказывать в России. Заказов стало больше, и возникла необходимость в увеличении выработки на производстве.
Заказчик видел решение задачи в уменьшении времени простоев, но также ожидал от нас дополнительных рекомендаций по оптимизации производства.
Как устроен процесс производства минеральных удобрений
Для контекста и понимания задачи расскажу в общих чертах, как устроен процесс производства минеральных удобрений.
Минеральные удобрения — это химические вещества, которые содержат питательные элементы для растений. Вы могли встречать такие названия минеральных удобрений, как NPK или NK, которые обозначают сочетание основных компонентов: N — это азот, P — фосфор, K — калий.
«Ингредиенты», из которых состоит удобрение, получают из разного сырья. Азот поступает из газообразного аммиака и раствора аммиачной селитры. Фосфор — из жидкой фосфорной кислоты. А калий — из хлорида калия, который поступает в технологический процесс в виде порошка. Все это нужно смешать до состояния однородной массы определенного химического состава.
Кроме этого используют дополнительные компоненты, такие как серная кислота, магнезитовый порошок, индустриальное масло, антислеживающие добавки в виде паст или гранул. В технологический процесс также возвращаются отходящие газы и пылегазовые смеси, которые поглощаются абсорбционной жидкостью — смесь воды, парового конденсата, химических стоков, в которую при необходимости добавляется фосфорная или серная кислота.
Компоненты смешивают в несколько стадий в баках-нейтрализаторах. В результате получается жидкая масса — пульпа, которая по своему химическому составу близка к готовому удобрению.
Пульпа из последнего нейтрализатора подается по трубопроводу в барабанный гранулятор-сушилку.
Барабанный гранулятор-сушилка, или БГС, — это огромный барабан, в котором удобрение из жидкой массы превращается в шарики небольшого размера. В таком виде его намного проще хранить, транспортировать и использовать.

Барабан постоянно вращается, в результате чего жидкая масса скатывается в маленькие шарики. Процесс похож на то, как катают снежные шары для снеговика. Гранулы сушатся в БГС топочными газами, получаемыми в результате сжигания природного газа в топке.
Из барабана удобрение попадает в систему классификаторов и дробилок, где его разделяют на фракции разного размера и развозят на склады готовой продукции.

Один такой барабан производит 40-60 тонн удобрений в час, то есть около 1000-1400 тонн в день, или 30-40 тысяч тонн в месяц.
Человек в производственной цепочке и зачем ему искусственный интеллект
Всем процессом производства удобрений управляет оператор. Он сидит перед множеством экранов с разными данными: расходом компонентов, температурой, кислотностью и другими.
В зависимости от разных показателей оператор меняет режимы работы, чтобы соблюсти целевые значения по качеству и количеству готовой продукции. Он может изменить расход используемых компонентов, температуру процесса приготовления пульпы или сушки гранул в БГС и другие условия. Оператор вносит изменения, в первую очередь основываясь на своем опыте.
Идея заказчика состояла в том, что, изменяя режимы работы, можно добиться увеличения выработки удобрений и снизить количество простоев.
Человек не в состоянии обрабатывать огромное количество данных, которые ежесекундно поступают с датчиков системы. В этом ему должен помочь искусственный интеллект.
Наша задача состояла в том, чтобы разработать рекомендательную систему для оптимального режима работы, которая будет просчитывать сложные зависимости, анализировать меняющиеся данные, условия работы и прогнозировать результаты. На основе этих данных система будет давать рекомендации, которые работают на целевой результат — увеличение выработки.
Сбор данных для обучения модели
Работу начали со сбора данных для обучения модели. Необходимо было собрать и обработать очень большой объем данных из разных источников и в разных форматах.
Показания расходов сырья, датчиков температуры, давления и других параметров технологического процесса на производстве, как правило, автоматически сохраняются в АСОДУ — автоматизированной системе оперативно-диспетчерского управления. Эти данные выгрузили для анализа за период около двух лет в виде нескольких Excel-файлов с дискретностью в 10 секунд, это несколько миллионов записей.
Данные лабораторных анализов сырья и готовой продукции лаборанты заносили в бумажные журналы, а затем — в таблицы Excel. Формат этих таблиц был довольно специфичный, на нескольких вкладках, с объединенными ячейками и разным форматированием значений. Такие таблицы удобно читать специалисту с производства, но нельзя напрямую использовать как данные для машинного обучения, поэтому их пришлось предварительно парсить и приводить к единому формату.
Данные об остановках производственных линий тоже заносили в бумажные журналы остановок, а потом вручную переносили в таблицы. Из этих данных приходилось отбирать релевантные причины остановок, которые относились к анализируемому участку технологического процесса.
В конечном итоге все полученные данные собрали в одну таблицу и привели к единой дискретности.
Сейчас все полетит! Первая версия оптимизатора
Данные подтвердили гипотезу заказчика: при разных режимах работы менялась выработка. За один и тот же период, допустим, за 10 дней, в разное время производили то 10 тысяч тонн, то 15. Производительность сильно различалась.
Мы предположили, что для повышения производительности цеха можно использовать данные, полученные в периоды стабильной работы, когда параметры процесса находились в пределах нормы. Если из этих данных исключить выбросы и отобрать случаи с наибольшей выработкой, например, выше 90-го перцентиля, то расходы компонентов в таких режимах (с учетом конкретной марки продукции) могут быть рекомендованы как ориентир для оптимизации.
Для определения оптимального режима работы (по количеству расходных компонентов и условиям производства) мы разработали оптимизационный алгоритм с использованием нескольких библиотек, таких как scipy, hyperopt, optuna, который максимизировал выработку продукции. Загрузили в «оптимизатор» все данные. Модель считала и предсказывала повышенную выработку, и программа-советчик выдавала рекомендации по режиму работы в зависимости от заявленных целей и текущего состояния производства.
Когда мы посчитали первые рекомендации, у нас получилось, что прирост производства составит от 5 до 10 процентов в зависимости от марки. Это было очень много!
«Ты втираешь мне какую-то дичь!»: реакция технологов на наши рекомендации
С первой версией оптимизатора мы пошли к заказчику. Презентовали результаты модели и наши рекомендации. Показали фактические результаты и производительность, которую предсказывала модель при рекомендованном режиме работы. То есть, говорили мы, если бы вы вот здесь подавали столько, здесь столько и столько, то на выходе было бы столько — выпуск был бы больше.
С небес на землю нас опустили технологи. Они посмотрели результаты и сказали, что наши рекомендации неадекватны, а в некоторых случаях и вовсе невыполнимы.
Замечаний было несколько. Вот основные.
Не попали в марку
Главное замечание — мы не попадаем в марку удобрения. Технологи сказали, что, если напрямую следовать нашим рекомендациям, на выходе будет получаться продукт не того качества, которое нужно.
Вот что это значит.
Подбор соотношений подаваемых на смешивание компонентов зависит от марки, которую выпускают. Каждая марка должна содержать не только основные питательные элементы — азот, фосфор и калий в определенных количествах, но и дополнительные элементы, содержание которых также регламентировано для каждой марки.
Марка обозначается, например, так — 17:17:17, это процент основных компонентов. Такая марка показывает, что в удобрении одинаковое количество азота, фосфора и калия, по 17% каждого.
Иногда могут быть не три компонента, а два — NK-марки, без P. Например, 17:28. В ней 17% азота и 28% калия, а фосфор отсутствует.
Марка удобрения — очень важный показатель. Разные марки производятся для разных видов почв, в зависимости от их состава, кислотности и прочих параметров.
Соотношение в марке удобрения не означает, что азота, например, должно быть ровно 17%. Его может быть от 16,5% до 17,5%. При производстве никто не пытается попасть строго в указанные в марке проценты содержания компонентов, потому что велик риск упасть ниже и получить некондиционный продукт. Как правило, при настройке режима работы целятся в значение 17,3% с небольшим запасом.
Мы же про ограничения, накладываемые процентными соотношениями компонентов в марках, имели довольно приблизительное представление. Поэтому рекомендации оптимизатора в основном следовали логике «клади больше — получишь больше» и уходили выше целевых значений марки, что означало перерасход основных компонентов и повышение себестоимости удобрения.
Изменение кислотности
Другое серьезное замечание от технологов — мы своими рекомендациями изменяем кислотность пульпы и, следовательно, готового удобрения.
Контроль кислотности, уровня pH, очень важен при производстве удобрений. Кислотность влияет на качество конечного продукта, а также срок службы оборудования и даже безопасность процесса.
Уровень кислотности регулируют в баках нейтрализации. В них подаются кислота и щелочь в определенных пропорциях. Реакцию контролируют датчики pH.
Чтобы рассчитать кислотность раствора, когда у нас соединено много разных компонентов с разными показателями кислотности, нужно учитывать кислотно-основные равновесия всех входящих компонентов и знать точные значения расходов, концентраций и температуры для каждого из них. На практике это очень сложно.
Некорректный расход компонентов
Некоторые наши рекомендации по подаче компонентов было невозможно выполнить чисто физически. То есть по трубам не могло пойти столько компонентов, сколько мы рекомендовали. Это происходило из-за изменения вязкости пульпы при повышении расходов компонентов.
Изменение влажности пульпы
В процессе производства есть параметры, которые вообще нельзя трогать. Например, мы предлагали регулировать влажность пульпы перед ее попаданием в барабан.
Оказалось, что если пересушить массу, как мы предлагали, чтобы снизить ее налипание на барабан и уменьшить количество остановок на чистку, то масса будет крошиться и плохо скатываться.
Такие ошибки в рекомендациях получились из-за недостаточного знакомства с процессом производства и его спецификой. То есть мы видели повышение выработки, но не учитывали все нюансы технологического процесса, которые не позволяют достичь такого результата на практике. Соответственно, без учета ограничений производства и тонкостей процесса модель и оптимизатор выдавали некорректные значения и рекомендации.
Надо было исправляться.
Оптимизатор 2.0: учимся на своих ошибках
Для доработки оптимизатора пришлось глубже погружаться в процесс производства. Общались с технологами, выясняли, что конкретно не учли, какие важные специфики и нюансы.
Очень большую пользу принес сотрудник отдела операционной эффективности цеха. Увеличение эффективности производства прописано у него в KPI, поэтому он был реально заинтересован в успехе проекта. До этой должности он работал технологом в цехе, поэтому досконально знал все нюансы процесса. Это нам очень помогло.
Для большего погружения мы даже выезжали на завод, изучали процесс на практике. На месте нам рассказали и показали, как производятся удобрения.
Еще мы привлекли к проекту сотрудников с химическим бэкграундом. Пришлось и самому вспоминать химию, чтобы максимально разобраться в процессе. К концу проекта я стал своего рода экспертом в производстве минеральных удобрений.
Изучив досконально весь процесс, нюансы и ограничения, мы пошли переделывать наш оптимизатор.
Одним из препятствий на пути к повышению выработки при соблюдении качества продукции оказались большие промежутки времени между лабораторными анализами сырья и готовой продукции. Поэтому было решено разработать виртуальные анализаторы для наиболее важных показателей. На первом месте — содержание азота, фосфора и калия в готовой продукции.
Теперь при расчете рекомендуемых значений расходов компонентов оптимизатор ориентируется на значения, рассчитанные виртуальными анализаторами, а не на редкие лабораторные анализы.
Кроме того, в системе были учтены ограничения технологического процесса, которые не позволяют оптимизатору давать «заоблачные» рекомендации. Одно из таких ограничений — использование основного компонента в зависимости от выпускаемой марки. Именно с задания его значения начинается оптимизация соотношений расходов остальных компонентов, что позволяет управлять величиной выработки, сохраняя при этом качество готового удобрения.
С точки зрения интерфейса системы учли пожелания цеха, отдела оперэффективности и руководства проекта — добавили дашборды для анализа качества работы Советчика, отслеживания деградации моделей, следования операторами рекомендациям с возможностью детализации по отдельным маркам и сменам.
Также добавили всплывающее окно, появляющееся на дашборде оператора, если он не следует рекомендациям Советчика. Это окно позволяет получить обратную связь от оператора и в дальнейшем проанализировать, почему в тот или иной момент нельзя было следовать рекомендациям: были ли рекомендации невыполнимыми, или это произошло в силу объективных внешних причин, например отсутствия сырья или какой-либо неисправности оборудования.
Во второй версии оптимизатора у технологов уже не возникло замечаний к работе системы. Новая версия Советчика учитывала результаты виртуальных анализаторов и технологические ограничения и выдавала прогнозы, максимально близкие к реальности.
Можно было переходить к проверке «на бою».
Опытно-промышленная эксплуатация
В такой отрасли, как производство минеральных удобрений, проверку гипотез проводят сразу в боевом режиме.
В силу специфики и объемов производства невозможно произвести в лабораторных условиях два-три килограмма продукции, проверить гипотезу и изменить вводные. Так как производство идет в масштабах нескольких сот тонн в день, то и для проверки гипотез нужно производить тоннами. Для этого линию производства запускают в опытно-промышленную эксплуатацию и проводят балансовые испытания.
Балансовые испытания — это сравнение плановой выработки с выработкой на основе рекомендаций. Их за время опытно-промышленной эксплуатации проводили три раза.
Другая особенность производства состоит в том, что нет возможности посчитать фактическую производительность в процессе работы линии. В эти моменты выработка считается по формулам, а фактический вес проверяется уже в процессе погрузки удобрений в вагоны.
Чтобы понять, что цех действительно произвел больше плановой выработки, надо отработать некоторое количество дней, в течение которых строго следовать рекомендациям Советчика. Если оптимизатор ошибется в рекомендациях, то вся партия пойдет насмарку.
Для проверки работы оптимизатора брали конкретную марку и выбирали момент, когда склады пустые, чтобы можно было получить точные данные по финальной выработке. Весь период следовали советам оптимизатора. Опытно-промышленная эксплуатация длилась около двух недель.
После завершения тестового периода мы проверили фактическую выработку, сравнили ее с рассчитанной Советчиком и выяснили, что оптимизатор работает как планировалось. Удобрений произвели больше, чем вырабатывали обычно, без программы-советчика.
Более того, подсчеты показали, что стоимость удобрений, которые произвели сверх плановой выработки на тестовом периоде, превышает стоимость всего проекта. То есть уже на этапе опытно-промышленной эксплуатации проект полностью окупился.
Это была победа!
Как теперь все работает
Сам процесс производства удобрений не изменился, но изменилась работа оператора.
Система-советчик развернута в контуре заказчика. Модели оптимизатора и виртуальных анализаторов, написанные на Питоне, размещены и запускаются на платформе DataML при помощи MLflow — инструмента для управления жизненным циклом машинного обучения. Данные со всех необходимых датчиков технологических линий, а также результаты лабораторных анализов автоматически поступают в DataML через Промплатформу. В зависимости от условий система-советчик формирует рекомендации по режиму работы, которые выводятся на дашборды у оператора и начальника цеха.
Оператор на основании рекомендаций Советчика корректирует режим работы линии путем изменения расходов компонентов. Качество получаемых удобрений показывают виртуальные анализаторы в режиме реального времени.
Физически лаб. анализы отбираются каждые четыре часа, а результаты поступают оператору еще через час-два. Теперь прогнозы по качеству готовой продукции рассчитывает искусственный интеллект на основе машинного обучения. Можно сразу спрогнозировать качество удобрений после изменения режима работы, а не через шесть часов.
Дополнительные дашборды позволяют провести ретроспективный анализ работы Советчика, качество моделей виртуальных анализаторов, посмотреть, насколько точно операторы следуют рекомендациям, и понять причины, по которым в какие-то моменты следовать рекомендациям не удавалось.
Итоги, планы и заключение
Итоговый эффект получился скромнее, чем те 10% увеличения выработки, которые мы спрогнозировали с первой версией оптимизатора.
После внедрения оптимизатора выработка увеличилась в зависимости от марки на 1-4%. Экономический эффект за первый год использования составил около 266 миллионов рублей в год. Сам проект полностью окупился уже на этапе опытно-промышленной эксплуатации.
Сейчас мы работаем над следующей версией оптимизатора. В планах добавление виртуальных анализаторов мольного отношения в баках, учет гранулометрического состава удобрений, использование обратной связи от оператора, введенной через дашборд, в фильтрации данных для моделирования. Напишите в комментариях, если статья понравилась и нам стоит написать вторую серию.
В заключение мне кажется важным подчеркнуть, что сейчас в промышленных отраслях не стоит задача заменить людей на искусственный интеллект. Нейросети и машинное обучение — это инструменты, а не исполнитель. Их задача — помогать людям выполнять задачи максимально эффективно. Что мы и делаем.