给我一个奇怪的任务,要从33种不同的产品中找到一种产品组合,以实现一定的总销售额。可能的组合显然是2 ^ 33。当我使用下面的代码时,它显示“ Memory Error”。我的win10桌面安装了64G内存。好消息是我通过使用Excel VBA解决了这个问题,花了几个小时才得到结果。有谁有想法解决这类问题?使用发电机?或PD数据框?谢谢!
import numpy as np
import itertools, sys
a1 = [4435.48, 327.96, 23.26, 4136.78, 77.06, 158.73, 1389.34,
820.32, 888.33, 3735.7, 201.78, 31.17, 250.04, 87.17, 3230.95,
491.53, 47.11, 508.22, 52.22, 1255.98, 3755.11, 948.4, 905.44,
80.41, 1323.68, 528.57, 1474.4, 83.98, 756.87, 310.68, 27.86,]
n = len(a1)
lst = [list(i) for i in itertools.product([0, 1], repeat=n)]
for g in lst:
c = sum(np.multiply(g, a1))
if abs(c - 11833) < 1:
print (g)
sys.exit()
答案 0 :(得分:-1)
内存意味着您内存不足。您可以按import sys; print(sys.maxsize)
或import struct; print(struct.calcsize("P")*8)
进行检查。
后者是检查32位还是64位。