matlab自带遗传算法工具箱性能太差,因此采用外部工具箱来实现,具体安装方法请参考其他答案。
%% matlab_gatbx_test.m
%遗传算法求f(x)=x*sin(10*pi*x)+2.0,在[-1,2]上的最大值
figure(1);
fplot(@(variable)variable.*sin(10*pi*variable)+2.0,[-1,2]); %画出函数曲线
%定义遗传算法参数
NIND=40; %个体数目(Number of individuals)
MAXGEN=25; %最大遗传代数(Maximum number of generations)
PRECI=20; %变量的二进制位数(Precision of variables)
GGAP=0.9; %代沟(Generation gap)说明子代与父代的重复率为0.1
trace=zeros(MAXGEN,2); %寻优结果的初始值
FieldD=[20;-1;2;1;0;1;1]; %区域描述器(Build field descriptor),第2、3行为自变量的下界和上界
Chrom=crtbp(NIND, PRECI); %定义初始种群 % 此时为2进制
gen=0; %代计数器
variable=bs2rv(Chrom, FieldD); %计算初始种群的十进制转换 转为10进制
ObjV=shang(variable); %计算目标函数值
while gen |