Почему Industry 4.0 - это миф(пока что)

Давайте честно. Все эти конференции про "Цифровые Двойники" и "AI на производстве" - это красиво только на слайдах в PowerPoint.

В реальности, когда ты приходишь к главному технологу и просишь данные для обучения модели (например, чтобы предсказывать прогар футеровки), происходит одно из двух:

  1. Тебе дают Excel-файл за 2013 год, где половина ячеек - это нули, а вторая половина заполнена рукой дяди Васи: "Тут датчик сдох, записал на глаз".

  2. Тебя посылают в отдел безопасности согласовывать доступ к SCADA. Вернешься ты оттуда примерно через полгода, седой и с подписанным NDA на продажу почки.

Я прошел через это трижды. В четвертый раз я психанул.

"Если вы не можете дать мне нормальные данные, я их, блин, нарисую", - решил я. Но не random.rand(), от которого любую нейронку стошнит, а по хардкору: с физикой, химией и человеческим фактором.

Так родился проект EAF Simulator (Electric Arc Furnace). И вот как я потратил кучу вечеров, чтобы сгенерировать датасет, на котором реально можно учить модели.

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

Мне нужно было собрать Франкенштейна, который учитывает:

  • Электрику: Токи, импедансы, гармоники (привет, flicker).

  • Химию: Как меняется состав стали (C, Si, Mn, P, S) по ходу плавки.

  • Механику: Вибрации электродов, давление газов.

  • Людей: Да, Бригада №3 в ночную смену работает хуже, чем Бригада №1 утром после кофе.

В итоге я сделал два датасета.

  1. MVP на 15к строк - чтобы проверить, не сошел ли я с ума.

  2. Premium на 75к строк - монстр на 9.5 месяцев виртуального времени с учетом сезонности и четырех разных типов печей.

Чтобы данные не выглядели как синтетический рафинад, пришлось написать кучу "грязной" логики.

1. Физика процесса (Charging -> Melting -> Tapping)

Печь работает циклично. Нельзя просто выливать сталь вечно. Мы расписали процесс по стадиям.

  • Charging: Крышка открыта, температура падает, шум адский.

  • Melting: Дуги горят, токи скачут, потребление энергии — как у небольшого города.

  • Oxidation: Дуем кислород, выжигаем углерод, температура растет экзотермически.

Вот кусочек логики для химии (упрощенно), чтобы вы понимали уровень заморочки:

# Если идет продувка кислородом
if stage == 'oxidation':
    # Углерод падает экспоненциально, но зависит от температуры
    carbon_drop = base_rate * (bath_temp / 1600) * delta_time
    current_carbon -= carbon_drop
    
    # Реакция экзотермическая -> температура растет
    bath_temp += carbon_drop * EXOTHERMIC_COEF

Если этого не сделать, ML-модель мгновенно спалит фальшивку: "Эй, почему carbon падает, а температура не меняется?".

2. Человеческий фактор и "Злые понедельники"

Оборудование не существует в вакууме.

  • Смены: Я ввел параметр crew_experience (опыт бригады). Опытные сталевары держат дугу стабильнее. Новички тупят, из-за чего растет время плавки (tap_to_tap_time).

  • Циркадные ритмы: Ночью (смена 3) эффективность падает. Потому что люди хотят спать, а не следить за шлаком.

  • Выходные: В выходные вероятность мелких аварий чуть выше (ну вы понимаете).

3. Сезонность

В датасете 75 000 строк, охватывающих период с июня по март.

  • Зимой: Температура охлаждающей воды на входе (cooling_water_temp_in) падает до +4°C. Теплопотери через стенки растут. Энергопотребление подскакивает.

  • Летом: Вода теплая, охлаждение хуже, риск перегрева футеровки выше.

Если ваша модель не ловит сезонность — она бесполезна в реальном цехе.

Аномалии: Самый сок

Нормальные данные - это скучно. Любой дурак обучит регрессию на линейном процессе. Ценность датасета - в авариях. На заводе вам никогда не дадут логи за момент взрыва печи (потому что их изъяла прокуратура или стер админ от греха подальше).

Я внедрил около 2% аномалий (флаг is_anomaly), но не рандомно, а через причинно-следственные связи:

  1. Electrode Break (Обрыв электрода):

    • Сначала растет вибрация.

    • Потом резкий скачок импеданса.

    • Ток на одной фазе падает в ноль.

    • Симметрия токов идет лесом.

  2. Water Leak (Протечка воды):

    • Давление в печи скачет.

    • Растет содержание водорода (h2_content) в отходящих газах (вода разлагается).

    • Температура ванны падает неадекватно.

Теперь можно учить модель предсказывать аварию за 5 минут до того, как виртуальный цех взлетит на воздух.

Что в итоге получилось?

Я выгрузил это все в CSV. Получился файл на 28 МБ (eaf_premium_75k.csv), который пахнет мазутом и озоном.

Структура (72 колонки):

  • timestamp: Шаг 5 минут.

  • furnace_id: 4 типа печей (от малышки на 70MW до гиганта 150MW).

  • efficiency_percent: Наша целевая переменная (Y).

  • Куча сенсоров: active_power, arc_voltage, slag_viscosity, refractory_wear...

Пример того, что можно вытащить из данных за 5 минут

Допустим, мы хотим доказать начальству, что ночная смена косячит.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Грузим наш многострадальный датасет
df = pd.read_csv('eaf_premium_75k.csv', sep=';')

# Давайте посмотрим, как опыт бригады влияет на эффективность
plt.figure(figsize=(12, 6))
sns.boxplot(data=df, x='shift', y='efficiency_percent', hue='is_weekend')
plt.title('Эффективность по сменам: Ночью все печально, особенно в выходные')
plt.show()

# А ��еперь глянем на "здоровье" печей.
# Корреляция между износом стен и температурой кожуха
sns.scatterplot(
    data=df[df['process_stage']=='melting'], 
    x='wall_refractory_thickness_mm', 
    y='heat_loss_through_walls_mw',
    alpha=0.1
)

Вы увидите четкий тренд: чем тоньше стена (износ), тем выше теплопотери. Это физика, детка. Модель это выучит и сможет орать алерты: "Стена тонкая, сейчас прогорит, стопай машину!".

Зачем вам это?

Если вы учитесь на Data Scientist'а, вам наверняка надоели датасеты про Титаник и Ирисы. Если вы работаете в промышленности, вам надоело ждать данные от заказчика.

Этот датасет решает проблему "холодного старта".

  1. Benchmarking: Протестируйте свои алгоритмы поиска аномалий (Isolation Forest, Autoencoders).

  2. Dashboarding: Сделайте красивую Grafana, покажите заказчику, как это может выглядеть.

  3. Predictive Maintenance: Попробуйте предсказать refractory_life (остаточный ресурс футеровки).

Эпилог

Я потратил на генератор пару недель жизни, перечитав учебники по металлургии(благо не полностью), которые нормальные люди используют только как подставку для монитора.

Но теперь у меня есть данные, которые ведут себя как капризная, старая, но живая электропечь. Без NDA, без СМС и регистрации.

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

ССЫЛОЧКА: https://github.com/ac1esan/EAF-on-Metallurgy