Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла

в 7:01, , рубрики: Блог компании Группа НЛМК, дефект, завод, инженерные системы, металл, производство, раскрой, Софт, управление проектами
Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 1

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

Правила игры такие:

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

То есть мы можем обрезать сталь по краям, если дефект попался у кромки, и получить узкий рулон без изъянов. Или вырезать участок с дефектом и получить широкий рулон, но со швами.

Задача — оптимально разложить заказанные рулоны примерно по 3,5 тонны в стендовой партии из рулонов по 9 тонн длиной 4,5-5 километров. Перевалка станины на разную ширину стоит денег, и часто это дороже, чем вернуть 200-300 метров стали назад в переплавку.

То есть задача сводится к тому, чтобы за минимум шагов получить максимум полезного металла. Мы называли это «Каждый сам себе Пикассо», потому что каждый мастер резал в соответствии со своей личной и сугубо субъективной картиной мира. Нам казалось, что до оптимизации там ой, как далеко.

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

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 2

Как происходил процесс исторически

Человек стоит и ВНИМАТЕЛЬНО смотрит на выезжающий из печи рулон. В руках у него бумага, на которой он записывает те дефекты, которые видит. Задача — построить карту дефектов по рулону, чтобы потом можно было выложить её перед мастером-резчиком.

Дефекты бывают вот такие:

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 3
Развод по кромке (несмываемый след термостойкого покрытия), если он недалеко от края, то можно просто уменьшить ширину полосы, а обрезанную с края ленту с дефектами пустить в переплавку. Такой дефект чаще всего повторяется несколько раз на протяжении сотни метров.

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 4
Разовый дефект. Если такой будет доходить до середины, то придётся вырезать кусок металла. Здесь он локализован по краю, то есть можно обойтись и обрезкой с уменьшением ширины листа.

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 5
Разовый дефект: его можно вырезать поперечно или обрезать по краю

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

Получается нечто вот такое:

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 7

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

Мастера смотрят заказ и решают, как расположить нужное на листе.

Дальше режут это в реальном мире.

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

«Давайте попробуем» — немного наивно сказали мы и пошли внедрять математику на производство.

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 8

Задача

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

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 9

Если полоска строго прямая, значит и металл строго прямой. Если полоска с геометрическими искажениями, значит и металл тоже с геометрическими искажениями. Вот как это видно:

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 10
Также каждый дефект фотографируется, примеры таких фото вы видели выше

Первая проблема была с этой самой машиной. Дело в том, что она при фотографировании дефекта пытается понять, что это, на эвристиках, которые поставлялись by design в эпоху 386DX. Шучу, конечно, но нейросетей тогда не было, там довольно простое дерево решений. В итоге машина часто путает дефекты и выдаёт точность около 87%. Этого недостаточно. То есть часть дефектов просто скрывается от машины, а часть ложноположительные, то есть она предлагает резать не очень точно. АСККП могла принять за дефект любую соринку или тень, случайно оказавшуюся на полосе.

Собственно, именно в этом месте были проблемы со внедрением: алгоритм не поможет, если нельзя принять творческое решение во время резки. А оно, увы, было нужно.

Сейчас мы вытаскиваем из машины сырые фотографии, делаем переклассификацию нейросетью и получаем более высокую точность картографирования. Сзади модель на Питоне, железо — пара GPU-серверов. Точность старой модели на агрегате выпрямляющего отжига была 80-87% в зависимости от партии, после наших апдейтов —90-95%.

На 1 рулон около 100 тысяч изображений дефектов, это около 30 минут. Забрать картинки, определить дефект (расположение и классификацию, объединить, нанести на карту) — получается 3 часа на стендовую партию. Это была довольно долгая часть, но к лету мы выкатили релиз, удобный для резчиков.

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

Мы же пошли делать следующий шаг.

Если вы обратите внимание, многие дефекты лежат рядом друг с другом. На карте дефектов их удобнее объединять, чтобы обрабатывать дефекты сразу кластерами. Например, два поперечных дефекта с разницей 10 метров листа — это совершенно точно один большой, а не два разных. Условно, есть некоторые пороги, вроде того, что мы считаем, что 100 метров для самых неприятных поперечных дефектов — предельный разнос для кластеризации и т.п.

После этого мы получаем ту самую карту, и по ней уже решаем оптимизационную задачу:

  • Нужно получить заказ — из стендовой партии сделать готовую к отгрузке электротехническую сталь в рулонах. Есть параметры этих рулонов. Как правило, сначала обрабатывается самый широкий рулон (выбираются все годные для него участки), затем всё более и более узкие.
  • При резке стали перевалка станины (изменение ширины реза) означает затраты. Соответственно, один из оптимизационных параметров — так распределить 6 рулонов стендовой партии по порядку, чтобы можно было максимально долго использовать одну и ту же станину. Наша граница — максимум 4 перевалки станины за стендовую партию. И минимизация перевалки рулонов (это тоже имеет цену).
  • Далее определяется количество швов на рулон: чем их меньше, тем лучше.

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

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 11

Вот так это выглядит в интерфейсе:

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 12

Здесь, как видите, уже понятно, какие куски куда идут и как их распределять:

Когда люди с трудом выиграли соревнование с алгоритмом — оптимальный раскрой листа металла - 13

Сталь приходит шириной 1040 мм, обрезается по краям и получается лист от 1010 до 960 мм.

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

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

А потом мы остановили ту часть ИТ, которая считала раскрой.

Как люди победили машину

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

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

Мастера решили доказать бездушной машине, что она ещё сосунок.

Люди стали реально соревноваться с моделью.

Расходный коэффициент у людей после внедрения резко уменьшился. Они поняли смысл задачи и начали последовательно улучшать свои показатели. Важно понимать, что у людей результаты стали получаться лучше на отдельных рулонах, но не на всей стендовой партии. Когда режется стендовая партия из 6 материнских рулонов, то там очень много комбинаций размеров станин, сварных швов, ширины подрезки по краям — и здесь уже точно быстрее справится только модель. Мы, конечно, были очень удивлены, потому что модель демонстрирует математическое совершенство, а люди на такое в теории не очень-то способны.

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

4 месяца 50% стендовых партий мы резали по алгоритму, 50% — по мастерам. Иногда бывали и «перевесы» в логике 70% на 30% в пользу модели, иногда бывало и наоборот. На партиях с небольшим количеством дефектов с точки зрения расхода металла они шли с машиной примерно на равных, но по скорости модель, безусловно, опережала человека — вычисляла гораздо быстрее человека. А вот там, где приходилось справляться с нестандартными историями, софт показывал себя хуже, так как «Терминатор» не всегда знает о всех внешних факторах. Так люди и стали работать рука об руку с искусственным интеллектом, не вступая в «конфликт», а наоборот используя его как некий автопилот, помощник для повышения эффективности в работе.

Итог — у нас 5 агрегатов резки и, соответственно, 5 старших резчиков — каждый порежет металл по-разному, в зависимости от опыта, уровня компетенций и даже настроения. Но всегда спросит у «старшего брата», имею в виду модель ИИ, правильно ли его решение по порезке стендовой партии и максимально эффективно ли оно. На всех агрегатах увеличился выход 1 сорта трансформаторной стали, снизился износ ножей, и экономия выросла до дополнительных 4,5 килограмма трансформаторной стали на тонну.

Автор: Александр

Источник

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


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