设有带时限的作业排序问题实例(p1,p2,...,p5)=(6,3,4,8,5),(t1,t2,...,t5)=(2,1,2,1,1)和(d1,d2,...,d5)=(3,1,4,2,4)。求问题的最优解及对应于最优解的收益损失。画出JEIFOBB算法实际生成的那部分状态空间树。
时间: 2024-05-08 20:21:11 浏览: 150
作业排序问题是指给定n个作业和它们的处理时间,要求将它们安排到一台机器上使得最大延误时间最小。其中,延误时间定义为作业完成时间与它的期望完成时间之差的绝对值。
根据题目给出的数据,我们可以得到五个作业的处理时间t和期望完成时间d,以及它们的编号p。具体如下:
p1:t1=6,d1=3
p2:t2=3,d2=1
p3:t3=4,d3=4
p4:t4=8,d4=2
p5:t5=5,d5=4
接下来,我们可以使用JEIFOBB算法来求解最优解。
首先,我们需要将所有的作业按照期望完成时间从小到大排序,得到排序后的作业顺序为p2、p4、p1、p5、p3。
然后,我们按照这个顺序依次将作业加入机器中。具体来说,我们首先将p2加入机器,处理时间为3,期望完成时间为1,因此延误时间为|1-3|=2。然后,我们将p4加入机器,处理时间为8,期望完成时间为2,因此延误时间为|2-8|=6。接下来,我们将p1加入机器,处理时间为6,期望完成时间为3,因此延误时间为|3-6|=3。然后,我们将p5加入机器,处理时间为5,期望完成时间为4,因此延误时间为|4-5|=1。最后,我们将p3加入机器,处理时间为4,期望完成时间为4,因此延误时间为|4-4|=0。
综上所述,我们得到了最优解,即作业顺序为p2、p4、p1、p5、p3,最大延误时间为6。
下面是JEIFOBB算法实际生成的状态空间树:
```
(0,0,0,0,0)
/ | \
(1,0,0,0,0) (0,1,0,0,0) (0,0,1,0,0) (0,0,0,1,0) (0,0,0,0,1)
/ | \ / | \
(1,1,0,0,0) (1,0,1,0,0) (1,0,0,1,0) (1,0,0,0,1) (0,1,1,0,0) (0,1,0,1,0) (0,1,0,0,1) (0,0,1,1,0) (0,0,1,0,1) (0,0,0,1,1)
/ | \ / | \ / | \
(2,1,0,0,0) (1,2,0,0,0) (1,1,1,0,0) (1,1,0,1,0) (1,1,0,0,1) (1,0,2,0,0) (1,0,1,1,0) (1,0,1,0,1) (1,0,0,2,0) (1,0,0,1,1) (0,2,1,0,0) (0,2,0,1,0) (0,2,0,0,1) (0,1,2,0,0) (0,1,1,1,0) (0,1,1,0,1) (0,1,0,2,0) (0,1,0,1,1) (0,0,2,1,0) (0,0,2,0,1) (0,0,1,2,0) (0,0,1,1,1)
/ | \ / | \ / | \
(2,2,0,0,0) (2,1,1,0,0) (2,1,0,1,0) (2,1,0,0,1) (1,2,1,0,0) (1,2,0,1,0) (1,2,0,0,1) (1,1,2,0,0) (1,1,1,1,0) (1,1,1,0,1) (1,1,0,2,0) (1,1,0,1,1) (1,0,2,1,0) (1,0,2,0,1) (1,0,1,2,0) (1,0,1,1,1) (0,2,1,1,0) (0,2,1,0,1) (0,2,0,2,0) (0,2,0,1,1) (0,1,2,1,0) (0,1,2,0,1) (0,1,1,2,0) (0,1,1,1,1) (0,0,2,2,0) (0,0,2,1,1) (0,0,1,2,1)
/ | \ / | \ / | \
(3,2,0,0,0) (2,2,1,0,0) (2,2,0,1,0) (2,2,0,0,1) (2,1,2,0,0) (2,1,1,1,0) (2,1,1,0,1) (2,1,0,2,0) (2,1,0,1,1) (2,0,2,1,0) (2,0,2,0,1) (2,0,1,2,0) (2,0,1,1,1) (1,2,2,0,0) (1,2,1,1,0) (1,2,1,0,1) (1,2,0,2,0) (1,2,0,1,1) (1,1,2,1,0) (1,1,2,0,1) (1,1,1,2,0) (1,1,1,1,1) (1,0,2,2,0) (1,0,2,1,1) (1,0,1,2,1) (0,2,2,1,0) (0,2,2,0,1) (0,2,1,2,0) (0,2,1,1,1) (0,1,2,2,0) (0,1,2,1,1)
/ | \ / | \ / | \
(3,3,0,0,0) (3,2,1,0,0) (3,2,0,1,0) (3,2,0,0,1) (2,3,1,0,0) (2,3,0,1,0) (2,3,0,0,1) (2,2,2,0,0) (2,2,1,1,0) (2,2,1,0,1) (2,2,0,2,0) (2,2,0,1,1) (2,1,3,0,0) (2,1,2,1,0) (2,1,2,0,1) (2,1,1,2,0) (2,1,1,1,1) (2,0,3,1,0) (2,0,3,0,1) (2,0,2,2,0) (2,0,2,1,1) (1,3,2,0,0) (1,3,1,1,0) (1,3,1,0,1) (1,3,0,2,0) (1,3,0,1,1) (1,2,3,0,0) (1,2,2,1,0) (1,2,2,0,1) (1,2,1,2,0) (1,2,1,1,1) (1,1,3,1,0) (1,1,3,0,1) (1,1,2,2,0) (1,1,2,1,1) (1,0,3,2,0) (1,0,3,1,1) (0,3,2,1,0) (0,3,2,0,1) (0,3,1,2,0) (0,3,1,1,1) (0,2,3,1,0) (0,2,3,0,1) (0,2,2,2,0) (0,2,2,1,1) (0,1,3,2,0) (0,1,3,1,1)
... ... ...
```
在状态空间树中,每个节点表示一个状态,由5个数字组成,分别表示已经加入机器的作业的处理时间。例如,(1,2,0,0,1)表示前四个作业已经加入机器,它们的处理时间分别为1、2、0、0、1。
从根节点开始,我们依次考虑每个作业是否加入机器。在每个节点上,我们可以根据当前加入机器的作业的处理时间以及期望完成时间,计算出当前状态的延误时间。然后,我们将所有可能的下一步状态都加入状态空间树中,并继续进行搜索,直到搜索到所有可能的状态为止。最终,我们可以在状态空间树中找到最优解,即最大延误时间为6,对应的作业顺序为p2、p4、p1、p5、p3。
对于收益损失,由于题目没有给出参考解,因此无法计算。
阅读全文