当前位置:   article > 正文

matlab chrom函数,遗传算法(GA)求解VRPTW问题MATLAB代码讲解(中)

matlab chrom函数

遗传算法(GA)求解VRPTW问题(附MATLAB代码)这篇推文中的链接失效,请各位小伙伴点击左下方阅读原文,提取代码( 提取码:2996)。

今天小编为大家继续讲解一下遗传算法(GA)求解VRPTW问题(附MATLAB代码)这篇推文中的MATLAB代码,这份代码一共包含35个函数,昨天讲解了前18个函数,今天咱们继续讲解。

19 | Fitness函数计算适应度值

因为目标函数越小越好,而在选择操作时需要将适应度值大的个体选择出来,所以这里我们将适应度函数设为惩罚函数的倒数。

%%      @作者:随心390%      @微信公众号:优化算法交流地%%% 适配值函数     %输入:%个体的长度%输出:%个体的适应度值function FitnV=Fitness(len)FitnV=1./len;

20 | Select函数选择操作

选择操作我们就采用轮盘赌选择,按照适应度值的大小选择若干个适应度值大的个体进行后续的交叉、变异以及局部搜索操作。

%%      @作者:随心390%      @微信公众号:优化算法交流地%%% 选择操作%输入%Chrom 种群%FitnV 适应度值%GGAP:选择概率%输出%SelCh  被选择的个体function SelCh=Select(Chrom,FitnV,GGAP)NIND=size(Chrom,1);NSel=max(floor(NIND*GGAP+.5),2);ChrIx=Sus(FitnV,NSel);SelCh=Chrom(ChrIx,:);

21 | Sus函数确认被选择个体的索引号

%%      @作者:随心390%      @微信公众号:优化算法交流地%% 输入:%FitnV  个体的适应度值%Nsel   被选择个体的数目% 输出:%NewChrIx  被选择个体的索引号function NewChrIx = Sus(FitnV,Nsel)% Identify the population size (Nind)[Nind,ans] = size(FitnV);% Perform stochastic universal samplingcumfit = cumsum(FitnV);trials = cumfit(Nind) / Nsel * (rand + (0:Nsel-1)');Mf = cumfit(:, ones(1, Nsel));Mt = trials(:, ones(1, Nind))';[NewChrIx, ans] = find(Mt < Mf & [ zeros(1, Nsel); Mf(1:Nind-1, :) ] <= Mt);% Shuffle new population[ans, shuf] = sort(rand(Nsel, 1));NewChrIx = NewChrIx(shuf);

2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/575687
推荐阅读
相关标签
  

闽ICP备14008679号