- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 2 遗传算法 ——解决0-1背包问题 北京科技大学物流工程系 2013.6.11 实例一: 问题描述 假设:背包最大重量为300,物品的数量为10, 物品的价值:[95 75 23 73 50 22 6 57 89 98], 物品的重量:[89 59 19 43 100 72 44 16 7 64] Matlab代码 参数初始化,导入本问题的物品的价值和重量数据,并设定背包最大重量。 wei=[9575 23 73 50 22 6 57 89 98]; val=[89 59 19 43 100 72 44 16 7 64]; w=300; %总重量约束值 随机产生数量为30的种群。生成30*10的0-1矩阵。 So =round(rand(30,10)); So=hardlim(So); %So为随机产生的矩阵,值为0或1 [ZQ,Y] = size(So); 迭代次数为50代,交叉概率为90%,变异概率为5%. ds = 50; pc = 0.9; pm = 0.05; 设置适应度函数,利用惩罚函数降低不合格解的适应度,惩罚因子设为1.5. pu=1.5; syd =So*val-pu*So*val./(So*wei).*((So*wei-w)0).*(So*wei-w); figure(1); hold on; 用轮盘赌进行选择操作,用选择出的个体构成的种群替代旧的种群 better1=1; ip = 1; updatef=-10; %betterl为当前算出的总价值,ip为代数 whileip= ds fori=1:ZQ fi(i)=syd(i)-min(syd)+1; end fori=1:ZQ sp(i)=fi(i)/sum(fi); end fori=2:ZQ sp(i)=sp(i-1)+sp(i); end fori=1:ZQ p=rand(1); sindex=1; while p sp(sindex) sindex=sindex+1; end newSo(i,:)=So(sindex,:); end fori=1:ZQ So(i,:)=newSo(i,:); end 设置的交叉概率pc为90%,产生要配对的父代的序号,经过50次顺序调换,将原有顺序打乱,使相邻两个个体作为交叉的父代 fori=1:ZQ weiindex(i)=i; end fori=1:ZQ point=unidrnd(ZQ-i+1); temp=weiindex(i); weiindex(i)=weiindex(i+point-1); weiindex(i+point-1)=temp; end fori=1:2:ZQ p=rand(1); if(ppc) point=unidrnd(Y-1)+1; for j=point:(Y-1) ch=So(weiindex(i),j); So(weiindex(i),j)=So(weiindex(i+1),j);So(weiindex(i+1),j)=ch; end end end 设置变异的概率为5%,产生50*10的0-1矩阵,对1的位置进行变异 M=rand(ZQ,Y)=pm; So=So-2.*(So.*M)+M; 产生精英染色体,you1是适应度最大的染色体,you2为适应度最小的染色体,最优解为不超过背包容量的适应度最大的syd2数组,better3即为每代的最优值,并用粉色星号画出来。 syd =So*val-pu*So*val./(So*wei).*((So*wei-w)0).*(So*wei-w); [better1,you1] = max(syd); ifupdatef=better1 better1=updatef; So(you1,:)=updatec; end updatef=better1; updatec=So(you1,:); [better2,you2] = min(syd); So(you2,:) = So(you1,:); syd =So*val-pu*So*val./(So*wei).*((So*wei-w)0).*(So*wei-w); media = mean(syd); ip = ip + 1; syd2 =So*val-So*val.*((So*wei-w)0); [better3,you3] = max(syd2); plot(ip,better3,-*m); end; 将最优值和参数显示出来。 syd2 =So*val-So*v
有哪些信誉好的足球投注网站
文档评论(0)