- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.2 装载问题 5.2.1 问题描述 一批共n个集装箱要装上2艘载重量分别为C1和C2的轮船,其中集装箱i的重量为wi,且∑wi≤C1+C2 要求确定是否有一个合理的装载方案可将n个集装箱装上2艘轮船。 例如 n=3,c1=c2=50,且w=[10,40,40]时,集装箱1、2装第一艘船,3装第二艘船。 w=[20,40,40]时,无可行解。 5.2 装载问题 如果一个给定装载问题有解,采用下面的策略可得到最优装载方案: (1)首先将第一艘轮船尽可能装满 选取子集,重量和最接近C1。 (2)将剩余的集装箱装上第二艘轮船。 当∑wi =c1+c2时,两艘船的装载问题等价于子集之和(sum-of-subset)问题,即有n个数字,要求找到一个子集(如果存在的话)使它的和为c1。 当c1=c2 且∑wi=2c1 时,两艘船的装载问题等价于分割问题(partition problem) ,即有n个数字ai , ( 1≤i≤n),要求找到一个子集(若存在),使得子集之和为∑ai/2。 5.2 装载问题 5.2.2 问题分析 将第一艘轮船尽可能装满等价于选取全体集装箱的一个子集,重量之和最接近轮船载重量。 由此可知,装载问题等价于以下特殊的0-1背包问题。 5.2 装载问题 假定n= 4,w= [8,6,2,3],c1 = 12。 解空间树为 A B C D E F G N O L M H I J K Z B X Y W V T U R S P Q D E A C 1 1 1 1 0 0 0 0 X=[0,0,0,0] cw= 0c1 X=[1,0,0,0] cw= 8c1 X=[1,1,0,0] cw= 14c1 X=[1,0,0,0] cw= 8c1 X=[1,0,1,0] cw= 10c1 X=[1,0,1,1] cw= 13c1 X=[1,0,1,0] cw= 10c1 X=[1,0,0,0] cw= 8c1 5.2 装载问题 假定n= 4,w= [8,6,2,3],c1 = 12。 解空间树为 A B C D E F G N O L M H I J K Z B X Y W V T U R S P Q D E A C 1 1 1 1 0 0 0 0 X=[0,0,0,0] cw= 0c1 X=[1,0,0,0] cw= 8c1 X=[1,1,0,0] cw= 14c1 X=[1,0,0,0] cw= 8c1 X=[1,0,1,0] cw= 10c1 13 X=[1,0,0,1] cw= 11c1 X=[1,0,0,0] cw= 8c1 10 8 5.2 装载问题 假定n= 4,w= [8,6,2,3],c1 = 12。 解空间树为 A B C D E F G N O L M H I J K Z B X Y W V T U R S P Q D E A C 1 1 1 1 0 0 0 0 X=[0,0,0,0] cw= 0c1 13 10 11 8 X=[0,0,0,0] cw= 0c1 X=[0,1,0,0] cw= 6c1 X=[0,1,1,0] cw= 8c1 X=[0,1,1,1] cw= 11c1 5.2 装载问题 思考 n= 4,w= [8,6,2,3],c1 = 12。 除了不可行解,所有节点都要搜索吗? A B C D E F G N O L M H I J K Z B X Y W V T U R S P Q D E A C 1 1 1 1 0 0 0 0 13 10 11 8 2,3,4都装上 最优值=11 还搜吗? 剩余货箱的重量 r=∑w[j],i+1≤j≤n 当cw+r≤bestW时, 当前的+剩下的所有≤最优的 没必要搜索。 约束函数减去子树 5.2 装载问题 5.2.3 算法设计 解空间 子集树 可行性约束(剪枝)函数 上界函数(不选择当前元素) 当前重量 + 剩余集装箱重量 ≤ 当前最优载重量 CW+R ≤ BestW 用回溯法设计解装载问题的O(2n)计算时间算法,某些情况下优于动态规划算法。 5.2 装载问题 5.2.4 算法描述 5.3 批处理作业调度 5.3.1 问题描述 给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j的处理时间为tji。 对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和称为该作业调度的完成时间和。 批处理作业调度问题要求对于给定的n个作业,制定最佳作业调度方案,使其完成时间和达到最小。 5.3 批处理作业调度 5.3.2 实例分析 这3个作业的6种可能的调度方案是 1,2,3;1,3,2;2,1,3; 2,3,1;3,1,2;3,
原创力文档


文档评论(0)