Задача максимизации ежедневной прибыли с помощью Python и Pulp ⇐ Python
Задача максимизации ежедневной прибыли с помощью Python и Pulp
У меня возникли проблемы при попытке максимизировать ежедневную прибыль шоколадной фабрики.
Задача: максимизировать ежедневную прибыль фабрики, которая производит отдельные шоколадные конфеты (каждая из которых имеет прибыль и максимальную дневную производственную мощность) и специальные упаковки (каждая из которых содержит 3 шоколадные конфеты и прибыль). Пример:
# предельных переменных # n - количество шоколадок #p - количество специальных пакетов # max_chocolates — общее максимальное производство шоколада # производительность в день п = 5 р = 2 max_chocolates = 150 # Для шоколадных конфет: каждая шоколадка (1,2,3,4,5) имеет прибыль и максимальную дневную производственную мощность. прибыль_шоколад = [50, 30, 45, 40, 35] емкость_шоколад = [27, 33, 30, 37, 35] # Для специальных упаковок: каждая упаковка состоит из 3 шоколадных конфет и прибыли за указанную упаковку. package_comComponents = [(1, 3, 5), (2, 3, 4)] профит_пакеты = [130, 130] Далее я представляю код для получения максимальной ежедневной прибыли:
# Инициализация проблемы проб = LpProblem("Максимизировать_шоколад_и_упаковку_прибыли", LpMaximize) # Переменные решения: Chocolate_vars = [LpVariable(f"x{i}", lowBound=0, cat="Integer") для i в диапазоне (n)] packages_vars = [LpVariable(f"p{i}", lowBound=0, cat="Integer") для i в диапазоне(p)] # Целевая функция проб += lpSum(profit_chocolates * шоколад_vars для i в диапазоне(n)) + \ lpSum(profit_packs * packages_vars для i в диапазоне(p)) # Ограничения: # Для максимального количества шоколадных конфет, которые нам разрешено производить в день. проб += lpSum(chocolate_vars для i в диапазоне(n)) = 0 проб.решить() для меня в диапазоне (len(chocolate_vars)): print(chocolate_vars.varValue) для меня в диапазоне (len(packs_vars)): печать(packs_vars.varValue) print(f"Максимальная дневная прибыль: {int(prob.objective.value())}") Для приведенных выше входных данных ожидаемый результат (максимальная прибыль) должен составлять 6440. Однако я получаю результат 6035.
Я думаю, разница в результатах связана со специальными упаковками, поскольку они зависят от каждого шоколада.
Не могли бы вы помочь мне узнать, что я упускаю/делаю неправильно?
Спасибо
У меня возникли проблемы при попытке максимизировать ежедневную прибыль шоколадной фабрики.
Задача: максимизировать ежедневную прибыль фабрики, которая производит отдельные шоколадные конфеты (каждая из которых имеет прибыль и максимальную дневную производственную мощность) и специальные упаковки (каждая из которых содержит 3 шоколадные конфеты и прибыль). Пример:
# предельных переменных # n - количество шоколадок #p - количество специальных пакетов # max_chocolates — общее максимальное производство шоколада # производительность в день п = 5 р = 2 max_chocolates = 150 # Для шоколадных конфет: каждая шоколадка (1,2,3,4,5) имеет прибыль и максимальную дневную производственную мощность. прибыль_шоколад = [50, 30, 45, 40, 35] емкость_шоколад = [27, 33, 30, 37, 35] # Для специальных упаковок: каждая упаковка состоит из 3 шоколадных конфет и прибыли за указанную упаковку. package_comComponents = [(1, 3, 5), (2, 3, 4)] профит_пакеты = [130, 130] Далее я представляю код для получения максимальной ежедневной прибыли:
# Инициализация проблемы проб = LpProblem("Максимизировать_шоколад_и_упаковку_прибыли", LpMaximize) # Переменные решения: Chocolate_vars = [LpVariable(f"x{i}", lowBound=0, cat="Integer") для i в диапазоне (n)] packages_vars = [LpVariable(f"p{i}", lowBound=0, cat="Integer") для i в диапазоне(p)] # Целевая функция проб += lpSum(profit_chocolates * шоколад_vars для i в диапазоне(n)) + \ lpSum(profit_packs * packages_vars для i в диапазоне(p)) # Ограничения: # Для максимального количества шоколадных конфет, которые нам разрешено производить в день. проб += lpSum(chocolate_vars для i в диапазоне(n)) = 0 проб.решить() для меня в диапазоне (len(chocolate_vars)): print(chocolate_vars.varValue) для меня в диапазоне (len(packs_vars)): печать(packs_vars.varValue) print(f"Максимальная дневная прибыль: {int(prob.objective.value())}") Для приведенных выше входных данных ожидаемый результат (максимальная прибыль) должен составлять 6440. Однако я получаю результат 6035.
Я думаю, разница в результатах связана со специальными упаковками, поскольку они зависят от каждого шоколада.
Не могли бы вы помочь мне узнать, что я упускаю/делаю неправильно?
Спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как исправить нулевой риск потерь при первоначальном расчете прибыли: машинное обучение
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-