Как предсказать решения технолога, не имея самого макета?
ML-система для подготовки технологических карт флексопечати. По данным заказа из 1С предсказывает расстановку красок на восьмицветной машине, анилоксы, монтажные ленты и необходимость ракельных камер.
Цель
Автоматизировать подготовку технологических карт, сократить ручную работу технологов и снизить риск ошибок в параметрах печати.
Исторические данные для supervised learning были в 1С: фактические расстановки красок, настройки оборудования и другие решения технологов. Но у этого датасета было серьёзное ограничение. Модель не видела сам макет, геометрию плашек, распределение красочного слоя и полный план производства — существенную часть информации, на которую опирался человек.
Фактически требовалось аппроксимировать историческую политику принятия решений по неполному контексту заказа.
Архитектура и эксперименты
Я разделил подготовку техкарты на несколько ML-задач: назначение станций для Spot-красок, подбор анилоксов и монтажных лент, определение необходимости ракельных камер.
Расстановка красок — не обычная независимая классификация. Для одного заказа нужно получить согласованную конфигурацию всей машины: нельзя назначить двум краскам одну физическую секцию. Поэтому сначала модель оценивает предпочтительные позиции, а затем оптимизационный алгоритм формирует совместную расстановку.
Сравнивал CatBoost, TabICL и TabICLv2, экспериментировал с признаками текущего заказа и историческим контекстом. Для нескольких целевых задач TabICLv2 оказалась предпочтительнее CatBoost и вошла в итоговый комплект.
Отдельно проверял гипотезу о пользе предыдущих техкарт. Результат оказался неочевидным: в одном A/B-эксперименте усложнённая история снизила exact accuracy для Spot-станций с 82,37% до 81,81%, одновременно резко увеличив время прогона. В финальной конфигурации остались признаки, доступные на момент поступления текущего заказа.
Для камер потребовался иной критерий качества. Пропуск нужной ракельной камеры нежелательнее лишней рекомендации, поэтому модели CatBoost отбирались с приоритетом recall. Spot- и процессные краски обрабатываются отдельными моделями, затем назначения согласуются с доступной ёмкостью двух групп секций.
Качество оценивал по-разному: exact и ±1 станция для расстановки, MAE для анилоксов, recall и precision для камер. Гиперпараметры подбирал через Optuna. Это были разные задачи с разной ценой ошибки, поэтому свести их к одной общей accuracy было бы бессмысленно.
Почему часть решений осталась детерминированной
Одна из наиболее дорогих ошибок связана с неправильным направлением печати. По нашей производственной оценке, ошибка на одном заказе может стоить порядка 100 тысяч рублей простоя.
Для этого параметра я использовал детерминированную логику на Python. Если направление можно вычислить по технологическим правилам, нет смысла заменять такое вычисление вероятностной моделью. С экономической точки зрения предотвращение подобных ошибок может быть важнее небольшого прироста offline-метрик.
Результат
Собрал production inference-сервис, принимающий данные заказов из 1С. В финальном комплекте пять моделей: три на TabICLv2 и две на CatBoost. Система формирует рекомендации по технологическим параметрам для восьмицветной флексомашины.
Проект объединил tabular ML, constrained assignment, исследование частично наблюдаемых производственных решений и детерминированную технологическую логику.
Стек: Python, TabICLv2, CatBoost, Optuna, SciPy, SQL Server, 1С, FastAPI.