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

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

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

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

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

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

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

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

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

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

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

(2) При расчете дельты необходимо учитывать как текущие запасы $$q_{hand}$$, так и запасы, находящиеся в заказе $$q_{order}$$, что дает соотношение $$\delta = R - q_{hand} - q_{order}$$, где $$R$$ — точка повторного заказа. Интуитивно, $$\delta+1$$ — это минимальное количество, которое необходимо заказать для поддержания требуемого уровня обслуживания.

$$Q = \underset{q=\delta+1..\infty}{\operatorname{argmin}}\left(\frac{1}{2}(q-\delta-1)H+Z\mathcal{P}(q)\right)$$

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

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

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

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

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

$$C(q)=\left(R+\frac{q-\delta-1}{2}\right)H+Z\mathcal{P}(q)$$

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

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

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

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

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

$$C(q)=\left(R+\frac{q-\delta-1}{2}\right)H+Z\mathcal{P}(q)$$

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

$$C^*(q)=\frac{1}{2}(q-\delta-1)H+Z\mathcal{P}(q)$$

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

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

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

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

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

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

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

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

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

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

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

$$Q=\sqrt{\frac{2D_yS}{H_y}}$$

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

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

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