大连海事大学Matlab作业:案例及代码.docxVIP

大连海事大学Matlab作业:案例及代码.docx

  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文档。上传文档
查看更多
编码思路遗传算法是解决NP难问题时的一种较常规的方法,逻辑思路、算法流程、代码编写都较为成熟,但普遍性的算法效果却未必俱佳。针对不同的问题,编写合适的代码极其关键。本文属于VRP的变异问题,在此作者对影响算法效果的三个关键子函数详细阐述。染色体设计染色体是遗传迭代的基础,反映的是问题模型的解,编写满足解约束的染色体是关键。本文的决策变量较多,针对路径优化问题,由于本文中单点可被两条路径覆盖,不同于常规VRP编码。在此本文编码:for j=1:Kpop(i,(j-1)*J+1:(j-1)*J+J)=round(rand(1,J));end为了提高解的可行性,作者对上述编码进行修正,要求每个配送中心至少被覆盖一次。whilepop(i,j)+pop(i,J+j)+pop(i,2*J+j)+pop(i,3*J+j)+pop(i,4*J+j)==0pop(i,21:25)=round(rand(1,J));end针对供应点的取货问题,由于只有路径上供应点才能有取货量,且要保证取货量有一定限制,作者如下编码:for j=1:chromlengthif pop(i,j)==1p(i,j)=round(rand*(Q/2-1))+1; endend同时在计算染色体适应度时,由于对路径上货量和供应点提供量的约束较为严格,作者在算法中分别计算了两者货量h_sum和z_sum,编码如下:for i=1:popsizefor j=1:Jh_sum(i,j)=sum(p(i,J*(j-1)+1:J*(j-1)+J));%%路径上总运量h_sumendfor j=1:Jz_sum(i,j)=p(i,j)+p(i,J+j)+p(i,2*J+j)+p(i,3*J+j)+p(i,4*J+j);%%供应商总运量z_sumendend交叉操作:交叉操作紧接着是染色体选择操作,选择使得适应度较高的解进入子代,经过此步骤往往解集中在局部优化,而交叉操作有助于破除局部限制。由于RDC中心同时规划多条路径,所以多条路径方案交叉互换,有一定概率取得更优化解,作者编码如下:交叉次数取决于种群规模和交叉概率,amount1=round(popsize*pc)。接下来需要随机出种群中两个交叉染色体序号num2,num3,采用while语句保证num2与num3不等。 num2=round(rand*(popsize-1))+1; num3=round(rand*(popsize-1))+1;while num2==num3 num3=round(rand*(popsize-1))+1;end交叉前也需要确定路径段中交叉的区段,num4=round(rand*(J-2))+1。同时交叉路径选择方案和供应点取货量方案,交叉操作编码如下:temp1=pop2(num2,(num4-1)*J+1:(num4-1)*J+J); pop2(num2,(num4-1)*J+1:(num4-1)*J+J)=pop2(num3,(num4-1)*J+1:(num4-1)*J+J);pop2(num3,(num4-1)*J+1:(num4-1)*J+J)=temp1;%%路径交叉temp2=p2(num2,(num4-1)*J+1:(num4-1)*J+J); p2(num2,(num4-1)*J+1:(num4-1)*J+J)=p2(num3,(num4-1)*J+1:(num4-1)*J+J);p2(num3,(num4-1)*J+1:(num4-1)*J+J)=temp2;%%取货量交叉变异操作即使经过上述交叉操作,染色体解仍有陷入局部优化的可能,因为上述操作都是在已生成解的基础上,而变异操作不同。其选中种群中某条染色体,进行随机的基因突变,所以有一定概率产生全新的解,是遗传算法寻找全局最满意解的有利保障。首先确定变异次数,amount2=round(popsize*pm)。接着随机出种群中变异染色体序号num5,变异基因位置序号num6。 num5=round(rand*(popsize-1))+1; num6=round(rand*(chromlength-1))+1;由于编码采用0-1形式,变异时只需要0-1对调,同时需要保障解的可行性,编码如下if pop3(num5,num6)==0pop3(num5,num6)=1;p3(num5,num6)=round(rand*(Q/2-1))+1; endif pop3(num5,num6)==1pop3(num5,num6)=0;p3(num5,num6)=0;end实例验证某地区有一个RDC,从周围5个供应点循环取货。该中心有5辆载重卡车,载重限额12t,车辆的装

您可能关注的文档

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档