目录
1.算法描述
遗传算法 (Genetic Algorithm,GA) 是一种基于规律进化的随机优化搜索算法,该算法最早是由Holland在1975年提出的。遗传算法的主要优势是通过对目标对象进行优化操作,并通过基于概率的搜索方法,获得相应的搜索空间,因此GA算法具有较强的全局搜索能力。由于遗传算法特有的全局搜索能力,其被广泛使用在各个领域,包括信号处理,机器学习以及控制域等。遗传优化的主要算法流程图如下图所示:

遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。遗传算法的实现过程实际上就像自然界的进化过程那样。
遗传算法的一般步骤:
1.随机产生种群
2.根据策略判断个体的适应度,是否符合优化准则基于遗传算法的随机优化搜索,若符合,输出最佳个体及其最优解,结束。否则,进行下一步
3.依据适应度选择父母,适应度高的个体被选中的概率高,适应度低的个体被淘汰
4.用父母的染色体按照一定的方法进行交叉,生成子代
5.对子代染色体进行变异
由交叉和变异产生新一代种群,返回步骤2,直到最优解产生
基本遗传算法的具体过程如下:

2.仿真效果预览
matlab2022a仿真如下:




3.MATLAB核心程序
.........................................................
Lens = data(:,2);
NUM = length(Lens);%x,y
%间隔
SCALE= 45/60;%转换为小时
Sums = 29; %每一行的最大值不大于29
Sums2= 24; %每一行的总和不大于24
%纵坐标最大范围
Ymax = 24;
%放射变换
%根据遗传算法进行参数的拟合
MAXGEN = 400;
NIND = 2000;
Chrom = crtbp(NIND,NUM*10);
%49个变量的区间
Areas = [];
for i = 1:NUM
Areas = [Areas,[1;Ymax]];%最多24行
end
FieldD = [rep([10],[1,NUM]);Areas;rep([0;0;0;0],[1,NUM])];
Error = zeros(1,MAXGEN);
Error2 = zeros(1,MAXGEN);
for a=1:1:NIND
J(a,1) = 0;
end
Objv = (J+eps);
gen = 0;
while gen
%符合约束条件的进行输出
E = epls;
JJ(a,1) = E;
XX_{a} = Xs;
YY_{a} = Ys;
LL_{a} = Ls;
end
Objvsel=(JJ);
[Chrom,Objv]=reins(Chrom,Selch,1,0,Objv,Objvsel);
gen=gen+1;
Error(gen)=min(JJ);
if gen <= 64
Error2(gen) = mean(Error(1:gen));
else
Error2(gen) = mean(Error(gen-64:gen));
end
end
figure;
plot(Error2,'b-o');
xlabel('迭代次数');
ylabel('优化目标值');
grid on
%得到最优坐标
[V,I] = min(JJ);
X_opt = XX_{I};
Y_opt = YY_{I};
L_opt = LL_{I};
%画出甘特图
for i = 1:length(L_opt)
indx = find(Lens==L_opt(i))
NO2_(i)= indx(1);
end
figure;
for i=1:length(X_opt)
hold on;
plotRec(X_opt(i),X_opt(i)+L_opt(i),Y_opt(i));
text((X_opt(i)+X_opt(i)+L_opt(i))/2,Y_opt(i)-0.5,num2str(NO2_(i)));
end
xlabel('时间');
ylabel('序号');
title('甘特图');
02_053m
4.完整MATLAB
V
(编辑:通辽站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|