【发布时间】:2021-12-11 03:17:04
【问题描述】:
我有一个水果计数数据框。从数据框中我的总数为 7,这些水果每天每个水果将分发 7 天。
fruit count
apple 3
orange 1
lemon 1
cherry 1
banana 1
分果规则:
1.苹果果不宜连续寄送,苹果之间保持至少一天的间隔。
2.orange 必须在第 7 天(即最后一天)发送。
3.第6天不送柠檬,橙子和柠檬之间保持至少一天的间隔
4.其他水果不要搭配柠檬和橙子,如果水果数量超过7个就搭配苹果或樱桃或香蕉。
预期输出
day fruit
d1 apple
d2 cherry
d3 apple
d4 lemon
d5 apple
d6 banana
d7 orange
案例 1 - 少于 7 个水果
fruit count
apple 1
orange 1
lemon 1
cherry 1
banana 1
预期输出:
day fruit
d1 apple
d2 cherry
d4 lemon
d6 banana
d7 orange
案例 2 - 超过 7 个水果:
fruit count
apple 3
orange 1
pomerante 1
lemon 1
cherry 1
banana 1
预期输出
day fruit
d1 apple
d2 cherry
d3 apple
d3 pomegranate
d4 lemon
d5 apple
d6 banana
d7 orange
我试过了:
apple = 3
orange = 1
week = 7
start_day=1
end_day = 8
days = [f"Day{i}" for i in range(start_day,end_day)]
profile = {key : [] for key in days}
profile["Day7"].append("orange")
c = 6 // apple
apple_day = 1
for i in range(apple):
profile["Day{}".format(apple_day)].append("apple")
apple_day += c
输出:
{'Day1': ['apple'],
'Day2': [],
'Day3': ['apple'],
'Day4': [],
'Day5': ['apple'],
'Day6': [],
'Day7': ['orange']}
【问题讨论】:
-
这可以通过线性规划来解决。在这里,您的决策变量将是 xij,其中 i 是日期,j 是水果。您可以使用 Pyomo 或 PuLP 包来解决 Python 中的这类问题。
-
没想到会花这么长时间,但是我给了你一个答案,它涵盖了几乎所有具有有效解决方案的极端示例。
标签: pandas python-2.7 python-3.6