Цифровая трансформация подобна ремонту: однажды начавшись, не заканчивается уже никогда. Разработчики и дата-сайентисты выискивают по цехам ЕВРАЗа — где бы ещё причинить пользу своими знаниями и умениями? На этот раз им на глаза попалось производство рельсов. И увидели они, что это хорошо, но можно ещё лучше… Конечно, в действительности процесс принятия решений выглядит немного иначе. Однако термоупрочнение рельсов — действительно перспективный объект для цифровизации. Под катом вы сможете прочесть, как строилась математическая модель остывания рельса, а главное — зачем. Если вы металлургический комбинат и производите расплавленную сталь, неизбежно встаёт вопрос: а что с ней делать дальше? Можно, конечно, отливать её в болванки и продавать в таком виде. С другой стороны, можно сразу же, не отходя от кассы, делать из неё готовый продукт. ЕВРАЗ производит много всего полезного — проволоку, например, тавровую балку. Однако технологическая вершина — это, безусловно, стометровый железнодорожный рельс. Производство рельса намного сложнее, чем может показаться неспециалисту. Вначале отливается заготовка. Заготовка остывает и «вылёживается». Затем снова нагревается в специальной печи с шагающими балками — там обеспечивается равномерный нагрев со всех сторон. Нагретый до ковкости рельс отправляется в прокат, где ему и придают характерное «рельсовое» сечение. Затем этап правки: помимо сечения, рельс ещё должен иметь правильную форму «в длину». Дальше самый интересный для нас этап — термоупрочнение. Ну а потом не менее интересные — охлаждение, обрезка, контроль качества. Термоупрочнение — это, говоря по-простому, закалка. Сталь — это не просто смесь железа и углерода, у неё сложное внутреннее устройство. Застывая, она твердеет не просто так, а в виде тех или иных кристаллических структур. Перлит, мартенсит, бейнит…  Разные структуры обладают разными прочностными характеристиками.  Как именно кристаллизуется сталь — очень сильно зависит от скорости охлаждения. Контролируя скорость, можно добиться лучших механических свойств рельса. Здесь две проблемы. Во-первых, температура на поверхности рельса и в его сердцевине — это две разные величины. Мы можем замерить только первую — вторую остаётся угадывать. А чтобы контролировать скорость охлаждения, температуру неплохо бы всё-таки знать. Во-вторых, форма кристаллизации очевидно зависит от скорости охлаждения, но… зависит не очевидно. Трудно так сразу сказать: мол, вот такая кривая температуры приведёт нас к успеху. Здесь потребуется либо ещё одна (или даже не одна) модель — физическая или статистическая. Но это уже тема совсем другой статьи. Как уже говорилось выше, нас очень интересует, какая температура у рельса в глубине. Это логично: кристаллическую структуру мы ведь хотим формировать не на поверхности, а по всей толщине металла. Однако непосредственно эту температуру можно измерить только в лабораторных условиях. Каких-то датчиков, которые смогут её узнать, не мешая процессу производства, в природе (пока) не существует. Но можно схитрить: измерить температуру на поверхности рельса, а по ней попытаться угадать температуру внутри. Собственно, идея не нова: с ней знаком каждый, кто ставил себе градусник под мышку, а не per rectum. Однако если мы хотим управлять кристаллизацией, нужно не просто угадывать — нужно вывести закономерность. А значит — настало время строить математическую модель. В математической физике тотемное животное — конь. Тот, который сферический, и желательно в вакууме. У настоящего коня слишком неудобная форма — моделировать тяжело. У настоящего рельса форма тоже неудобная. Поэтому для моделирования мы взяли его часть — так сказать, спинную вырезку. Считаем, что есть только одна плоская граница между воздухом и металлом, а дальше — сплошной металл. Раз у нас всё однородно, можем решать задачу в пределах одного плоского сечения. А если ещё немного подумать — вообще свести задачу к одномерной, забыть про координату X и рассматривать только то, что происходит по вертикали. На границе с воздухом теплоотдача идёт по закону Ньютона — Рихмана, в толще металла теплообмен описывается уравнением Фурье. Снаружи рельса, в воздухе, теплообмен тоже идёт, но если считать ещё и аэродинамику — это сразу ×10 сложности, так что пусть конь парит в бесконечно теплоёмком воздухе постоянной температуры. Внутри же наш скакун полностью однороден, что также расходится с неудобной реальностью. На практике разные кристаллические структуры имеют разную теплопроводность. Однако мы предполагаем, что в среднем влияние неоднородности металла на процесс будет стремиться к нулю. Если модель будет работать хорошо — значит, предположение было верно. Для численного решения задачи мы всё это дело дискретизируем. Разбиваем прямоугольник на слои, в каждом из которых температуру считаем однородной. А дальше слои обмениваются теплом — опять же, дискретными шагами. В вычислительной математике это называется «метод конечных разностей». Наш сферический конь неплохо сходился с экспериментальными данными. Мы брали начальные условия, прогоняли их через симуляцию и получали что-то очень похожее на конечные условия. Вначале была значительная систематическая ошибка, но её мы устранили чисто вычислительными методами: проверкой инвариантов и граничных условий, интерполяцией и т. п. Впрочем, как можно видеть по графику, решение хорошо, но по-прежнему не идеально. Настоящие проблемы начались, когда мы стали решать обратную задачу: пытаться по конечным условиям восстановить начальные. Выяснилось, что при работе в обратную сторону мат. модель неустойчива к малым возмущениям. Мельчайшая ошибка в конечных условиях в процессе обратной симуляции возрастала экспоненциально.  Мы пробовали различные корректирующие методы, чтобы стабилизировать решение. Лучше всего себя показали различные способы сглаживания. Физически очевидно, что в нашей модели температура рельса будет гладкой функцией от глубины слоя. Стало быть, если алгоритм, решающий обратную задачу, даёт негладкое распределение температур — это ошибка алгоритма, которую следует корректировать. Лучше всего сработало полиномиальное сглаживание 4-й степени. На втором месте — интерполяция сплайном. Почётное третье — фильтр Савицкого — Голея. Сглаживание уменьшило ошибку, но не избавило от неё совсем. К сожалению, даже решение, основанное на полиномиальном сглаживании 4-й степени, идёт вразнос через 300 с небольшим итераций. Стало ясно, что нужен конь более реалистичной формы. Точнее, конь в форме настоящего рельса. Математика выбранного подхода была достаточно проста. Проблема в начальных допущениях. Мы предположили, что можем пренебречь горизонтальным переносом тепла. Вероятно, это слишком грубое предположение. Придётся строить более точную модель рельса. Вначале думали разбить сечение рельса на клеточки — на пиксели, так сказать. Но из-за криволинейной формы рельса такой подход будет давать слишком большие погрешности. Поэтому решили перейти от метода конечных разностей к методу конечных элементов. Вместо того чтобы расчерчивать сечение по сеточке, выберем на нём более-менее равномерное и плотное множество точек, затем решим, какие из них считать соседними. И обсчитывать будем взаимодействия между соседними точками. Математика усложняется, но точность симуляции возрастает. Мы использовали триангуляцию Делоне. Это стандарт для метода конечных элементов, но в целом штука забавная, можно на ней остановиться. Строится она так: для выбранного множества точек рисуется треугольная сетка с вершинами в этих точках. Четыре интересных свойства триангуляции Делоне: Описанные окружности треугольников не содержат вершин сетки. Триангуляция Делоне — единственная с таким свойством (при условии, что никакие четыре точки не лежат на одной окружности). Триангуляция Делоне максимизирует минимальный угол треугольника разбиения. Триангуляция Делоне однозначно соответствует диаграмме Вороного для тех же точек. Диаграмма Вороного получится, если провести срединные перпендикуляры к сторонам всех треугольников. Последнее для метода конечных элементов особенно важно. Почему? Потому что диаграмма Вороного — это разбиение плоскости на области, точки из которых ближе к какой-то одной из отмеченных точек, чем к любой из других. Разделение на сферы влияния, так сказать. Триангуляция Делоне связывает между собой только те точки, у которых граничат сферы влияния. И это правильно с точки зрения вычислительной эффективности: именно такие пары точек будут активнее всего обмениваться теплом. Как можно видеть на графике, модель, основанная на методе конечных элементов, даёт кривую, которая лучше ложится на опытные данные. Среднеквадратичное отклонение уменьшается в полтора раза.  Кроме того, меняется характер распределения ошибки по слоям. Ошибка размазана более равномерно, и её абсолютная величина значительно меньше. Новая модель выглядит перспективной, и прямо сейчас мы работаем над решением обратной задачи с её помощью. Графики решения прямой задачи дают основания для осторожного оптимизма. Вполне вероятно, что в сочетании со вспомогательными методами вроде сглаживания модель окажется достаточно устойчивой для практического применения. Затем, когда обратная задача будет более или менее блестяще решена, мы перейдём к следующему этапу: будем исследовать зависимость итоговой прочности от температурной кривой. Здесь можно либо строить физико-математическую модель, либо скармливать данные нейросетке. Подход с нейросетью значительно проще, однако ML плохо экстраполирует — не получится предсказывать поведение рельса в ситуациях, не похожих на обучающую выборку. Физмат-модель позволяет экстраполировать в границах своей применимости, но её построить куда сложнее.  Модель термоупрочнения рельса — это не только крутая штука сама по себе, но и первый шаг к более глобальной цели. А именно — к созданию научно-исследовательского центра ЕВРАЗ ЗСМК, где планирование экспериментов и развития продуктовых линеек будет происходить в полностью цифровом виде. Когда это произойдёт — читатели Хабра узнают все подробности одними из первых.