简单的遗传算法MATLAB实现(5)

2019-04-16 22:41

end

pop(i,mutate_pos) = 1 - pop(i, mutate_pos); end end cleari;

clearmutate_pos; 打印算法迭代过程: %打印算法迭代过程

%generation_size: 迭代次数

functionplotGA(generation_size) globalfitness_avg; x = 1:1:generation_size; y = fitness_avg; plot(x,y) 算法主函数: %遗传算法主函数 %pop_size: 输入种群大小 %chromo_size: 输入染色体长度 %generation_size: 输入迭代次数

%cross_rate: 输入交叉概率 %cross_rate: 输入变异概率 %elitism: 输入是否精英选择 %m: 输出最佳个体 %n: 输出最佳适应度 %p: 输出最佳个体出现代 %q: 输出最佳个体自变量值

function [m,n,p,q] = GeneticAlgorithm(pop_size, chromo_size, generation_size, cross_rate, mutate_rate, elitism)

global G ; %当前代

global fitness_value;%当前代适应度矩阵 global best_fitness;%历代最佳适应值 global fitness_avg;%历代平均适应值矩阵 global best_individual;%历代最佳个体 global best_generation;%最佳个体出现代

fitness_avg = zeros(generation_size,1);

disp \

fitness_value(pop_size) = 0.; best_fitness = 0.; best_generation = 0;

initilize(pop_size, chromo_size);%初始化 for G=1:generation_size

fitness(pop_size, chromo_size); %计算适应度

rank(pop_size, chromo_size); %对个体按适应度大小进行排序

selection(pop_size, chromo_size, elitism);%选择操作

crossover(pop_size, chromo_size, cross_rate);%交叉操作

mutation(pop_size, chromo_size, mutate_rate);%变异操作 end

plotGA(generation_size);%打印算法迭代过程 m = best_individual;%获得最佳个体 n = best_fitness;%获得最佳适应度

p = best_generation;%获得最佳个体出现代

%获得最佳个体变量值,对不同的优化目标,此处需要改写 q = 0.;

for j=1:chromo_size ifbest_individual(j) == 1 q = q+2^(j-1); end end

q = -1+q*(3.-(-1.))/(2^chromo_size-1); cleari; clear j;

2. 案例研究

对上一节中的函数进行优化,设置遗传算法相关参数,程序如下

functionrun_ga()

elitism = true;%选择精英操作 pop_size = 20;%种群大小

chromo_size = 16;%染色体大小 generation_size = 200;%迭代次数 cross_rate = 0.6;%交叉概率 mutate_rate = 0.01;%变异概率

[m,n,p,q] = GeneticAlgorithm(pop_size, chromo_size, generation_size, cross_rate, mutate_rate,elitism); disp \最优个体\m

disp \最优适应度\n

disp \最优个体对应自变量值\q

disp \得到最优结果的代数\p clear;

结果如下: \最优个体\


简单的遗传算法MATLAB实现(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:礼林镇2012年政府工作报告征求意见稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: