遗传算法的matlab初步实现
2018.7.20 做了7个小时,终于搞出来了一个可行的遗传算法 本遗传算法用于实现了 这比昨天的粒子群算法复杂多了。。 而且出了一大堆问题。。。 不过呢。。写完就好。。。哈哈哈
主函数部分
clear;
clc;
popsize=20;%种群大小
chromlength=10;%二进制编码长度
pc = 0.7;%交叉概率
pm = 0.005;%变异概率
pop = initpop(popsize,chromlength);%初始种群
for i = 1:2000 % 迭代次数
[objvalue] = calobjvalue(pop); %计算目标函数
fitvalue = calfitvalue(objvalue); %计算适应度值(函数值)
[newpop] = selection(pop,fitvalue); % 选择操作
[newpop] = crossover(newpop,pc); %交叉操作
[newpop] = mutation(newpop,pm); %变异操作
[bestindividual,bestfit] = best(newpop,fitvalue); %更新种群
%寻找最优解
y(i)=max(bestfit);
n(i)=i;
pop5=bestindividual;
x(i)=decodechrom(pop5,1,chromlength)*10/1023;
pop=newpop;
end
fplot(@(x)9.*sin(5.*x)+8.*cos(4.*x))
hold on
plot(x,y,'r')
hold off
function [besti