Содержание 1. Как повысить продажи и снизить издержки 2. Суть оптимизации методом линейного программирования 2.1. Пример оптимизации использования исходного сырья 2.2. Задачи, решаемые методом линейного программирования. “Всегда… Кока-Кола…” 3. Уникальность задачи оптимизации методом линейного программирования 3.1. Сложность сбора информации об ограничениях 3.2. Сложность принятия технологии |
||
Как повысить продажи и снизить издержки |
||
Тематика данной статьи – алгоритмы, способные повысить продажи или снизить издержки. Цель бизнеса – получать прибыль. В то же время, само по себе внедрение ИТ-систем не гарантирует прибыль. Оно помогает получать прибыль за счет того, что в компанию привносятся более эффективные процессы. ИТ-система в этом случае является второй производной – помогает работать процессам, обеспечивающим прибыль. Но определенные методы оптимизации могут явно командовать производством или логистикой, позволяя получить прибыль напрямую из правильных алгоритмов обработки данных. |
||
Каждый руководитель мечтает о такой ИТ-системе, которая сможет дать точные рекомендации о том, что нужно делать для получения прибыли. Например, что или как производить/покупать и доставлять. Примечательно, что такие алгоритмы давно существуют, широко известны (их изучают на многих математических и экономических специальностях), но еще мало популярны на российских предприятиях. Это удивительно, потому что методы были вдохновлены советскими разработками в планировании, и уже давно популярны на Западе. Данная статья ставит своей целью пробудить интерес к такой оптимизации и рассказать об особенностях её внедрения. | ||
Начнем с краткого освещения сути алгоритмов, затем расскажем об особенностях их внедрения и уникальности, а также о том, почему маловероятно, что этот функционал когда-нибудь появится в типовых продуктах 1С. | ||
Суть оптимизации методом линейного программирования
|
||
В данной статье идёт речь о решении задачи оптимизации методом линейного программирования. Данный метод позволяет описать целевую функцию: прибыль или издержки, и найти такую комбинацию параметров, при которой эта функция будет максимальной. Самое важное - это способность указать ограничения реального производства, и подобрать параметры производства/логистики и прочее с учетом специфики конкретного предприятия. | ||
Пример оптимизации использования исходного сырья
Для простоты понимания приведём пример из бизнеса по решению задачи по оптимизации прибыли. Предположим, мы производим блины и оладушки, которые имеют разную рецептуру и разную цену продажи. При этом на предприятии имеются определенные остатки исходного сырья. Нужно решить, какую комбинацию блинов и оладушек наиболее оптимально выпускать. Эту задачу можно записать в виде уравнения, и дальше остается только его решить: · Пусть на блин требуется 1 яйцо, 100 грамм муки и 15 грамм сахара. · На оладушек требуется 2 яйца, 100 грамм муки и 9 грамм сахара. В рецептурах может быть множество других ингредиентов, но мы их можем не учитывать, так как с ними нет проблем. А указанных компонентов есть строго ограниченное количество: 2,2 кг муки, 32 яйца, 300 грамм сахара. Как получить максимальную прибыль, если известно что 1 блин стоит 5$, а 1 оладушек стоит 4$? Линейное программирование позволяет представить оладушки и блины как Х1 и Х2, и решить указанную задачу как следующую систему уравнений: |
||
Задачи, решаемые методом линейного программирования. “Всегда…. Кока-Кола…” |
||
Спектр задач, решаемых методом линейного программирования, очень широк. Вероятно, самый большой класс задач – это принятие решения о том, на производство какой продукции пустить исходное сырье: · Как распиливать лес (пиловочник): какой пиломатериал из него получать и на производство какой продукции его использовать. · Как производить разделку туш животных на мясокомбинате, и какие мясные полуфабрикаты выпускать (так как на разные изделия требуются разные комбинации различных кусков туши животного). · Какую продукцию производить из молочного сырья, исходя из его входных параметров и текущей ситуации на производстве и со складскими остатками. Другой класс задач – как распределять производственные мощности или то же сырье между разными заказами в соответствии с условиями контрактов (штрафами, ценами и объемами) и т.п. Третий класс задач – оптимизация грузоперевозок и хранения, исходя из логистических ограничений транспортных каналов, емкости складов. |
||
Еще один набор задач – принятие решений о технологии обработки сырья, в зависимости от исходных характеристик (хотя это уже не кажется "линейным" ограничением или целевой функцией – существуют приёмы, позволяющие решать подобные задачи). | ||
Самый интересный пример об использовании методов линейного программирования в известных компаниях – это производство соков в компании Кока-Кола. Пример взят с американского рынка, где уважаемая компания занимается производством соков. Для покупателей необходимо обеспечить постоянство вкуса апельсинового сока. Но в разные сезоны доступно разное сырьё: сорта апельсинов с разными показателями кислотности, сахаристости и прочее. Цель производителя – смешивать сырьё в таких комбинациях, чтобы добиться неизменных показателей конечного продукта. Для решения этой задачи необходимо заключать контракты с разными производителями апельсинов, исходя из информации об их запасах и сортности фрукта. Линейное программирование способно решать эту задачу, отягощенную всеми особенностями сложной логистики. | ||
Уникальность задачи оптимизации методом линейного программирования
Если метод линейного программирования столь высокоэффективен и может так широко использоваться, то возникает вопрос: почему же он не так широко распространен? Почему он не реализован в типовых ERP-системах? Особенность заключается в том, что для каждого предприятия технологические ограничения являются уникальными, и поэтому в типовую ERP-систему невозможно заложить единый для всех подобный функционал. MS Excel, известный своей гибкостью и функциональностью, имеет встроенный решатель для задач линейной оптимизации (правда, сильно ограниченный по объему обрабатываемых данных). Ведь Excel не предоставляет стандартизации и автоматизации процессов, в него все данные вводятся вручную, и описание ограничений и целевой функции – это задача аналитика. В инструменте автоматизирован только алгоритм расчета, который является самой простой частью решения задачи оптимизации. Сложность внедрения подобной оптимизации состоит не в автоматизации, а в организации процесса: для получения точного решения требуется ввод в систему точных исходных данных. А чтобы результатами расчета начали пользоваться, необходимо сделать этот результат понятным, и чтобы ему могли доверять. |
||
Сложность сбора информации об ограниченияхПервым барьером для оптимизации производств часто является то, что технологи не способны с ходу описать все возможные технологии производства конечной продукции. Незначительная вариативность, которую допускает при планировании человек, способна сильно повысить эффективность плана без нарушения технологии. При этом автоматический алгоритм такой вариативности не знает, если в него эту вариативность не заложить. Опыт показывает, что для описания всех технологических ограничений на предприятии может потребоваться 3-6 месяцев работы технолога (в реальных условиях, когда он не может уделять этому больше трети своего времени). |
||
Сложность принятия технологииРезультаты, показанные оптимизационным алгоритмом, могут быть очень удивительными на первый взгляд. Это происходит потому, что часто многие правила бизнеса делают по традиции, а математическая оптимизация может найти нестандартный способ рекомбинации. Но всегда есть шанс, что алгоритм не учтёт в планировании каких-либо технологических ограничений, которые остаются незамеченными при ручном планировании (или они не являются важными, или принимаются как само собой разумеющееся). Поэтому важно, чтобы результат алгоритма, по крайней мере в первое время, анализировался человеком на предмет неучтенности важных ограничений реального производства. |
||
Задача визуализировать и пояснить конечный расчет не является стандартизированной. Её сложность заключается в разработке достаточно понятного интерфейса; в креативности проектировщиков интерфейса и в умении наглядно показать в программе ситуацию на реальном производстве. Поэтому при практическом внедрении метода оптимизации данная часть работы может превышать более половины всех трудозатрат. | ||
Линейное программирование требует точных данныхПреимущества линейного программирования – это возможность оптимизировать предприятие "насквозь": от закупок сырья до продаж. Но для этого все данные для работы алгоритма должны быть введены в систему, хранится в рамках единой информационной базы, и обладать достаточным уровнем точности. То есть внедрение данного метода способно создать дополнительную прибыль для уже хорошо автоматизированного предприятия. Но оптимизацию невозможно внедрять там, где работают плохо связанные ИТ-системы, или имеется проблема в качестве данных. |
||
ВыводМетоды линейного программирования позволят достаточно автоматизированным и организованным предприятия выжать "из воздуха" дополнительную прибыль порядка 5% от оборота!Но внедрение данных методов является непростым организационным мероприятием, требующим хорошей зрелости предприятия (если речь идёт об автоматизации сквозных процессов, так как отдельные процессы можно автоматизировать даже в Excel). Сквозные проекты подобной оптимизации неизбежно требуют разработки уникальной надстройки над информационной системой заказчика. В связи с этим такие проекты требуют от нескольких месяцев до года работы для команды из 1-4 человек. Стоимость такого проекта составляет от 3-4 млн рублей. К примеру, затраты на оптимизацию компании с оборотом 100 млн в год окупятся в течение полутора лет. |
||
Таким образом, данный инструмент будет востребован, в первую очередь, для компаний среднего и крупного размера и для процессов, обладающих соответствующим потенциалом оптимизации, где окупаемость подобных инвестиций будет более быстрой. | ||
Олег Демиденко, |
||