遗传算法中选择算子的问题clear all;close all;%ParametersSize=80; G=100; CodeL=10;umax=2.048;umin=-2.048;E=round(rand(Size,2*CodeL)); %Initial CodeGG1=zeros(1,G);%用来保存适应值;Y=zeros(2,G);%用来保存x值%Main Programfor k=1:1:

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/20 14:45:50
遗传算法中选择算子的问题clearall;closeall;%ParametersSize=80;G=100;CodeL=10;umax=2.048;umin=-2.048;E=round(rand(

遗传算法中选择算子的问题clear all;close all;%ParametersSize=80; G=100; CodeL=10;umax=2.048;umin=-2.048;E=round(rand(Size,2*CodeL)); %Initial CodeGG1=zeros(1,G);%用来保存适应值;Y=zeros(2,G);%用来保存x值%Main Programfor k=1:1:
遗传算法中选择算子的问题
clear all;
close all;
%Parameters
Size=80;
G=100;
CodeL=10;
umax=2.048;
umin=-2.048;
E=round(rand(Size,2*CodeL)); %Initial Code
GG1=zeros(1,G);%用来保存适应值;
Y=zeros(2,G);%用来保存x值
%Main Program
for k=1:1:G
time(k)=k;
for s=1:1:Size
m=E(s,:);
y1=0;y2=0;
%Uncoding
m1=m(1:1:CodeL);
for i=1:1:CodeL
y1=y1+m1(i)*2^(i-1);
end
x1=(umax-umin)*y1/1023+umin;
Y(1,k)=x1;
m2=m(CodeL+1:1:2*CodeL);
for i=1:1:CodeL
y2=y2+m2(i)*2^(i-1);
end
x2=(umax-umin)*y2/1023+umin;
Y(2,k)=x2;
%F(s)=100*(x1^2-x2)^2+(1-x1)^2;%这个就是所对应的适应值函数
F(s)=10*sin(sqrt(x1.^2+x2.^2))./sqrt(1+x1.^2+x2.^2);
end
Ji=1./F;
%
fi_sum=sum(fi)
fi_Size=(Oderfi/fi_sum)*Size
fi_S=floor(fi_Size) %Selecting Bigger fi value
kk=1;
for i=1:1:Size
for j=1:1:fi_S(i) %Select and Reproduce
TempE(kk,:)=E(Indexfi(i),:);
kk=kk+1; %kk is used to reproduce
end
end
就是选择这里不懂,

遗传算法中选择算子的问题clear all;close all;%ParametersSize=80; G=100; CodeL=10;umax=2.048;umin=-2.048;E=round(rand(Size,2*CodeL)); %Initial CodeGG1=zeros(1,G);%用来保存适应值;Y=zeros(2,G);%用来保存x值%Main Programfor k=1:1:
首先介绍sort函数用法:
[B,I]=sort(A,.),I为返回的排序后元素在原数组中的行位置或列位置.B一般为排序后的数组.举例:
A = 3 4 2
1 5 3
4 7 1
[B,I]=sort(A)
B = 1 4 1
3 5 2
4 7 3
I = 2 1 3
1 2 1
3 3 2
[Oderfi,Indexfi]=sort(fi),因此这句话中的Oderfi保存了从小到大排列的结果,而Indexfi保存了Oderfi中对应原始数组(fi)的的原始位置.
fi_Size=(Oderfi/fi_sum)*Size 这句话挺难理解的,不过我运行了这个程序后,还是被我发现了
其中Oderf为 适应值 由小到大排列,fi_sum为适应值的总和,Size为总的个数,而fi_sum/size就是平均值,因此.fi_size中所存放的数据是Oderf中数值除以其平均值后的结果.其中必有大于1的,小于1的.我们这里的淘汰规则是淘汰掉 种群中小于平均值的数据,下边的代码是对这个规则的具体化
fi_S只包含0和1,其中0是小于平均值的个体,1是大于平均值的个体.
for j=1:1:fi_S(i) %Select and Reproduce
TempE(kk,:)=E(Indexfi(i),:);
kk=kk+1; %kk is used to reproduce
end
E中保存的是初始种群,我们每一代种群中都会有80个个体(每一行是一个个体,列数决定了个体范围和精度),当fi_S中某个个体(记为个体A)不是0的时候,就执行了TempE(kk,:)=E(Indexfi(i),:);
这句代码,Indexfi保存了个体A在E中的行数(也就是fi的列数),我们认定这一行(这个个体A)具有优良基因,因此保存在TempE中,进化到下一代.
好久没看遗传算法了,上边的有些术语是我自己编的,看懂就好
还有,你的程序不完全,你能把这个完整的遗传算法代码给我吗,我感觉这个程序写的很简洁,非常好.我的邮箱[email protected]
另外你用这个程序算做什么?一般智能算法解决解决问题具有随机性,因此很难对误差做出评价,这也是应用受到阻碍的主要原因,如果在解决具体问题的时候,还是优先考虑定量算法的.
希望我的回答对你有所帮助.

遗传算法中选择算子中选择次数的问题!看图如图中红色圈圈标出,这个到底是怎么得到的! 在遗传算法中,什么是选择算子,什么是交叉算子,什么是变异算子?遗传算法到底是个什么情况? 遗传算法中选择算子的问题clear all;close all;%ParametersSize=80; G=100; CodeL=10;umax=2.048;umin=-2.048;E=round(rand(Size,2*CodeL)); %Initial CodeGG1=zeros(1,G);%用来保存适应值;Y=zeros(2,G);%用来保存x值%Main Programfor k=1:1: 遗传算法中交叉算子的数学表达~. 遗传算法中如何选择优秀个体的算法 遗传算法中,选择算子选出的个体是直接进入下一代还是进入交叉变异过程?没选中的个体又怎样了, 在遗传算法中“算子”有什么作用? 遗传算法 算子有哪些 遗传算法十进制编码的交叉 算子应该是多少 为什么交叉算子决定遗传算法的全局搜索能力,变异算子决定遗传算法的局部搜索能力 遗传算法中的遗传算子的作用,其是如何影响寻优的? 遗传算法算子请问 是把优秀的选出来参加后面的交叉和变异吗?那么选择算子是用来做什么的,这个概率是用来操控什么的?变异算子和交叉算子有是用来做什么的呢?我发现我的程序里面交叉 关于遗传算法选择算子的一个疑问有关书籍上对于选择操作的介绍如下:首先用rand ()函数产生0~1间的选择算子,当适度累计值不为零时,比较各个体所占总的适应度百分比的累计和与选择算 遗传算法中的锦标赛选择算法的思想是什么?锦标赛选择算法的具体思想是什么?希望能举例说明下! 为什么在多目标优化时选择遗传算法,而不用其他算法?在结构参数优化时,为什么在多目标优化时可以选择遗传算法,而不用其他算法?遗传算法相对其他算法的优点? 数学建模中模型和算法是一样的吗?就像遗传算法,它是模型吗?还是它是用来解决规划问题的算法?急 遗传算法的应用 遗传算法的作用?