Добрый день.
Есть задачка распределить потребность в sku по поставщикам.
Исходные данные:
Требуемое кол-во sku
Желаемая доля поставщика в закупке sku
Минимальное кол-во, от которого поставщик готов запустить заказ в производство (МинНЗ)
Максимальное кол-во, возможности производства поставщика. (МахНЗ )
За ключевое значение для достижения желаемой цели я выбрал корректировку “Желаемая доля поставщика в закупке sku” - если вышли за границы диапазона минимальное - максимальное кол-во доступное для заказа.
Как пересчитать доли с учетом ограничения по максимальному кол-ву я реализовал следующий алгоритм:
Рассчитываем:
Верх_гр = МахНЗ/ Требуемое кол-во sku
Полученное значение (Верх_гр) сравниваем с Желаемой долей
Если Верх_гр <= Желаемая доля тогда по данному поставщику значение желаемой доли меняем на Верх_гр.
По остальным строкам пересчитываем долю:
(Желаемая доля / сумма (желаемая доля по оставшимся строкам))*(1- сумма (желаемая доля по замененным значениям на Верх_гр)
Далее, алгоритм повторяем пока не останется значений где Верх_гр <= Желаемая доля.
Пример (сформированный на «коленке» во вложении)
Не понимаю, как сформировать алгоритм учитывающий одновременно верхние и нижние границы допустимого диапазона.
Если реализовывать перерасчет отдельно для минимальной границы и максимальной границы, при о переделённых значениях процесс подбора «долей» может работать бесконечно.
Прошу оказать помощь в создании алгоритма. (идеально в PQ)