我有一个数组(此示例为3,4,实际上为20x12),我需要测试组合的边界。有人告诉我B&B是解决它的最好方法,但是我不确定如何开始做它。
import numpy as np
import itertools
arr=np.array([[50,400,100],[600,20,120,0],[95,2,110,500]])
result = list(itertools.product(*arr))
print(result)
[(50,600,95),(50,2),110),500),...]
我想添加一些界限,以便最佳路径如下:
[(50,(400,(0,(100,110)]
例如,我知道如果该数字小于5,则前一个和下一个数字很可能也低于5。
lowthres=5
for n in range(len(result)):
if (result[n][0]<lowthres and result[n][1]<lowthres and result[n][2]<lowthres):
lowcomb=result[n]
else:
continue
我也知道1条路径的真正组合是(50,95)。
如何将这个问题定义为B&B问题?即使我以前有一些限制,还是迭代20 ^ 12次更好吗?我认为最后一个选择会花费更多时间和资源。
非常感谢