Я захожу в супермаркет и наблюдаю: как все же далеко шагнула автоматизация. Все продукты снабжены штрих-кодами. Для весового товара есть весы с функцией печати штрих-кода, которыми без проблем пользуются покупатели от мала до велика. Я — доволен.
Однако, откуда эти горы продукции на последних днях срока годности? Почему хлеб, который я покупаю уже закончился, а одноразовые станки для бритья, которые я предпочитаю другим — периодически пропадают на 2-3 месяца. Мы же рынок! Да кто это вообще планирует? И планирует ли?
С такими вот мыслями я решил написать этот пост, в котором расскажу о некоторых базовых методах планирования. В надежде, что это может кому-то быть также интересным, как интересно мне.
Проталкивающие алгоритмы в планировании
Начну сразу с простой задачи.
Задача №1.
Прогнозируемая потребность в товаре G на плановый период Т равна N штук. Расчетами определено, что оптимальный размер партии товара равен Np штук.
Необходимо построить график закупок товара G.
Решение.
Разделим общую потребность в товаре G на оптимальный размер партии этого товара
N: Np = t
Полученная величина t означает сколько раз в планируемом периоде Т необходимо заказать партию товара G в количестве Np штук.
Ставим в график t раз заказ товара G в количестве Np штук.
Такой метод планирования называют «проталкивающим», потому что у него нет обратной связи. Мы заказываем товар на основании прогноза спроса, и товар обязательно поступит на полки, даже если спрос на него упадет в два раза. На этот товар придется делать акции, скидки, раскладывать по всему супермаркету. Тут уже «проталкивание» от специального термина переходит в плоскость бытовую. Товар Вам начинают просто толкать. Иначе его придется списывать после окончания срока годности.
Если мы вместо одного товара G попробуем решить задачу для нескольких товаров товаров G0...GN — у нас возникнет вопрос, какой товар закупать в первую очередь, какой во вторую, а какой в третью. Ведь все наши ресурсы ограничены, мы не можем ежедневно тратить денег больше, чем предусмотрено финансовым планом, у нас нет грузчиков которые смогут разгрузить товара больше чем их производительность, у нас ограниченные площади в кладовых и в торговом зале. Следовательно, график закупок всех товаров необходимо равномерно распределить по всему плановому периоду. Но как?
На бытовом уровнем мы бы ответили так: в первую очередь необходимо приобрести товар который заканчивается.
Давайте усовершенствуем «проталкивающий» алгоритм планирования с учетом текущих остатков товаров.
Задача №2.
Прогнозируемая потребность в товаре G0 и G1 на плановый период Т равна N0 и N1. Текущий остаток товаров на складе равен R0 и R1. Расчетами определено, что оптимальный размер партий товаров равен Np0 и Np1.
Необходимо определить, на какой день запланировать заказ (поступление) каждого из товаров.
Решение.
Определяем, за какой период мы израсходуем запас каждого из товаров согласно прогноза
Сначала определяем среднесуточный прогнозируемый расход товара:
ni = Ni: T
Определяем остаток товара в днях:
Di = Ri: ni
Планируем первую поставку товара на Di периода T
Вторую и последующие поставки товара через равные промежутки времени:
di = Т: (Ni: Npi)
График будет иметь такой вид: Di, Di + di, Di + 2 x di и т.д
Но как быть с неизбежными отклонениями фактического спроса от прогнозируемого?
Точка заказа
А что если остаток товара сам даст нам «сигнал» о том, что нужно сделать заказ? Идея такая, когда запасы товара G заканчиваются, мы создаем заказ на пополнение запаса товара. Такой подход вводит обратную связь в наш контур, и такая система планирования называется «вытягивающей». Потому что реальный (а не прогнозируемый) спрос на товар запускает («вытягивает») процесс заказа нового товара. Давайте рассчитаем параметры точки заказа.
Задача №3.
Прогнозируемая потребность в товаре G на плановый период Т равна N. Расчетами определено, что оптимальный размер партии товара равен Np. От момента поступления «сигнала» на заказ до прибытия новой партии товара на склад необходимо время t (время на оформление заказа, транспортировку, разгрузку и т.п.).
Необходимо определить точку заказа товара.
Решение.
Сначала определяем среднесуточный прогнозируемый расход товара:
n = N: T
Определяем сколько товара израсходуется за время t от момента поступления «сигнала» на заказ до прибытия новой партии товара на склад:
C = n x t
Предположим что С меньше или равно размеру оптимальной партии Np. В этом случае, после достижения запаса товара до уровня С запускается процесс заказа новой партии товара. Этого запаса достаточно для того, чтобы обеспечить расходование товара до поступления на склад новой партии в количестве Np.
Что же будет, если точка заказа С больше размера оптимальной партии Np? Мы привезем товар, но его количество будет ниже чем точка заказа C. Пока мы закажем еще одну партию, товары все израсходуются, мы потерям деньги. Если мы закажем партию не оптимального размера — так же мы будем в убытке из-за не оптимального размера партии. И тут пора рассказать о канбан.
Канбан
Канбан обычно связывают с карточками канбан и правилами их движения, которые получили широкую известность после их применения в производственной системе Тойоты. Но мы сначала рассмотрим канбан как алгоритм планирования.
Задача №3а
Прогнозируемая потребность в товаре G на плановый период Т равна N. Расчетами определено, что оптимальный размер партии товара равен Np штук. От момента поступления «сигнала» на заказ до прибытия новой партии товара на склад необходимо время t (время на оформление заказа, транспортировку, разгрузку и т.п.
Необходимо разработать алгоритм заказа товара
Решение
Начало решения см. решение задачи №3
При расчете оказалось, что точка заказа С больше размера оптимальной партии Np то есть существует число k > 1 такое что k х (Np — 1) < С <= k х Np.
Алгоритм планирования канбан следующий:
Старт алгоритма. Заказываем первые k партий товара по одной партии через равные промежутки времени.
Если среднесуточный расход товара равен:
n = N: T,
то промежуток времени между двумя заказами равен:
d = Np: n
Через время t после начала процесса поступает первая партия товара, которую будет израсходована за период времени d. Через время t + d поступит вторая партия товара и так далее.
Заказав k первых партий в режиме «проталкивания» (без обратной связи), дальше планирование идет по алгоритму «вытягивания». Как только заканчивается текущая партия товаров — запускается процесс заказа очередной партии. Таким образом в обороте всегда находится не более k партий товаров.
Так где же здесь карточки канбан, и зачем они нужны? Сейчас любой супермаркет может реализовать учет по такому алгоритму без карточек канбан, в компьютере. Но полвека назад ничего подобного не было. Поэтому был предложен такой алгоритм
1. Выпускались k карточек, на которых было указано "Товар G. Партия Np штук. Карточка 1 из k штук", "Товар G. Партия Np штук. Карточка 2 из k штук",…, "Товар G. Партия Np штук. Карточка k из k штук"
2. Карточка всегда хранилась физически рядом с партией товара G.
3. После после расходования товара G карточка передавалась в службу для заказа новой партии товара.
Канбан на производстве
Мы рассмотрели как работает алгоритм канбана на примере супермаркета. В некоторых типах производства, есть предпосылки использовать алгоритмы канбан. Только время на выполнение заказа будет состоять не из времени на оформление заказа, транспортировку, разгрузку и т.п., а из времени производства детали или сборочной единицы. Переформулируем задачу 3 для производства
Задача №3b.
Прогнозируемая потребность в деталях A на плановый период Т равна N. Расчетами определено, что оптимальный размер партии деталей A равен Np. От поступления «сигнала» на заказ новой партии деталей до его изготовления проходит время t0, а от поступления «сигнала» на заказ со сборки до забора детали в механическом цехе время t1.
Необходимо рассчитать количество карточек канбан детали А для производства в механическом цехе и для забора делали из механического цеха в сборочный цех.
k0 = N: T х t 0: Np
k1 = N: T х t1: Np
где
N: T — потребность (расход) деталей A в единицу времени
N: T х t0 — расход деталей А за время производства
N: T х t0: Np — расход партий деталей А за время производства
N: T х t1 — расход деталей А за время забора деталей из механического цеха в сборочный
N: T х t1: Np расход партий деталей А за время забора деталей из механического цеха в сборочный
Алгоритм работы по системе канбан на производстве такой. После расходования очередной партии деталей А на сборке, транспортный рабочий сборочного цеха получает на руки канбан забора деталей из механического цеха А в количестве Np штук. Далее, транспортный рабочий сборочного цеха следует в механический цех, извлекает из тары с деталями A канбан производства, помещает в тару с деталями A канбан забора деталей и транспортирует детали сборочный цех. Работник механического цеха, получив освободившийся канбан производства, приступает к производству следующей партии деталей A.
Границы применения метода канбан в производстве
Все формулы, и для определения точки заказа, и для расчета количества карточек канбан — основаны на величине средней за период потребности в деталях (N: T). В следствие этого, все эти формулы и алгоритмы работают в условиях, когда производственная программа выравнена по номенклатуре на весь плановый период. Это означает, что из месяца в месяц производится одна и та же номенклатура изделий, и, следовательно, одна и та же номенклатура деталей и сборочный единиц.
Новочеркасская система планирования
Поразительно, что практически одновременно с внедрением канбан на производстве Тойота, в городе Новочеркасске Абрамом Соломоновичем Родовым была внедрена система, которая во многом перекликается с производственной системой Тойоты. В частности, система Родова могла эффективно работать только при выравненной в течении планового периода номенклатуре изделий, и так же опиралась на децентрализацию процесса планирования и использование визуальных средств контроля, которые позволяли без вычислительной техники контролировать ход производства.
Задачи, на решение которых была в первую очередь направлена система Родова, отличались от тех, которые решала производственная система Тойоты. Партия и правительство поставило перед Новочеркасским электровозостроительным заводом план в 1962 году выпустить 457 электровозов, в том числе 413 ВЛ60, 42 Н-8 и 2 ВЛ80. Между тем, как в 1961 году было выпущено 384 машины, причем все — ВЛ60.
Одним из резервов, который мог позволить выполнить существенно возросший план было повышение ритмичности выпуска продукции в течение месяца и пропорциональность выпуска продукции всеми цехами завода. В первом полугодии 1962 года, когда начиналось внедрение системы Родова, в первой декаде месяца производилось 7% продукции, во второй — 25% и в третьей — 68%. После внедрения системы Родова во втором полугодии 1962 года, это соотношение было на уровне 33,3%, 33,3% и 33,4%.
В это же время в целях интенсификации труда были существенно снижены расценки с 1-го января 1962 года для рабочих завода за исключением литейного цеха, и с 1-го мая 1962 года для работников литейного цеха, что в сочетании с повышением цен с 1 июня 1962 года привело к Новочеркасской трагедии 1962 года.
Я знаю, что программисты любят сразу переходить к формулам. Поэтому из всей книги о производственной системе Тойота они читают одну страницу с расчетами, если не бросят чтение на первой странице. Поэтому я начну как раз с главных идей и принципов системы, который сформулировал Родов.
Главные идеи и принципы системы:
- Привлечение всего коллектива завода к оперативному планированию и управлению производством.
- Осуществление непрерывности планирования.
Вобщем-то, разработчикам ERP было бы неплохо прислушиваться к идеям, на которых базировались успешно внедренные системы планирования. Возможно, меньше было бы сетований по поводу того, что бардак автоматизировать невозможно, или как там они любят говорить.
Теперь о самой системе. Хочу еще раз подчеркнуть о необходимости иметь выравненный план выпуска продукции для запуска системы планирования Родова.
Идеи Родова кажутся неожиданными. Даже иногда противоречащими здравому смыслу.
В основе планирования лежит условное (фактически усредненное) изделие. Это нужно понимать совершенно буквально. Если за плановый период необходимо произвести 80 электровозов ВЛ60 и 20 электровозов ВЛ80 (всего 100), то условным изделием будет Электровоз, который состоит из деталей тепловоза ВЛ60, взятых с коэффициентом 0,8 по количеству, и из деталей тепловоза ВЛ80, взятых с коэффициентом 0,2 по количеству. Если необходимо за этот же период произвести запчасть «стакан люлечного подвешивания кузова» в количестве 10 штук, то эта запчасть войдет в состав условного Электровоза в количестве 10: ( 80 + 20 ) = 0.1 штука.
Далее для каждого цеха рассчитывался нормативный остаток готовых деталей в незавершенном производстве завода, и проводилась тщательная инвентаризация незавершенного производств завода, после чего определялся номер укомплектованного условного Электровоза по такому правилу. Если фактический остаток незавершенного производства за вычетом нормативного остатка равнялся нулю, то номер укомплектованного электоровоза был равен номеру электровоза, который сегодня был полностью собран и сдан как готовое изделие. Если фактический остаток незавершенного производства отличался от нормативного, то номер укомплектованного электровоза определялся как номер электровоза, который сегодня был полностью собран и сдан как готовое изделие, увеличенный или уменьшенный на количество «лишних» или «недостающих» деталей, деленное на применяемость этих деталей в одном условном Электровозе.
Это второй момент, который сносит голову. Ведь подумайте, реально деталь, которая сегодня сдана цехом, попадет не на тот электровоз, который сегодня уже был сдан в готовом виде, а на тот электровоз который будет сдан через один-два месяца. Воспринимать этот момент нужно примерно так, что деталь которая сегодня сдана цехом была использована для восполнения нормативного незавершенного производства, которое уменьшилось в связи со сдачей сегодня нового электровоза. Как это удалось провести через администраторов-бюрократов — загадка.
Для визуального контроля за пропорциональностью хода производства использовалась картотека пропорциональности, в которой над ячейками приклеивалась лента, на которой каждой ячейке соответствовал номер электровоза и календарная дата. При сдаче каждой партии деталей, карточка учета детали перекладывалась в ячейку с номером электровоза, который комплектовала эта партия. Таким образом, карточки, расположенные в ячейке с текущей датой и правее не требовали внимания, а те которые располагались левее означали отставание от графика.
Похожая картотека пропорциональности была у каждого рабочего. Только карта рабочего заводилась не на деталь, а на отдельную операцию. Дополнительно для каждой операции указывалось опережение выполнение операции в детали относительно выпуска готовой детали в днях.
apapacy@gmail.com
24 ноября 2019 года
Автор: apapacy