1 / 3
文档名称:

遗传算法(二变量).doc

格式:doc   大小:34KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

遗传算法(二变量).doc

上传人:sxlw1984 2018/7/31 文件大小:34 KB

下载得到文件列表

遗传算法(二变量).doc

文档介绍

文档介绍:function ga_main()
% 遗传算法
% GA main program% Edited by Tan % Revision: % Date: 2009/07/09
% n-- 种群规模% ger-- 迭代次数% pc--- 交叉概率% pm-- 变异概率
% v-- 初始种群(规模为n)% f-- 目标函数值% fit-- 适应度向量
% vx-- 最优适应度值向量% vmfit-- 平均适应度值向量
clear all;
close all;
clc;%清屏
tic;%计时器开始计时
n=20;ger=100;pc=;pm=;%初始化参数
%以上为经验值,可以更改。
% 生成初始种群
v=init_population(n,44); %得到初始种群,22串长,生成20*22的0-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)); %sprintf可以控制输出格式
% 待优化问题
xmin=-3;xmax=3;ymin=-2;ymax=2; %变量X范围
f='(x.^2-2*x).*exp(-(x.^2+y.^2+x.*y))';
% 计算适应度,并画出初始种群图形
figure(1);%打开第一个窗口
[x,y]=meshgrid(-3::3,-2::2);
fit=eval(f);mesh(x,y,fit);%作图
grid on;hold on;
x=decode(v(:,1:22),xmin,xmax);
y=decode(v(:,23:44),ymin,ymax);%22位二进制换成十进制,%冒号表示对所有行进行操作。
%[x,y]=meshgrid(x,y)
fit=eval(f)%eval转化成数值型的%计算适应度
plot3(x,y,fit,'*');%作图
title('(a)染色体的初始位置');%标题
xlabel('x');ylabel('y)');%标记轴
% 迭代前的初始化
vmfit=[];%平均适应度
vx=[]; %最优适应度
it=1; % 迭代计数器
% 开始进化
while it<=ger %迭代次数%100代
%Reproduction(Bi-classist Selection)
vtemp=roulette(v,fit);%复制
%Crossover
v=crossover(vtemp,pc);%交叉
%Mutation
M=rand(N,L)<=pm;%
%M(1,:)=zeros(1,L);
v=v-2.*(v.*M)+M;%两个0-1矩阵相乘后M是1的地方V就不变,再乘以2.
%这里是点乘%变异
%Results
x=dec