python拟合_Python最佳拟合算法

我正试图为装箱设计一个最适合的算法。装箱问题:在给定容量的情况下,尽量减少用于包装物品的箱子数量。在

这个启发应该做的是尽量将物品放在能容纳物品的最满的箱子里,也就是说,能留下最少空间的箱子

如果找不到箱子,启动一个新箱子。

为了写这个,我做了一个辅助卷。对于要放置的项目,将体积添加到每个箱子中。容量最大的箱子(这仍然可行)将得到该物品。我在Python中尝试了以下方法:item = ['a', 'b', 'c', 'd', 'e']

volume = [9,5,6,7,2]

V = 15

class Bin(object):

def __init__(self):

self.items = []

self.sumVolume = 0

self.auxvolumeSpace = 0

def add(self, item, volume):

self.items.append(item)

self.sumVolume += volume

self.auxvolumeSpace = self.sumVolume

def __str__(self):

# Printable representation

return 'Bin(TotalVolume=%d, products=%s)' % (self.sumVolume, str(self.items))

if __name__ == '__main__':

def packAndShow(volume, maxVolume):

bins = pack(volume, maxVolume)

print('Solution using', len(bins), 'bins:')

for i in bins:

print(i)

print('The total amount of bins needed, using the Best fit Algorithm is: ',len(bins))

def auxiliaryspace(volume, maxVolume):

bins = []

maxvolumespace = -1

for bin in bins:

if bin.sumVolume + volume <= maxVolume:

bin.auxvolumeSpace += volume

if bin.auxvolumeSpace >= maxvolumespace:

maxvolumespace = bin.auxvolumeSpace

return maxvolumespace

def pack(volume, maxVolume):

bins = []

for i in range(len(volume)):

mv = auxiliaryspace(volume[i], maxVolume)

for bin in bins:

if mv > 0 and bin.auxvolumeSpace == mv:

bin.add(item[i], volume[i])

break

else:

bin = Bin()

bin.add(item[i], volume[i])

bins.append(bin)

return bins

packAndShow(volume, V)

问题是所有的东西都放在一个新的箱子里。结果如下:

^{pr2}$

我认为问题出在“辅助空间”部分。我认为返回的值(我想要的)不正确。。有人能帮忙吗?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值