您所在位置: 网站首页 / 分支限界法作业答案.doc / 文档详情
分支限界法作业答案.doc 立即下载
2024-11-04
约2.9千字
约5页
0
51KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

分支限界法作业答案.doc

分支限界法作业答案.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

分支限界法作业

1.旅行商问题
设有n个城市,城市之间道路的长度均大于或等于0,还可能是∞(对应城市之间无交通线路)。一个旅行商从某个城市出发,要经过每个城市一次且仅一次,最后回到出发的城市,问他如何走才能使他走的路线最短?

要求:使用矩阵归约确定限界函数的方法,或者其他方法实现。
分析:
旅行商问题对应的解的元组为n元组,其中假设第一个城市为1,则n元组中未确定的为剩下n-1个城市,元组为(1,x2,…,xn),每个xi的取值为{2,…,n};约束条件为已经经过的城市不能再走,最后回到出发城市。目标函数是巡回旅行路线长度。
利用矩阵归约的方法确定限界函数:

限界函数:对任意路线上的结点d,设p是其前驱结点,则
f(d)=g(d)+h(d),
其中,g(d)=f(p)+C’p[p][d],h(d)=rd。C’p[p][d]是在p点规约后得到的矩阵中p点到d点的长度值,rd为d点可以归约掉的值。

算法1:(叶子结点进堆)
Input:图G;
Output:从源点1出发再回到1顶点的最短巡回旅行路线。

1.设定目标函数的限界down=r1,up=∞
2.计算初始结点1的f(1)=r1,将初始结点插入最小堆H;
3.while(H≠Φ)
4.{
5.从H中做DELETEMIN的操作,用p带回相应结点;
6.Ifp是叶子结点then
7.输出当前最优值,并从叶子结点沿parent指针输出解,退出;
8.Else
9.{产生p的所有满足约束条件的后继结点d(建树,建立指向parent的指针)
并计算f(d);
iff(d)<upthen
{将d结点插入最小堆H中;
ifd是叶子结点then
{up=f(p);
删除活结点表(最小堆H)中函数值大于up值的结点;
}
}
}
18.}


算法2:(叶子结点不进堆)
Input:图G;
Output:从源点1出发再回到1顶点的最短巡回旅行路线。

1.设定目标函数的限界down=r1,up=∞
2.计算初始结点1的f(1)=r1,将初始结点插入最小堆H;
3.while(H≠Φ)
4.{
5.从H中做DELETEMIN的操作,用p带回相应结点;
6.产生p的所有满足约束条件的后继结点d(建树,建立指向parent的指针)
并计算f(d);
7.while对每个结点d
8.{iff(d)<upthen
9.{ifd是叶子结点then
10.{up=f(p);
11.删除活结点表(最小堆H)中函数值大于up值的结点;
12.if(H=Φ)then
13.从叶子结点沿parent指针输出解,退出;
14.}
15.else将d结点插入最小堆H中;
16.}
17.}
18.}





















2.批处理作业问题
设J1,J2,J3,J4是四项待处理的作业,它们的工序一样,即先在m1上处理,然后在m2上处理,最后在m3上处理,第i项作业在第j台机器上的处理时间为tij。找一种最佳处理顺序,使完成作业的总时间达到最短。

分析:
将问题推广到一般的n个作业,该问题对应的解的元组为n元组(x1,x2,…,xn),每个xi的取值为{1,…,n};约束条件为xi≠xj。
目标函数是sum3=max{sum2[n],sum3[n-1]}+tn3,
其中sum2[n]=max{sum1[n],sum2[n-1]}+tn2,
Sum1[n]=sum1[n-1]+tn1。
限界函数:设M是已经安排好的作业集合,M{1,2,...,n},|M|=k。现在要处理作业k+1,有:

其中sum1[k+1]=sum1[k]+tk+1,1
sum2[k+1]=max{sum1[k+1],sum2[k]}+tk+1,2
目标函数的下限界down=
Input:n个作业,及其在3台机器上的处理时间tij;
Output:n个作业的最佳处理顺序及其处理时间。

1.设定目标函数的限界down=,up=∞
2.计算初始结点1的sum1=0,sum2=0,db(1)=0,将初始结点插入最小堆H;
3.while(H≠Φ)
4.{
5.从H中做DELETEMIN的操作,用p带回相应结点;
6.产生p的所有满足约束条件的后继结点d(建树,建立指向parent的指针)
并计算db(d);
7.while对每个结点d
8.{ifdb(d)<upthen
9.{ifd是叶子结点then
10.{up=db(p);
11.删除活结点表(最小堆H)中函数值大于up值的结点;
12.if(H=Φ)then
13.从叶子结点沿parent指针输出解,退出;
14.}
15.else将d结点插入最小堆H中;
16.}
17.}
18.}
3.装载问题
有一批共n个集装箱要装上2艘载重量分别为C1和C2的轮船,其中集
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

分支限界法作业答案

文档大小:51KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用