模拟退火,贪婪算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模拟退火,贪婪算法

B5 孙月 第八次作业 仔细阅读文献《球度误差的网格搜索算法》,编程实现其实例验证部分,并与此文献的结果比较。 解: Matlab程序为: clear M load 第一题数据.txt ; P [-0.0047304,-0.0017027,0.0018167]; f 0.021; n 41; l 1; zuobiao zeros 70000,3 ;%创建m*n全零矩阵 for i 1:n x i P 1 -f/2+f* i-1 /n; for j 1:n y j P 2 -f/2+f* j-1 /n; for k 1:n z k P 3 -f/2+f* k-1 /n; for c 1:36 R c sqrt M c,1 -x i ^2+ M c,2 -y j ^2+ M c,3 -z k ^2 ; end Rmax l max R,[],2 ; Rmin l min R,[],2 ; W l Rmax l -Rmin l ; zuobiao l,: [x i ,y j ,z k ]; l l+1; end end end w sort W,2 ; %最大内接球法 Rout min Rmax,[],2 ; Oout zuobiao find Rmax Rout ,: rout Rmin find Rmax Rout ; Fout Rout-rout %最小外接球法 rin max Rmin,[],2 ; Oin zuobiao find Rmin rin ,: Rin Rmax find Rmin rin ; Fout Rin-rin %最小区域法 Farea min w,[],2 用贪婪算法和模拟退火算法分别求下面背包问题假设有12个物品,质量(磅)和价值(元)如下 2 5 18 3 2 5 10 4 11 7 14 6 5 10 13 4 3 11 13 10 8 16 7 4 包的最大容量为46磅,则应该装那些东西价值最大? 贪婪算法得到应该装入重量为2磅,5磅,5磅,3磅,2磅,4磅,7磅,6磅,10磅物品时价值最大为5+10+4+3+11+10+16++4+13 76元 Matlab程序如下: n 12;x zeros 1,n ; w [4 2 7 5 5 2 3 10 11 18 6 14];%排序后的 v [10 5 16 11 10 3 4 13 8 13 4 7]; tw 0;%已装入背包的重量; for i 1:n if tw+w i 46 tw tw+w i ; x i 1; end end tv sum v find x ; 模拟退火算法得到应该装入重量为2磅,5磅,2磅,5磅,10磅,4磅,11磅,7磅时价值最大为5+10+3+11+13+10+8+16 76元 Matlab程序为: clc,clear a 0.95 k [5;10;13;4;3;11;13;10;8;16;7;4]; k -k; % 模拟退火算法是求解最小值,故取负数 d [2;5;18;3;2;5;10;4;11;7;14;6]; n 12; sol_new ones 1,n ; % 生成初始解 E_current inf;E_best inf; % E_current是当前解对应的目标函数值(即背包中物品总价值); % E_new是新解的目标函数值; % E_best是最优解的 sol_current sol_new; sol_best sol_new; t0 97; tf 3; t t0; p 1; while t tf for r 1:100 %产生随机扰动 tmp ceil rand.*n ; sol_new 1,tmp ~sol_new 1,tmp ; %检查是否满足约束 while 1 q sol_new*d 46 ; if ~q p ~p; %实现交错着逆转头尾的第一个1 tmp find sol_new 1 ; if p sol_new 1,tmp 0; else sol_new 1,tmp end 0; end else break end end % 计算背包中的物品价值 E_new sol_new*k; if E_new E_current E_current E_new; sol_current sol_new; if E_new E_best % 把冷却过程中最好的解保存下来 E_best E_new; sol_best sol_new; end else if rand exp - E_new-E_current ./t E_curr

文档评论(0)

liudao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档