Экономический объем заказа (EOQ)

learn menu
От Joannes Vermorel, январь 2012

EOQ — это количество товара для пополнения запасов, которое минимизирует общие издержки на запасы. Заказ на пополнение инициируется, когда уровень запасов достигает точки повторного заказа. EOQ рассчитывается с целью минимизации совокупности затрат, таких как стоимость закупки (которая может включать скидки по объему), затраты на хранение запасов, стоимость заказа и т.д. Оптимизация количества заказа является дополнением к оптимизации резервного запаса, которая направлена на поиск оптимального порога для инициирования нового заказа.

Обновлено в июле 2020: EOQ представляет собой довольно устаревшую точку зрения, глубоко укоренившуюся в стационарном подходе, при котором будущий спрос не только точно известен, но и остается неизменным. Формулы, приведенные ниже, могут считаться стандартом в учебной литературе по цепочке поставок, но исходная концепция по своей сути является ошибочной. Прогнозы спроса с вероятностным подходом, учитывающие оценку предельного экономического вклада каждой дополнительной единицы запаса, представляют собой гораздо более эффективный метод. Мы больше не рекомендуем использовать концепцию EOQ.

Модель и формула

Классическая формула EOQ (см. формулу Уилсона ниже) по существу представляет собой компромисс между фиксированной стоимостью заказа и затратами на хранение запасов. Хотя эта формула, появившаяся еще в 1913 году, чрезвычайно известна, мы настоятельно не рекомендуем использовать такую формулу в современных условиях цепочки поставок. Основополагающие математические предположения, лежащие в основе этой формулы, сегодня уже не актуальны.

Историческая формула исходит из предположения, что стоимость самого процесса заказа является ключевым экономическим фактором. Это, безусловно, было важным фактором в 1913 году, когда для ведения учета требовалось целое войско клерков, но с появлением программного обеспечения для управления запасами и, возможно, EDI этот фактор обычно не имеет большого значения. В результате «оптимизация», проводимая по данной формуле, теряет смысл и полностью игнорирует любые скидки, которые могут быть предоставлены при заказе большего количества товара.

Скачать Excel-таблицу: eoq-calculator.xlsm (пример расчета)

Таким образом, мы предлагаем вариант формулы EOQ, который оптимизирует соотношение затрат на хранение запасов и скидок по объему. Введем переменные:

  • Z — спрос в период поставки.
  • H — затраты на хранение единицы товара за время срока поставки (1).
  • δ — разница в количестве запасов, необходимая для достижения точки повторного заказа (2).
  • P — цена закупки за единицу, функция от количества заказа q.

(1) Здесь рассматривается временной интервал, равный сроку поставки. Таким образом, вместо использования более привычных годовых затрат на хранение Hy, мы берем H=d365Hy, предполагая, что d — это срок поставки в днях.

(2) При расчете дельты необходимо учитывать как текущие запасы qhand, так и запасы, находящиеся в заказе qorder, что дает соотношение δ=Rqhandqorder, где R — точка повторного заказа. Интуитивно, δ+1 — это минимальное количество, которое необходимо заказать для поддержания требуемого уровня обслуживания.

Q=argminq=δ+1..(12(qδ1)H+ZP(q))

Несмотря на кажущуюся сложность, эту функцию можно легко вычислить с помощью Microsoft Excel, как показано в приведенной выше таблице.

А что насчет затрат на заказ?

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

Функция затрат

Для моделирования функции затрат на количество заказа с учетом скидок по объему, введем R — точку повторного заказа. Затраты на запасы представляют собой сумму затрат на хранение запасов и стоимости закупки, а именно

C(q)=(R+qδ12)H+ZP(q)

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

При этом уровень запасов постоянно меняется, но если рассматривать случаи строгого минимального заказа (т.е. q=δ+1), то средний уровень запасов во времени равен R — точке повторного заказа. Поскольку мы рассматриваем заказы, превышающие δ+1, дополнительные заказываемые количества увеличивают средний уровень запасов (а также откладывают момент, когда будет достигнута следующая точка повторного заказа).

Выражение (qδ1)/2 представляет собой сдвиг запасов, вызванный заказом, при условии равномерного распределения спроса в период поставки. Фактор 1/2 обоснован тем, что увеличение количества заказа на N приводит лишь к увеличению среднего уровня запасов на N/2.

Минимизация функции затрат

Чтобы минимизировать C(q), можно начать с выделения части, не зависящей от q, следующим образом:

C(q)=(R+qδ12)H+ZP(q)

Поскольку RH не зависит от q, оптимизация C(q) сводится к оптимизации C(q), где:

C(q)=12(qδ1)H+ZP(q)

Таким образом, в данном контексте, поскольку функция скидки по объему P является произвольной, прямого алгебраического решения для минимизации данной формулы не существует. Однако это не означает, что минимизацию данной функции сложно решить.

Простая минимизация функции C(q) заключается в (наивном) подробном численном исследовании, то есть вычислении функции для широкого диапазона значений q. Ведь практически ни одному бизнесу не требуются заказы объемом свыше 1,000,000 единиц, и выполнение перебора значений затрат для q=1..1,000,000 займет менее 1 секунды, даже если расчет проводится в Excel на обычном настольном компьютере.

Однако на практике этот расчет можно значительно ускорить, если предположить, что функция P(q) является строго убывающей, то есть цена за единицу товара строго снижается с увеличением количества заказа. Действительно, если P(q) убывает, то можно начать исследование значений с q=δ+1, проводить итерации и окончить, как только будет обнаружено, что $${C^(q+1)>C^(q)}$$.

На практике цена за единицу редко увеличивается с ростом объема заказа, однако могут наблюдаться локальные скачки в зависимости от оптимизации поставок под поддоны или другие упаковочные стандарты, предпочитающие определенные размеры партий.

В приложенной выше Excel-таблице мы предполагаем, что цена за единицу строго убывает с увеличением количества. Если это не так, отредактируйте макрос EoqVD(), чтобы вернуться к наивному перебору диапазона значений.

Формула Уилсона

Самая известная формула EOQ — формула Уилсона, разработанная в 1913 году. Эта формула основывается на следующих предположениях:

  • Затраты на заказ являются фиксированными.
  • Спрос известен и равномерно распределен в течение года.
  • Срок поставки является фиксированным.
  • Цена закупки за единицу постоянна, то есть скидка не предоставляется.

Введем следующие переменные:

  • Dy — годовой объем спроса
  • S — фиксированные затраты за заказ (не затраты на единицу товара, а затраты, связанные с операцией заказа и доставки).
  • Hy — годовые затраты на хранение

При этих предположениях оптимальный EOQ по формуле Уилсона равен:

Q=2DySHy

На практике мы предлагаем использовать более локально адаптированный вариант (по времени) этой формулы, в котором Dy заменяется на D — прогнозируемую скорость спроса за период поставки (то есть спрос в период поставки Z, разделенный на срок поставки), а Hy заменяется на H — затраты на хранение за период поставки.

Сравнение двух формул EOQ

Для розничной или оптовой торговли, по нашему мнению, представленная в начале страницы формула EOQ, ориентированная на скидки по объему, является более подходящей и, следовательно, более прибыльной, чем формула Уилсона. Для производителей всё зависит от ситуации. В частности, если заказ инициирует новое производство, тогда действительно могут возникать значительные затраты на заказ (наладка производства) и незначительные или отсутствующие выгоды от сниженной маржинальной себестоимости единицы. В такой ситуации формула Уилсона оказывается более уместной.