deksden / biomatrix-mrp-server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Алгоритм планирования ресурсов - MRP

Для работы алгоритма необходимо внесение следующих основных данных:

  • ресурсы: материалы и сырье, которые используются в производстве продуктов
  • продукты: перечень продукции, производство которой планируется
  • процессы: схема производства продукции
  • начальные остатки ресурсов: сколько ресурсов было на начало периода и сколько ресурсов находится в процессе доставки и прибудет несколько позднее начальной даты планирования
  • начальные остатки продукции: сколько готовой продукции было на складе на начало периода, и какие партии продукции находятся в производстве на начало периода

Входящие данные алгоритма: количество продукции, которое нужно для сбыта на указанные даты - план продаж.

Ресурсы

Ресурсы - это материалы и сырье. Описание ресурса включает в себя:

  • id: идентификатор ресурса
  • caption: название ресурса
  • unit: название единицы измерения ресурса
  • minStock: минимальный остаток ресурсов, при котором заказывается следующая партия

Методы:

  • обработать ресурсы в транзите - сформировать регистр остаток ресурсов с учетом поступления ресурсов из транзита. Посмотреть остатки можно через ресурс "resource-stock"
  • получить остатки ресурсов на определенную дату.
  • сделать заказ сырья к определенной дате: получить срок размещения заказа

Алгоритм

Обрабатываем ресурсы в транзите. Формируем регистр остатков ресурсов на определенные даты с учётом транзита. (+)

Обрабатываем продукцию в производстве. Для каждой партии в производстве. Берем текущую партию. Берем этапы производства от самого первого до последнего. Для каждого этапа списываем ресурсы на производство продукции.

Сортируем план в хронологическом порядке. Обрабатываем каждую позицию плана от самой ранней к самой поздней. Вычисляем остаток продукции на эту дату. Вычисляем продажи к этой дате. Вычисляем производственный план. (+)

Берем текущую позицию производственного плана.
Берем все этапы производства этой продукции. Сортируем в порядке следования прозводственных этапов, от самых первых этапов к последующим. Берем текущий этап. Производим вычисление даты начала этого этапа. Если дата меньше начальной даты в системе - пишем ошибку и прекращаем расчеты: система не может получить нужную продукцию к запланированной дате. Получаем список ресурсов, требуемых для данного этапа. Для каждого ресурса получаем остаток на дату начала этапа. Производим расчет требуемого объема ресурсов для данного производственного этапа. Если остатки ресурсов не позволяют начать этап, производим планирование поставки партии ресурсов. Берём новые остатки ресурсов с учётом запланированной поставки. Если остатки ресурсов позволяют произвести продукцию, сохраняем данные о себестоимости производства и фиксируем расход ресурсов на производство.

Вычислить дату начала этапа: дата конечная, продукция, этап. Сортируем этапы хронологически. От самого последнего этапа начинаем. Отнимаем от даты конечной длительность текущего этапа. Если это требуемый этап - возвращаем дату начала. Если этапы кончились - ошибка. Иначе - берем предшествующий этап.

Планирование поставки партии ресурсов: на входе - дата поступления ресурсов и требуемое количество. Справочно указываем основание заказа. Получаем длительность перевозки и изготовления требуемого ресурса для расчёта даты заказа. На эту дату получаем - какой поставщик и условия поставки будут действовать. В соответствии с этими условиями записываем финансовые планы и требуемое количество ресурса для заказа. Записываем в список партий ресурсов эту партию как заказанную (planned order). Основание заказа - продукция, этап.

Получить остаток ресурсов на дату: берем перечень всех партий ресурсов в хронологическом порядке - от начальных остатков, остатков в транзите, и спланированных поставок. Далее получаем список всех расходных операций на дату. Соотносим приходные операции и расходные операции. Оставляем список всех партий, у которых остаток получился положительный - его и возвращем.

Списать ресурсы на призодство: продукция, этап, дата начала этапа. Берем список ресурсов, требуемый для данного этапа. Для каждого ресурса берем текущий ресурс. Получаем остатки этого ресурса на дату. Делаем расчет требуемого количества ресурса на производство. Если ресурса не хватает - пишем об ошибке. Если ресурса хватает, то для каждой партии ресурса на складе списываем имеющееся колчиество ресурсов из этой партии до тех пор, пока не наберем требуемое количество ресурсов.

Важные замечания

Алгоритм не учитывает планирование продаж - план представляет собой сразу план производственных партий. Для учета плана продаж необходима агрегация планов продаж из различных источников, планирование остатка продукции, соотнесение их с планом продаж и планирование производственных партий.

About


Languages

Language:JavaScript 98.3%Language:HTML 1.2%Language:CSS 0.5%