大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
Matlab遗传算法实例
- 确定目标函数
- 初始化种群
- 2进制(染色体)与10进制(数值)转换
- 选择(轮盘赌法)
- 交叉(交叉原则)
- 变异(变异概率)
- 选择…
clear;
clc;
%popsize=input('输入种群大小:\n');
%lengh=input('请输入染色体长度:\n');
popsize=100;
lengh=10;
a=-1;
b=2;
%y=x*sin(10*pi*x)+1.0
%初始种群
pop=round(rand(popsize,lengh));%行:种群大小,列:染色体长度
%二进制转换十进制
[px,py]=size(pop);
for i=1:py
pop1(:,i)=2^(py-i).*pop(:,i);
end
pop2=sum(pop1,2);
%对应的实数 目标值
vpop=pop2*((b-a)/(2^(lengh)-1))-1.0;
x=vpop;
y=sin(10*pi*x).*x+1;
% m=1;
% m=m+1;
% S=zeros(100,1);
% S(m,1)=max(y);
%选择 适者生存
for i=1:px
cpoint=round(rand*(px-10));
A=y(cpoint:cpoint+9,:);
[Y,U]=max(A);
j=U+cpoint-1;
newpop(i,:)=pop(j,:);
end
pop=newpop;
%交叉
newpop=ones(size(pop));
pc=0.6;%交叉概率
for i=1:2:px-1
if(rand<pc)
cpoint=round(rand*py);
newpop(i,:)=[pop(i,1:cpoint),pop(i+1,cpoint+1:py)];
newpop(i+1,:)=[pop(i+1,1:cpoint),pop(i,cpoint+1:py)];
else
newpop(i,:)=pop(i,:);
newpop(i+1,:)=pop(i+1,:);
end
end
%变异
%newpop=ones(size(pop));
pb=0.02;
%newpop=pop;
for i=1:px
if (rand<pb)
cpoint=round(rand*py);
if newpop(i,cpoint)==0
newpop(i,cpoint)=1;
else
newpop(i,cpoint)=0;
end
end
end
pop=newpop;
%实验报告
%s生产种群
%二进制转十进制
%交叉 实验题目 实验内容 实验代码 实验结果
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194509.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...