分支限界法求装载问题_物联1301班_刘悦_201308080112

分支限界法求装载问题_物联1301班_刘悦_201308080112

ID:44956337

大小:48.86 KB

页数:20页

时间:2019-11-06

分支限界法求装载问题_物联1301班_刘悦_201308080112_第1页
分支限界法求装载问题_物联1301班_刘悦_201308080112_第2页
分支限界法求装载问题_物联1301班_刘悦_201308080112_第3页
分支限界法求装载问题_物联1301班_刘悦_201308080112_第4页
分支限界法求装载问题_物联1301班_刘悦_201308080112_第5页
资源描述:

《分支限界法求装载问题_物联1301班_刘悦_201308080112》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、标准文案算法分析与设计实验报告第X次实验大全标准文案姓名刘悦学号201308080112班级物联1301班时间12.26上午地点工训楼C栋309实验名称分支限界法求装载问题实验目的通过上机实验,掌握分支限界算法的思想,利用分支限界算法求装载问题并实现。实验原理活结点x在最优队列中的优先级定义为从根结点到结点x的路径所相应的载重量再加上剩余集装箱的总量之和。优先队列中优先级最大的活结点成为下一个扩展结点。优先队列中活结点x的优先级为x.uweight。以结点x为根的子树中所有结点相应的路径的载重量不超过x.uweight。子集树中叶结点相应载重量与其优

2、先级相同。因此,一旦一个叶结点成为当前扩展结点,则可以断言该叶结点所相应的解为即为最优解,终止算法。这里选用在搜索进程中保存当前已构造出的部分解空间树,在算法确定课达到最优解的叶结点时,就可以在解空间树中从该叶结点开始向根结点回溯,构造出相应的最优解。实验步骤①算法开始创建一个最大堆,表示活结点优先队列。②算法第一个扩展结点是子集树中根结点。③开始子集树的根结点是扩展结点。循环产生当前扩展结点的左右儿子结点。④如果当前扩展结点的左儿子结点是可行结点,即它所相应的重量为超过轮船的载重量,则将它加入到子集树的第i+1层上,并插入最大堆。⑤扩展结点的右儿子

3、结点总是可行的,故直接插入子集树的最大堆中。⑥接着从最大堆中取出最大元素作为下一个扩展结点。⑦如果此时不存在下一个扩展结点,则问题无可行解。⑧如果下一个扩展结点是叶结点,即子集树中第n+1层结点,则它相对应的可行解为最优解,算法结束。大全标准文案关键代码//定义集装箱的个数constintN=4;/*=================================================================定义HeapNode类来存储最大堆中顶点的信息。======================================

4、===========================*/templateclassHeapNode{templatefriendvoidAddLiveNode(MaxHeap>&H,bbnode*E,Twt,boolch,intlev);templatefriendTyMaxLoading(Tyw[],Tyc,intn,intbestx[]);public:operatorType()const{returnuweight;}private:bbnode*ptr;//指

5、向活节点在子集树中相应节点的指针Typeuweight;//活节点优先级(上界)intlevel;//活节点在子集树中所处的层序号};/*=================================================================定义bbnode类来定义子集空间树中的结点类型。=================================================================*/大全标准文案classbbnode{templatefriendvoidAddLiv

6、eNode(MaxHeap>&H,bbnode*E,Typewt,boolch,intlev);templatefriendTypeMaxLoading(Typew[],Typec,intn,intbestx[]);friendclassAdjacencyGraph;private:bbnode*parent;//指向父节点的指针boolLChild;//左儿子节点标识};/*==============================================================

7、===AddLiveNode函数将新产生的活节点加入到子集树中,并将这个新结点插入到表示活结点优先队列的最大堆中。=================================================================*/templatevoidAddLiveNode(MaxHeap>&H,bbnode*E,Typewt,boolch,intlev){//子集树结点赋值bbnode*b=newbbnode;b->parent=E;b->LChild=ch;HeapNode<

8、Type>N;大全标准文案//最大堆结点赋值N.uweight=wt;N.level=lev;N.ptr=b

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。