Откуда завод знает, что производить и когда

в 7:01, , рубрики: Анализ и проектирование систем, Блог компании Группа НЛМК, графикование, завод, календарный план, металлургия, Промышленное программирование, техкарта, управление проектами
image
Это слябы. Они смотрят на вас с одобрением

Привет с металлургического завода! У нас устроено так: все работают по плану, и на каждом уровне — свой вид планирования. На уровне завода это календарное планирование, а в цехе — графикование.

Календарный план — это то, что завод обещал кому-то отгрузить, и он в логике планирования просто появляется из ниоткуда и запускает своим появлением все остальные процессы.

Для примера рассмотрим случай условного завода по производству кранов в Иванове, которым нужен листовой прокат разных сортаментов. Предположим, что и тем и другим он нужен 20 января. Это дата отгрузки, то есть прибытия на выход из производства поезда, который заберёт пару вагонов металла.

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

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

Чтобы 20 января прокат успешно уехал в Иваново, условно 19-го его надо оцинковать и нанести полимерное покрытие. То есть к 19 января у нас на складе должны быть зарезервированы вспомогательные материалы для этих операций, и их нужно заранее заказать и привезти. Чтобы было что цинковать, прокат нужно раскатать и порезать заранее, а чтобы было из чего раскатывать — предварительно выплавить слябы. Для всего этого и сопутствующих операций нужны мощности нескольких цехов: как минимум горячего проката, конверторного производства, холодного проката и покрытия.

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

План сверху вниз и снизу вверх

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

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

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

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

Соответственно, при постановке заказа в календарный план проверяется, получится ли к моменту, когда заказ пойдёт по этапам производства, получить все нужные критичные материалы. График доступности — это когда материал точно будет. Например, он уже либо едет в поставке, либо лежит на складе, либо будет нами произведён к такому-то числу. То есть проверяется наличие производственных мощностей и материалов.

image

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

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

Что-то можно не закупить в нужные сроки из-за особенностей поставок, какие-то заказы могут просто не исполниться рядом с другими, поскольку нужные узлы производства будут загружены полностью.

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

Затем в горизонте трёх-четырёх дней подключается графикование, которое определяет расписание на завтрашнюю смену.

image

Зачем всё это нужно, когда можно просто производить по принципу FIFO?

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

  • Выплавить сляб нужного сортамента не позже такого-то числа.
  • Прокатать не позже такого-то.
  • Иметь на складе расходник такой-то не позже такого-то числа и так далее.

Без такого понимания сроки завалятся.

image

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

Например, если вдруг случился ремонт и что-то из серии не будет выполнено, то календарка заново всё пересчитает, учтёт ремонт и перепланирует даты по заказам. Эти даты попадают к службе продаж. Служба продаж в случае необходимости сообщает их потребителю.

Поскольку на текущий момент каждый заказ при попадании в календарь виртуально проверяется по каждому узлу по всему маршруту производства на исполнимость, то появляется возможность чётко обещать сроки. Чёткие сроки — это очень большое облегчение для логистики (мы заказываем поезда у РЖД), и это повышает клиентский сервис (как следствие мы можем брать больше заказов).

image
Отсюда мы отправляем нашу сталь клиентам

Как это делается на практике?

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

В таблице ниже в левой колонке — как оно было до КПиГ. В правой колонке — то, к чему мы стремились и достигли, написав свой софт. Но не останавливаемся, всё время его совершенствуя.

Было до КПиГ

Стало с КПиГ

Желаемая дата исполнения заказа запрашивается у ограниченного числа клиентов

У каждого клиента для каждого заказа запрашивается желаемая дата исполнения заказа

На заказ в большинстве случаев назначается месяц производства

Дата исполнения назначается на каждую позицию заказа. Окно обещания равно календарной неделе

Планирование загрузки мощностей не принимает во внимание фактически размещённых заказов

Дата исполнения назначается, основываясь на текущей загрузке мощностей с учётом размещённых заказов и зарезервированных мощностей

Производственное планирование основывается на месячных объёмах

Позаказное планирование производства. Источник данных для календарного планирования — портфель заказов, а не объёмный план

Отсутствует однозначно определённый необходимый уровень сервиса для клиентов

Необходимый уровень сервиса определён для различных сегментов клиентов/продуктов, планирование направлено на его обеспечение

В подавляющем большинстве случаев использовалась стратегия «Производство-под-заказ»

Различные продуктовые стратегии (MTS/FTO/MTO) используются для обеспечения необходимого уровня сервиса клиентам

Сложности, с которыми мы встретились, когда писали софт

Самое ядро математической модели известно достаточно давно и достаточно универсально.

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

Сложность была в том, чтобы описать каждый передел на производстве и каждый узел, то есть создать движок, реализующий фактическую виртуальную копию производства. Это, конечно, не полный симулятор производства, но по сложности нечто близкое.

Ну а самое сложное состояло в описании каждой части процесса. Наиболее важная составляющая — это нормативно-справочная документация, в которой рассказывается, что делает каждый узел, из чего и при каких условиях, а также приводятся рецепты изготовления разной продукции. А вариантов видов продукции у нас несколько тысяч, и при этом она может изготавливаться несколькими разными путями.

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

Мы взяли всю документацию в бумаге, переосмыслили подход к её элементам, переработали маршрутные техкарты с учётом задач планирования, а затем создали из них набор связанных таблиц в системе, которые ежедневно актуализируем. Пока вы читали это предложение, прошла примерно пара лет, потому что производство очень большое и достаточно сложное, и не ко всему была бумажная документация в идеальном для нас виде.

Плюс много сил заняло приведение всего информационного обмена к понятному общему виду.

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

Но мы-таки всё это сделали.

Из чего состоит система КПиГ?

  • Из верхнеуровневого календарного планирования.
  • Маршрутизатора (проверки исполнимости заказа через виртуальный прогон на каждый передел и склад с учётом других уже размещённых заказов).
  • Графикователя (постановщика задач в коротком горизонте планирования).
  • Комбинатора заказов (оптимизатора и кластеризатора).

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

Что получилось

Цепочка поставок обычно состоит примерно из 20 переделов, это прогнозирование на 45–50 дней от выплавки сляба до готовой продукции. Когда вы сплетаете тысячи таких цепочек — человек в принципе на таком уровне планировать не может.

image

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

image

Это, в свою очередь, повлияло на закупки, продажи и логистику, что также дало оптимизацию производства.

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

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

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

В общем, там море отдельных интересных задач, каждая из которых, оптимизированная даже на 2-3 %, стоит десятки миллионов рублей в год. И все они ждут, когда их решения заменят на скрипт. И мы к этому идём.

Автор: Андрей Болотов

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js