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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(贪婪算法-装箱问题等练习.doc)为本站会员(g****t)主动上传,蜗牛文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蜗牛文库(发送邮件至admin@wnwk.com或直接QQ联系客服),我们立即给予删除!

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

1、贪婪算法练习练习题1:考虑1、8、9、11这四种面值的硬币,要找出币值24的零钱,怎么找能使硬币数最少? 利用matlab编程求解。解:设为二进制变量,如果硬币j被选中,则,=1,否则=0,则找硬币问题的数学模型如下:min ;用贪婪算法求解,其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单位体积,箱子的容积为100个单位体积。function nbox,p=sjy(n,v,limitv

2、)m,n=size(v);w=limitv*ones(m,n);p=zeros(n);nbox=0;for i=1:n for j=1:i if v(i)w(j) w(j)=w(j)-v(i);p(i,j)=1;break; else continue; end w(j+1)=w(j+1)-v(i);p(i,j+1)=1; nbox=nbox+1; endend运行结果:p = 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0练习题3:如果把选择策略从“选出一个下标最小的箱子并把物品ai放入该箱子中”

3、(FF算法)改为选择最佳的箱子(已装载物品大小和最大的这个称为best fit-BF最佳适应算法),再计算一次上题。比较两次求解的结果。练习题4:背包问题:c=10,5,15,7,6,18,3;w=2,3,5,7,1,4,1;limitw=15;n=7;求最优解。练习题5:“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:vi = 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, 1wi = 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

5、, 15, 10, 10, 10, 4, 4, 2,1。模型的建立:设为二进制变量,如果物品j被选中,则=1,否则,=0,如此可将本题转化为如下优化模型:max ;s.t. 模型的解决:对此优化问题,我们可以选用价值密度贪婪准则,从剩下的物品中选择可装入购物车的单位价值,最大的物品,即按非递增的次序装入物品,只要正被考虑的物品装的进就装入小车。其MATLAB编程代码如下:function a1,b1=sort1(n,a,b)%按单位价值排序m,n=size(a);d=zeros(m,n);for k=1:n d(k)=a(k)/b(k);end%单位价值for h=1:n-1 for j=1:

6、n-h%向后排序 if d(j)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=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%

7、原n件物品 if (w(j)=t(i)&(c(j)=k(i)%被选择的物品装箱 y(i)=1; end endend yfor i=1:n totalc=totalc+k(i)*y(i);%背包的总价值 if y(i)=1 totalw=totalw+t(i);%背包所装载总体积 endendtotalwtotalcv=220,208,198,192,180,180,165,162,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,

8、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 1 Columns 17 through 32 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 Columns 33 through 48 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 Columns 49 through 50 0 0totalw = 996totalc = 3095结果分析:由运行结果可知,被选中的物品编号为向量y中的1,其所选物品总价值为3095,总体积为996;贪婪算法并不一定能得到最优解,但可以得到一个较好的解。

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:浙ICP备2024059924号-2