Страницы: 1
RSS
Распределение вещества по фасовкам
 
Добрый день!
Задача: Есть несколько разных веществ. Для каждого вещества есть свои фасовки. Необходимо оптимально распределить в-во по фасовкам.
Прошу помощи с написанием формулы по распределению!
Нужно сделать без использования макросов.
Пример в файле во вложении.
Заранее большое спасибо!
 
Уточните критерий оптимальности. В файле вы пишете - "минимальное количество фасовок" - что в моем понимании минимальное количество тары.
В желаемом распределении этому критерию не соответствуют вещества D и I, например. Для D 2 фасовки по 2500, а не одна по 10000, для I 7 разных, а не 6 по 100.
Каков алгоритм ?
 
данная задача относится к классу оптимизационных задач
под оптимальностью я понимаю, что нужно взять такое количество упаковок, чтобы свободное пустое место было минимальным,
либо присвоить каждой таре ее стоимость и минимизировать общую стоимость тары необходимое для размещения груза
Оптимальное решения находится линейным программированием, если правильно составить модель, решить можно через "поиск решения" или макросом.
Формулами можно только применить жадный алгоритм, который будет далек от оптимального распределения.
 
Kostya_Ye, добрый день!
Например, если нам нужно распределить 5 в-ва, а фасовки есть 6 и 2. Целесообразнее выбрать одну упаковку 6, а не три упаковки по 2.
Целесообразность обусловливается так же минимизацией потерь. Если в случае с D мы возьмем одну упаковку 10000, потеря будет 5520, а если возьмем две по 2500 потеряем всего 520.
Можем для понимания подразумевать, что цена тары пропорциональна ее объему. Нам нужно минимизировать потери.

На мой взгляд алгоритм должен ранжировать фасовки от большей к меньшей для каждого товара и начинать перебор с самой крупной вниз.

схематично: Нужно распределить Х в-ва. Имеем фасовки A, B, C.  
На мой взгляд алгоритм должен из себя представлять следующее:
1)Если  Х>A ; А
2) если (X-A) >A; A
3) если (X-2A)<A  но >B; B и т.д.
 
Picture8,
предложенный алгоритм это только часть алгоритма для случая Х>А.
А если Х<А и Х<В ?  вот где самое интересное начинается.
По всей видимости минимизировать в первую очередь все-таки нужно величину неиспользованной емкости тары.
Но когда выбор будет стоять между количеством фасовок и величиной остатка емкости как их соотнести друг с другом?  
 
Kostya_Ye,
1) Если Х<А и Х<В при условии что есть только А и В, то берем одну упаковку В ,так как других вариантов нет.
2) верно!  "минимизировать в первую очередь все-таки нужно величину неиспользованной емкости тары"
3) так же как в пункте 2. количество тары выходит в этом случае на второй план. главное минимизировать остаток емкостей.
Спасибо!
 
так?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, добрый день!
Не совсем так.
По условию задачи для каждого в-ва соответствуют свои, порой уникальные дозировки. Мы не можем распределить в-во A по дозировкам 10, 6 и 2.
Так же большое значение имеет начальная архитектура задачи. Формула расчета количество упаковок должна протягиваться в одном столбце.
Спасибо!
 
по условиям, не плохо бы описывать условия задачи
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Код
=МАКС((МИН(ЕСЛИ($F$2:$F$22=F2;ОСТАТ($G$2:$G$22*ЕСЛИ(Кво>$G$2:$G$22;ОКРУГЛВВЕРХ(Кво/$G$2:$G$22;);1);Кво);МАКС($G$2:$G$22))+ОКРУГЛВВЕРХ(Кво/$G$2:$G$22;)*10^(-6))=ОСТАТ(G2*ЕСЛИ(Кво>G2;ОКРУГЛВВЕРХ(Кво/G2;);1);Кво)+ОКРУГЛВВЕРХ(Кво/G2;)*10^(-6))*ОКРУГЛВВЕРХ(Кво/G2;))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, это почти то что нужно!
Идея в том, чтобы найти оптимальный минимальный набор упаковок для распределения каждого в-ва с минимальными потерями неиспользованной емкости тары .
В предложенном Вами варианте модель работает верно для всех случаев, где выбирается одна оптимальная упаковка и умножается на количество штук. Но в случае
с J и I нам нужна именно комбинация упаковок. Так в случае с в-вом J = 119  Оптимально будет взять 2 упаковки по 50 и 2 упаковки по 10.


Решение задачи уже найдено пошаговым алгоритмом расчета.
Большое спасибо всем кто откликнулся!
Изменено: Picture8 - 12.02.2019 14:09:30
Страницы: 1
Наверх