ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:51.50KB ,
资源ID:5310005      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5310005.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数学建模_贪婪算法_装箱练习及答案解析.doc)为本站会员(HR专家)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数学建模_贪婪算法_装箱练习及答案解析.doc

1、贪婪算法练习练习题 1:考虑 1、8、9、11 这四种面值的硬币,要找出币值 24 的零钱,怎么找能使硬币数最少? 利用 matlab 编程求解。解:设 为二进制变量,如果硬币 j 被选中,则, =1,否则 =0,xj xj j则找硬币问题的数学模型如下: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 个单位体积。降序首次适应算法 (FFD ):先将物体按长度从大到小排序,然后按 FF 算法对物体装箱.离线算法:如果算法在开始装箱之前,已经预先得到了所有物品的信息而一次性的确定装箱策略,这种算法就被称为离线算法。降序首次适应算法和降序最佳适应算法是两个重要的离线算法(排序即统筹了整个物品信息) 。这里的降序首次适应算法就是一种贪婪算法。FFD 算法:输入箱子的容积;输入物品体积;将体积从大到小顺序排序;%函数 sort(X)计算物品种数 n; %函数 length(X)预置 n 个可用箱子,给定每个箱子容积;预置已用箱子计数器 box_count 为 1;for i=1:n

3、%从已用的第一只箱子开始顺序寻找能放入物品 i 的箱子j;for j=1: box_countif 已用箱子都不能再放物品 I (一个物品Njxnij1只放在一个箱子里)另用一个箱子,并将物品 i 放入该箱子;box_count= box_count+1;else将物品 i 放入箱子 j;endendend装箱问题中最早被研究的是一维装箱问题。随着研究的深入,人们发现实际生活中更多存在的是一些带约束的装箱问题,因此也就抽象化出了,如二维装箱问题(条形装箱问题、剪裁问题) 、三维装箱问题、变容装箱问题、有色装箱问题、对偶装箱问题等等一系列的带约束的装箱问题。但是由于这些问题所与生俱来的复杂性,虽

4、然已经有一些研究成果发表了,但是其研究还是相当的困难。本文所讨论的还是一维装箱问题。此题程序: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,

5、n=size(w); %m 是 w 的行数 n 是 w 的列数x=zeros(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,

6、160,158,155,130,125,122,120,118,115,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

7、;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营业执照举报