% Short road GA main program
% Edited by tan
% Revision: 1.0
% Date: 2009/07/09
% n ---- 种群规模
% ger ---- 迭代次数
% pc ---- 交叉概率
% pm ---- 变异概率
% v ---- 初始种群(规模为n)
% f ---- 目标函数值
% fit ---- 适应度向量
% vx ---- 最优适应度值向量
% vmfit ---- 平均适应度值向量
clear all;
close all;
clc;
tic;
% 生成初始种群
%power=[0 5 3 100 100 100 100 100;
% 100 0 100 1 3 6 100 100;
% 100 100 0 100 8 7 6 100;
% 100 100 100 0 100 100 100 8;
% 100 100 100 100 0 100 100 5;
% 100 100 100 100 100 0 100 3;
% 100 100 100 100 100 100 0 3;
% 100 100 100 100 100 100 100 0];
power=[0 5 3 100 100 100 100 100 100 100 100 100 100 100 100 100;
100 0 100 1 3 6 100 100 100 100 100 100 100 100 100 100;
100 100 0 100 8 7 6 100 100 100 100 100 100 100 100 100;
100 100 100 0 100 100 100 6 8 100 100 100 100 100 100 100;
100 100 100 100 0 100 100 3 5 100 100 100 100 100 100 100;
100 100 100 100 100 0 100 100 3 3 100 100 100 100 100 100;
100 100 100 100 100 100 0 100 8 4 100 100 100 100 100 100;
100 100 100 100 100 100 100 0 100 100 2 2 100 100 100 100;
100 100 100 100 100 100 100 100 0 100 100 1 2 100 100 100;
100 100 100 100 100 100 100 100 100 0 100 3 3 100 100 100;
100 100 100 100 100 100 100 100 100 100 0 100 100 3 5 100;
100 100 100 100 100 100 100 100 100 100 100 0 100 5 2 100;
100 100 100 100 100 100 100 100 100 100 100 100 0 6 6 100;
100 100 100 100 100 100 100 100 100 100 100 100 100 0 100 4;
100 100 100 100 100 100 100 100 100 100 100 100 100 100 0 3;
100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 0];
[PM PN]=size(power);
n=100;
ger=200;
pc=0.9;
pm=0.01;
% 生成初始种群
v=init_population(n,PN);
v(:,1)=1;
v(:,PN)=1;
[N,L]=size(v);
disp(sprintf('Number of generations:%d',ger));
disp(sprintf('Population size:%d',N));
disp(sprintf('Crossover probability:%.3f',pc));
disp(sprintf('Mutation probability:%.3f',pm));
% 计算适应度,并画出图形
fit=short_road_fun(v,power);
figure(1);
grid on;
hold on;
plot(fit,'k*');
title('(a)染色体的初始位置');
xlabel('x');
ylabel('f(x)');
% 初始化
vmfit=[];
it=1;
vx=[];
%C=[];
% 开始进化
while it<=ger
%Reproduction(Bi-classist Selection)
vtemp=short_road_roulette(v,fit);
%Crossover
v=short_road_crossover(vtemp,pc);
%Mutation
M=rand(N,L)<=pm;
%M(1,:)=zeros(1,L);
v=v-2.*(v.*M)+M;
v(:,1)=1;
v(:,end)=1;
%Results
fit=short_road_fun(v,power);
[sol,indb]=min(fit);
v(1,:)=v(indb,:);
media=mean(fit);
vx=[vx sol];
vmfit=[vmfit media];
it=it+1;
end
%%%% 最后结果
disp(sprintf('\n')); %空一行
% 显示最优解及最优值
disp(sprintf('Shortroad is %s',num2str(find(v(indb,:)))));
disp(sprintf('Mininum is %d',sol));
v(indb,:)
% 图形显示最优结果
figure(2);
grid on;
hold on;
plot(fit,'r*');
title('染色体的最终位置');
xlabel('x');
ylabel('f(x)');
% 图形显示最优及平均函数值变化趋势
figure(3);
plot(vx);
title('最优,平均函数值变化趋势');
xlabel('Generations');
ylabel('f(x)');
hold on;
plot(vmfit,'r');
hold off;
runtime=toc
且行好事莫问前程
- 粉丝: 2w+
- 资源: 443
最新资源
- Annotations_Train_abstract_v002.zip
- ap5030dn-openwrt-ath79-generic-huawei-ap5030dn-initramfs-kernel
- 华为AP无线接入控制器学习资料
- 金铲铲S13双城之战自动拿牌助手2.0
- Sigrity Power SI 仿真分析教程与实例分析.rar
- 基于Vue和JavaScript的掌上生活超市小程序配送解决方案设计源码
- 基于Java和安卓基础知识的简易记事本设计源码
- 基于SaToken轻量级Java权限认证的XrSaTokenVue Vue设计源码
- 基于Java语言的RxTool设计源码集合
- PHP性能检测扩展XHProf与FirePHP线上调试工具详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈