回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个项目清单:</p>
<pre><code>ShelvesToPack = [{'ShelfLength': 2278.0, 'ShelfWidth': 356.0, 'ShelfArea': 759152.0, 'ItemNames': 1},
{'ShelfLength': 1220.0, 'ShelfWidth': 610.0, 'ShelfArea': 372100.0, 'ItemNames': 2},
{'ShelfLength': 2310.0, 'ShelfWidth': 762.0, 'ShelfArea': 1760220.0, 'ItemNames': 3},
{'ShelfLength': 610.0, 'ShelfWidth': 610.0, 'ShelfArea': 1450435.0, 'ItemNames': 4}]
</code></pre>
<p>我需要一个程序,告诉多少最小数量的组一个人可以有和项目如何分组。你知道吗</p>
<p>我想对这些项目进行分组,使项目的搁置长度之和<;=最大长度或项目搁置宽度之和<;=最大宽度和项目搁置面积之和<;=最大面积。在这种情况下,如果我们看一下逻辑,我们可以将所有项目打包成至少两组-项目1和3将形成一组,项目2和4将形成另一组。我想得到以下格式的答案:</p>
<pre><code>[[{'ShelfLength': 2278.0, 'ShelfWidth': 356.0, 'ShelfArea': 759152.0, 'ItemNames': 1} ,
{'ShelfLength': 2310.0, 'ShelfWidth': 762.0, 'ShelfArea': 1760220.0, 'ItemNames': 3}],
[{'ShelfLength': 1220.0, 'ShelfWidth': 610.0, 'ShelfArea': 372100.0, 'ItemNames': 2},
, {'ShelfLength': 610.0, 'ShelfWidth': 610.0, 'ShelfArea': 1450435.0, 'ItemNames': 4}]]
</code></pre>
<p>我已经写了一个代码,但它没有给我想要的结果。你知道吗</p>
<pre><code>ShelvesToPack_sorted = sorted(ShelvesToPack, key = itemgetter('ShelfWidth'), reverse = True)
AreaOfObject = 2972897.28
current_width = 0
current_length = 0
current_area = 0
ply =[]
plywoods=[]
for item in ShelvesToPack_sorted:
if (current_width + item['ShelfWidth'] <= 1219.2 or current_length + item['ShelfLength'] <= 2438.5) and current_area + item['ShelfArea'] <= AreaOfObject:
ply.append(item)
current_width += item['ShelfWidth']
current_length += item['ShelfLength']
current_area += item['ShelfArea']
else:
plywoods.append(ply)
if (item['ShelfWidth'] <= 1219.2 or item['ShelfLength'] <= 2438.5) and item['ShelfArea'] <= AreaOfObject:
ply = [item]
current_width = item['ShelfWidth']
current_length = item['ShelfLength']
current_area = item['ShelfArea']
else:
ply = []
current_width = 0
current_length = 0
current_area = 0
if ply:
plywoods.append(ply)
print(plywoods)
</code></pre>
<p>我得到了以下输出,这是不太正确,我不能做正确的分组。你知道吗</p>
<pre><code>[[{'ItemNames': 3, 'ShelfWidth': 762.0, 'ShelfLength': 310.0, 'ShelfArea': 1760220.0}],
[{'ItemNames': 2, 'ShelfWidth': 610.0, 'ShelfLength': 1220.0, 'ShelfArea': 372100.0},
{'ItemNames': 4, 'ShelfWidth': 610.0, 'ShelfLength': 610.0, 'ShelfArea': 1450435.0}],
[{'ItemNames': 1, 'ShelfWidth': 356.0, 'ShelfLength': 2278.0, 'ShelfArea': 759152.0}]]
</code></pre>
<p>有人能建议一下吗?你知道吗</p>