У меня есть эти 2 проблемы для решения (на картинке).
У меня есть 9 магазинов, которые хотят разного количества товара. Первый магазин попросил 62 единицы, второй 10 единиц и т. Д. И т. Д.
Поставщик отправил в общей сложности 138 единиц (случай 1). Я должен честно распределить эти 138 единиц по всем магазинам. Каждая коробка, отправленная от поставщика, имеет 2 единицы, и лучше использовать кратные 2 единицы для каждого магазина, чтобы не было необходимости демонтировать коробку. Если это невозможно, мы можем разобрать коробку, но только в последнем случае.
В случае 2 есть несколько магазинов, которые получат меньше, чем они просили. Это нормально. Мне просто нужно распространять их честно, чтобы один магазин не получил все, а другие ничего.
У меня есть способ сделать это, но он действительно сложен и полон ошибок, поэтому я пытаюсь найти более простой способ, как формула или что-то в этом роде.
Что я делаю (я собираюсь привести пример для первой строки и Case2):
- Раздача коробки каждому магазину, чтобы не было риска, что один магазин ничего не получит.
- Вычислить: NecessityByPriority = Necessity-1box = 62-2 = 60
- Рассчитать: PriorityEachStore: 60 / сумма (NecessityByPriority) = 60/72 = 83,3333%
- Вычислить: PriorityUnits = PriorityEachStore * (Stock-9box) = 83,3333% * (58-18) = 33,3333 [9-я коробка соответствует количеству единиц, указанному на первом шаге: 9stores * по 2 единицы каждый]
- Вычислить: NumberBoxes = round (PriorityUnits / (Unit / box)) = round (33,3333 / 2) = 17
- Вычислить: NumberUnits = NumberBoxes * (блок / блок) = 17 * 2 = 34
- Рассчитайте окончательное количество: NumberUnits + 1box [задано в шаге 1] = 34 + 2 = 36
В данном случае нет большой ошибки, но я собираюсь показать вам ошибку с ошибкой выше в симуляторе, который я сделал в Excel:
Здесь осталось 3 единицы. Это связано с округлением. Я могу добавить строку, чтобы проверить, есть ли что-то еще, и если так, чтобы распространять. Но я искал более легкий путь без всех этих формул.
У меня есть другой процесс, который рассчитывает по тем же формулам, все для первого магазина. Затем делает 2-ю итерацию и пересчитывает все, кроме первого хранилища. И дальше, пока нет больше магазина. Проблема в том, что здесь есть только 9 магазинов, но иногда их сотни.