
Комментарии 12
Ну на вскидку... химическая кинетика: а мы точно знаем все константы скорости (энергии активации и предэкспоненты)? судя по приведенному сниппету кода ("if stage == 'oxidation':") вы задались кинетикой нулевого порядка. Макрокинетика и тепломассообмен: у вас нольмерная, одномерная, двумерная постановка? О трехмерной постановке в задаче такого уровня можно только мечтать... Теплоотдача на стенки учтена? Диффузия и конвекция, теплопроводность и вязкость? Случайные изменения электропроводности и стохастика как отражены? Хотелось бы подробнее про модель Спрашиваю из личного любопытства, как физик работающий в близкой области)
Да, сниппет в статье намеренно упрощен для читабельности (никто не хочет видеть систему диффуров в середине лонгрида). В реальности там не чистый нулевой порядок. Скорость окисления завязана на доступность кислорода и текущую температуру, но да - это феноменологическая модель, а не фундаментальная кинетика с расчетом всех констант Аррениуса. Цель была - создать физически правдоподобный тренд для обучения ML-моделей, а не рассчитать плавку до микрона. Постановка нульмерная. Для генерации временных рядов этого достаточно. Теплоотдача на стенки учтена через балансовый метод и коэффициент теплопередачи, который «деградирует» по мере износа футеровки. Это как раз одна из ключевых фишек датасета для обучения моделей прогнозирования ресурса. Случайные изменения электропроводности и шумы в токах реализованы через наложение розового шума и введение событийных аномалий (обрывы дуги, обвалы шихты).
Картинки с матом режут глаз
Классный специфический сет, такое встретишь нечасто. Жаль что не видно "кучи грязной логики" и самого кода генерации датасета, а то мог бы добавить горсть своих правил с трех заводов. Получился бы, наверно, хороший симулятор. А кинетику, диффузию итд - все это можно прикрутить потом, причем опционально, в стиле df.col.apply(add_weather_factor)
Чуйка говорит что в датасет к 72-м полям можно добавить еще как минимум с пару десятков, включая вторую химию, погоду, условные ФИО сталеваров, высокоуровневую экономику (курс USD, цеховую себестоимость, цены с LME итд), ну чтобы сблизить позиции ИТР и аналитиков, а также получить оценку "любого чиха" в деньгах.
Я пока причесываю код, чтобы его не стыдно было выложить в опенсорс (там сейчас столько "костылей" и магии, что даже мне иногда страшно). Но идея с df.col.apply(add_weather_factor) - тот путь, по которому я иду: модульность прежде всего.
Про "пару десятков полей" и экономику.
LME и Себестоимость: Это был бы киллер-фича. Если прикрутить стоимость электроэнергии по часовым тарифам и цену электродов, то ML-модель будет оптимизировать не абстрактный КПД, а реальную маржу с тонны. Это сразу переводит диалог из плоскости "инженерной забавы" в плоскость "бизнес-кейса".
ФИО и Человеческий фактор: В текущем сете это скрыто за crew_experience и shift, но добавить конкретные профили "бригад-профи" и "бригад-прогульщиков" - да, хорошая мысль для обучения моделей HR-аналитики на производстве.
А как вы определили насколько сильно crew_experience (опыт бригады) влияет на время плавки (tap_to_tap_time) или насколько эффективнее 1 смена?
Про смены: Я заложил в модель коэффициент циркадных ритмов. В металлургии (как и везде, где есть 12-часовые смены) эффективность 3-й смены (ночной) статистически на 3-7% ниже не из-за того, что люди плохие, а из-за биологии. В модели это реализовано через множитель к arc_stability (стабильность дуги). 1-я смена — это "золотой стандарт" после утренней планерки и кофе.
Про опыт и Tap-to-Tap: Тут я использовал кривую обучения. Опыт в датасете - это не просто стаж, а способность бригады держать процесс в "сладкой зоне". Низкий опыт (<0.4): Бригада чаще допускает перегрев ванны (лишние минуты на охлаждение) или перевдув кислорода. Высокий опыт (>0.8): Они попадают в нужную температуру и химию с первого раза. У них минимальное количество подварок и додувок.
На своём примере, при анализе неисправностей за 6 мес по скада логам, в среднем аварийность/простои возрастали в ночное время начиная с 18:00 ( после ухода начальства) и в выходные дни ( без начальства). Пики: 18:00-22:00, 00:00 - 03:00.
Наглядно интерпретировалось на линейной диаграмме.
Интересные наблюдения
Это тот самый Heavy Digital, который мы заслужили
Как название аниме прям
Я устал выпрашивать логи у завода, поэтому написал свой симулятор сталеплавильной печи