Математика - лучший друг S&OP?
В предыдущей статье я остановился на вопросе: если возможных вариантов производственного портфеля очень много, как понять, какой из них действительно лучший?
На практике такие задачи часто решаются через сценарный анализ. Берется некоторый вариант продаж, рассчитывается потребность в шпоне, проверяется загрузка оборудования, оцениваются остатки полуфабрикатов и экономический результат. Если результат не устраивает — меняются объемы отдельных позиций и расчет повторяется. Такой подход работает, но у него есть одно принципиальное ограничение. Он отвечает на вопрос: «Что получится, если сформировать портфель вот так?» А задача оптимизации звучит иначе: «Каким вообще должен быть ЭТАЛОННЫЙ(идеальный) портфель при заданных условиях?» Проверить вариант и найти доказанно лучший — не одно и то же.
Допустим, предприятие выпускает несколько сотен товарных позиций. Для каждой можно изменить объем производства, при этом каждая позиция по-разному использует сырье, оборудование и полуфабрикаты. Даже если рассматривать всего несколько вариантов объема по каждой позиции, количество возможных комбинаций становится огромным. Часть невозможно произвести физически, для части не хватит определенных сортов шпона, какие-то создадут перегрузку отдельных участков, а другие будут хорошо использовать сырье, но дадут слабый экономический результат. Опытный специалист способен быстро отбросить большое количество плохих решений. Но перебрать все допустимые комбинации вручную невозможно.
Именно здесь появляется задача Product Mix Optimization.
Мы ищем не лучший продукт. Оптимизация ассортимента — это не поиск продукции с максимальной маржинальностью. Продукты необходимо рассматривать одновременно. Например, высокомаржинальная позиция может потреблять дефицитный сорт шпона. Увеличив ее объем, мы потеряем возможность произвести несколько других продуктов, которые вместе дали бы больший результат. Или продукт может выглядеть очень привлекательным по марже на кубический метр, но сильно загружать участок, который уже является узким местом. Поэтому задача звучит так: найти такое сочетание продуктов, которое при имеющихся ресурсах и ограничениях даст лучший результат для предприятия в целом.
Производство как математическая модель.
Для решения такой задачи производство необходимо формализовать. Есть параметры, которыми мы можем управлять: объемы продукции, распределение полуфабрикатов, использование технологических маршрутов. Есть ограничения: доступное сырье, прогноз выхода шпона, производственные мощности, запасы, технологические условия, спрос. И есть цель — например максимизация суммарной маржи производственно-сбытового портфеля. После этого задачу можно сформулировать математически: найти такие объемы продукции, при которых соблюдаются все ограничения, а экономический результат максимален.
А что, если использовать MILP — Mixed Integer Linear Programming, смешанное целочисленное линейное программирование? Название звучит академично, но сама идея достаточно понятна: мы описываем предприятие системой взаимосвязанных условий, а оптимизатор ищет среди допустимых решений наиболее выгодное. Что меняется после этого? Появляется возможность задавать системе уже другой класс вопросов. Не только: «Что будет, если увеличить выпуск этой позиции?» Но и: «Какие позиции стоит увеличить при текущем балансе шпона?», «Как изменится оптимальный ассортимент, если станет меньше определенного сырья?», «Что даст дополнительная мощность конкретного участка?», «Стоит ли принимать дополнительный заказ с учетом того, какую другую продукцию он вытеснит?» То есть модель постепенно превращается из инструмента расчета в систему поддержки принятия решений. Но здесь возникает следующая сложность. Оптимизатор не знает производство. Он не понимает технологию, не знает реальных ограничений оборудования и не отличает формальный норматив от того, как процесс работает на практике. Все эти знания сначала необходимо превратить в данные, зависимости и правила. И именно эта часть, на мой взгляд, значительно сложнее самой математики. Об этом — в следующей статье.