排列或分支约束?

我有一个数组(此示例为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次更好吗?我认为最后一个选择会花费更多时间和资源。

非常感谢

colourpeak 回答:排列或分支约束?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2858565.html

大家都在问