*初始海湾的区块数。
r
*海湾的堆数。
k
从最初的k块中提取堆栈i的状态(配置海湾。
无花果。 3说明一个有三个堆栈的海湾和每个堆栈的状态。
sk
从最初的k个区块中提取出海湾的状态 海湾。
ak
*在Kth街区被捡起时采取的行动。 该操作伴随着对要拾取的块(目标块)和
重新定位块的存储位置的决定。 注意1号块无花果。 3是目标 街区。
h(ak Sk−1 )
*行动a期间的搬迁次数k
在州湾上 sk−1 .
f(sk )
*的 最低限度 共计 号码 的 重新安置 去 挑选 向上 的 剩下的 n k块 从
州湾k .
则,问题可以定义为
f(s0)=Min{h(a1|0)+f1)},
在那里0
更改为S1
通过行动a1
(s
1
→
1).
因此,
f(s0)
敏
a
1a
2,ak
.
.
k
我
=1
σ
h(ai |我−1 )+fk )
在那里我−1 ai
si
因为我=1,2,...,
k。
该问题采用分支和绑定(B&B)算法求解。 第0级中的初始节点(根节点)对应于初始状态(S0)
的海湾,而I级中的节点对应于所有可能的节点 si .
本节提出了两种情况下的B&B算法,具有优先关系的个别块和案件之间的优先关系组块。
2.1. 单个块之间具有优先关系的情况
无花果。 2(a)说明个别区块之间的优先关系。 中海湾的配置无花果。 2(a)可表示为
3,0,0,1,2,6,5,4,0. 然后,树枝
直接跟着海湾进去无花果。 2(a)是
3、6、2、
0、0、
0、
0、5、
4、0、
3、6、0、
0、0、0、5、4、2和
3, 2, 0 , 0, 0, 0 , 5, 4, 6 .
为了
选择下一个节点进行分支,使用了深度优先和回溯策略。 也就是说,在未探索的节点
中,为下一个分支节点选择最高级别的节点。 如果最高级别有多个未探索节点,则选择具有
最小下界的未探索节点作为下一个分支节点。 使用深度优先和回溯策略是因为当从所有级别
选择具有最小下界的节点作为下一个分支节点时,需要过多的计算机内存-这是B&B算法中选择
下一个节点的通常方法。 通过将已实现的重新定位的累计数,从根节点到当前节点,添加到
当前节点的已确认的重新定位数,计算节点的下界。 通过计算位于具有更高优先级的块上方
的块来获得已确认的重新定位的数量。
无花果。 4说明确认的重新定位,这是由阴影块说明的。
B&B算法可以通过在上一级相同配置生成的配置之间定义一些优势规则来改进。 例如,
考虑配置1、3、0、0、2、0、0、0、0、8、7、0、0、6、5、4、0。 然后,以下两种配置
是下一
级可能配置的示例,
它们可
以从上述配置生成:[(0、0、0、0)、(2、3、0、0、
0)、(8、7、0、
0)、(6、5、4、0)]和[(0、0、0、0)、(2、0、0、0、0、0)、(8、7、3
显然,后者在搬迁数量上占前者的主导地位。 然而,可以被这些优势规则之一修剪的节点数
量很小。 考虑到应用这些优势规则所需的额外计算工作量,优势规则不包括在建议的B&B算法
中。
2.2. 块组之间具有优先关系的情况
这种情况下的B&B算法的过程与第2.1节中的情况相同。 然而,当一个节点被分支时,从具
有下一个最高优先级的每个块中提取所有可能的配置都必须在下一个级别中枚举。
你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。
您可以点击问题下方的【编辑】,进行补充修改问题。