遗传算法求函数f=x+10*sin(5*x)+7*cos(4*x)的最大值(详细分析) |
您所在的位置:网站首页 › 遗传算法求解函数最小值过程 › 遗传算法求函数f=x+10*sin(5*x)+7*cos(4*x)的最大值(详细分析) |
🌞欢迎来到智能优化算法的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🌠本阶段属于筑基阶段之一,希望各位仙友顺利完成突破 📆首发时间:🌹2021年9月22日🌹 ✉️希望可以和大家一起完成进阶之路! 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢! 🍓训练部分 二、代码如下(示例):1.f = randi([0,1],NP,L) % 随机获得初始种群 50(NP)行20(L)列,每一行代表一个个体,每个个体有20个基因。 2.编码 %% 将二进制解码为定义域范围内十进制%% for i = 1:NP //从第1个个体到第50个个体 U = f(i,:); //第i行全部元素,代表一个个体 m = 0; for j=1:L m = U(j)*2^(j-1)+m; //二进制解码为定义域范围内十进制m,m代表一个个体 end x(i)=Xx+m*(Xs-Xx)/(2^L-1); //编码精度,第i个个体的x的值 Fit(i) = func1(x(i)); //计算每i个体对应的适应度的值 end maxFit = max(Fit); %最大值 minFit = min(Fit); %最小值 rr = find(Fit==maxFit); fBest = f(rr(1,1),:); % 历代最优个体fBest(1*20)代表最优个体 xBest = x(rr(1,1)); %最优个体对应x的值 Fit = (Fit-minFit)/(maxFit-minFit); % 归一化适应度(把适应度变成0~1之间的数) Fit代表50个个体的适应度 rr = find(Fit==maxFit);rr表示第几个个体是最优个体 3.%% 基于轮盘赌的复制操作%% %% 基于轮盘赌的复制操作%% sum_Fit = sum(Fit); //50个个体归一化适应度的和 fitvalue = Fit./sum_Fit; //(1*50)代表50个个体被选择的概率 fitvalue = cumsum(fitvalue) % 累计 //(1*50)计算累加概率 ms = sort(rand(NP,1)); % 排序 //产生(50*1)0~1之间的随机数 fiti = 1; newi = 1; while newi |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |