收藏 分享(赏)

贪婪算法装箱问题等练习.doc

上传人:sjmd695 文档编号:7200401 上传时间:2019-05-09 格式:DOC 页数:4 大小:47.50KB
下载 相关 举报
贪婪算法装箱问题等练习.doc_第1页
第1页 / 共4页
贪婪算法装箱问题等练习.doc_第2页
第2页 / 共4页
贪婪算法装箱问题等练习.doc_第3页
第3页 / 共4页
贪婪算法装箱问题等练习.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、贪婪算法练习练习题 1:考虑 1、8、9、11 这四种面值的硬币,要找出币值 24 的零钱,怎么找能使硬币数最少? 利用 matlab 编程求解。解:设 为二进制变量,如果硬币 j 被选中,则, =1,否则 =0,xj xjj则找硬币问题的数学模型如下:min ;njj1;mnjjxv1用贪婪算法求解,其 MATLAB 程序如下:function n,x=payback(v,y,m)m,n=size(y);for i=1:nfor j=1:n练习题 2:利用 matlab 编程 FFD 算法完成下题:设有 6 种物品,它们的体积分别为:60、45、35、20、20 和 20 单位体积,箱子的容

2、积为100 个单位体积。function nbox,p=sjy(n,v,limitv)m,n=size(v);w=limitv*ones(m,n);p=zeros(n);nbox=0;for i=1:nfor j=1:iif v(i)cl break%待放入包的物品重量大于包的重量,跳出循环else x(i)=1;%x(i)为 1 时,物品 i 在包中cl=cl-w(i);p=p+1;%p 记录放入背包物品的个数endendfunction knapsack(n,limitw,w,v)totalc=0;totalw=0;m,n=size(w); %m 是 w 的行数 n 是 w 的列数x=ze

3、ros(m,n);t=w;%记录原数组 k=c;y=x;p,c,w=goodsinknapsack(n,limitw,v,w,x);%排序及计算装箱物品数for j=1:p%装包的 p 件物品for i=1:n%原 n 件物品if (w(j)=t(i)endendendyfor i=1:ntotalc=totalc+k(i)*y(i);%背包的总价值if y(i)=1totalw=totalw+t(i);%背包所装载总体积endendtotalwtotalcv=220,208,198,192,180,180,165,162,160,158,155,130,125,122,120,118,115

4、,110,105,101,100,100,98,96,95,90,88,82,80,77,75,73,72,70,69,66,65,63,60,58,56,50,30,20,15,10,8,5,3,1;w=80,82,85,70,72,70,66,50,55,25,50,55,40,48,50,32,22,60,30,32,40,38,35,32,25,28,30,22,50,30,45,30,60,50,20,65,20,25,30,10,20,25,15,10,10,10,4,4,2,1;limitw=1000;n=50;knapsack(n,limitw,w,v);运行结果为:y =Columns 1 through 16 1 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1Columns 17 through 32 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0Columns 33 through 48 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0Columns 49 through 50 0 0totalw =996totalc =3095结果分析:由运行结果可知,被选中的物品编号为向量 y 中的 1,其所选物品总价值为 3095,总体积为 996;贪婪算法并不一定能得到最优解,但可以得到一个较好的解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报