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

遗传算法(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

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值