发布时间:2023-03-05 13:30
1.遗传算法简单一元函数优化实例
利用遗传算法计算最大值
f(x)=x sin(10*pi*x)+2, x in [-1,2]
选择二进制编码,种群中个体数目为40,每个种群的长度为20,使用代沟为0.9,最大遗传代数为25。
下面为一元函数优化问题的MATLAB代码
figure(1);
fplot(\'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)
trace=zeros(2, MAXGEN); %寻优结果的初始值
FieldD=[20;-1;2;1;0;1;1]; %区域描述器(Build field descriptor)
Chrom=crtbp(NIND, PRECI); %初始种群
gen=0; %代计数器
variable=bs2rv(Chrom, FieldD); %计算初始种群的十进制转换
ObjV=variable.*sin(10*pi*variable)+2.0; %计算目标函数值
while genFitnV=ranking(-ObjV); %分配适应度值(Assign fitness values)
SelCh=select(\'sus\', Chrom, FitnV, GGAP); %选择
SelCh=recombin(\'xovsp\', SelCh, 0.7); %重组
SelCh=mut(SelCh); %变异
variable=bs2rv(SelCh, FieldD); %子代个体的十进制转换
ObjVSel=variable.*sin(10*pi*variable)+2.0; %计算子代的目标函数值
[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新种群
variable=bs2rv(Chrom, FieldD);
gen=gen+1; %代计数器增加
%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号
[Y, I]=max(ObjV);hold on;
plot(variable(I), Y, \'bo\');
trace(1, gen)=max(ObjV); %遗传算法性能跟踪
trace(2, gen)=sum(ObjV)/length(ObjV);
end
variable=bs2rv(Chrom, FieldD); %最优个体的十进制转换
hold on, grid;
plot(variable,ObjV,\'b*\');
figure(2);
plot(trace(1,:));
hold on;
docker win10专业版下 WSL 2 或 hyper-v 安装Docker Desktop
TypeScript 中 import type 与 import 的区别
java开源问卷调查系统源码_高效实用!开源调研问卷系统 DWSurvey,基于 JAVA WEB 开发...
Yolo系列将目标框的信息输出保存为txt文件(或其他文件)
2021-12-30大数据学习日志——Hadoop离线阶段——HDFS
windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器
【用pandas_alive几行代码绘制竞赛动图】二、专栏学习说明(配置好的venv虚拟环境+拿来即用测试代码+测试数据集+参数api解析)