遗传算法
addpath('D:\matlab\.m文件夹\.m机器学习文件\遗传算法\gatbx');%增加包遗传算法的包
%fplot('varible.*sin(10*pi*varible)+2.0',[-1,2]);%画出函数曲线
fplot(@(varible)varible.*sin(10.*pi.*varible)+2.0);%画出函数曲线
NIND=50;%定义个体数目
MAXGEN=25;%定义最大遗传代数
PRECI=22;%变量的二进制位数 2-(-1)=3/0.0000001
GGAP= 0.9;%代沟,在生成的后代中,保留百分之90,去掉百分之10的不优良的后代。
trace=zeros(2,MAXGEN);%寻优结果的初始值
FieldD=[22;-1;2;1;0;1;1];%区域描述器 转化为二进制
Chrom=crtbp(NIND,PRECI);%初始群体
gen=0;%代计数器
varible=bs2rv(Chrom,FieldD);%计算初试群体的十进制转换,二进制转化为十进制
ObjV=varible.*sin(10*pi*varible)+2.0;%计算目标函数值
while gen<MAXGEN
FitnV= ranking(-ObjV);%分配适应度值
SelCh=select('sus',Chrom,FitnV,GGAP);%选择
SelCh=recombin('xovsp', SelCh,0.7); %重组
SelCh=mut(SelCh); %变异
varible=bs2rv(SelCh,FieldD);%子代个体的十进制转换
ObjVSel=varible.*sin(10*pi*varible)+2.0;%讣算子代的目标函数值
[Chrom ObjV