返回   MATLAB中国论坛|MATLAB爱好者之家—不仅仅是MATLAB! > 人工智能|模式识别|机器学习|数字图像处理|SAR图像处理-不仅仅是MATLAB! > 遗传算法(GA)


遗传算法(GA) A discussion board for Genetic Algorithm(GA)



回复
 
LinkBack 主题工具 显示模式
旧 2013-03-11, 09:38 AM   #1
初级会员
 
注册日期: 2013-03-11
帖子: 9
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
ai_hinemon 正向着好的方向发展
默认 MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求
ai_hinemon 当前离线   回复时引用此帖
旧 2013-03-11, 09:39 AM   #2
初级会员
 
注册日期: 2013-03-11
帖子: 9
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
ai_hinemon 正向着好的方向发展
默认 回复: MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

测试函数如:F=x^3-60*x^2+900*x+100;
真的很急,忘大神指教
ai_hinemon 当前离线   回复时引用此帖
旧 2013-03-11, 09:40 AM   #3
初级会员
 
注册日期: 2013-03-11
帖子: 9
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
ai_hinemon 正向着好的方向发展
默认 回复: MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

引用:
作者: ai_hinemon 查看帖子
MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

function[xv,fv]=GA(fitness,a,b,NP,NG,pc,pm,eps)
%待优化的目标函数:fitness
%自变量下界:a
%自变量上界:b
%种群个体数:NP
%最大进化代数:NG
%杂交概率c
%自变量概率m
%自变量离散精度:eps
%目标函数取最小值时的自变量值:xm
%目标函数的最小值:fv
ai_hinemon 当前离线   回复时引用此帖
旧 2013-03-11, 09:42 AM   #4
初级会员
 
注册日期: 2013-03-11
帖子: 9
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
ai_hinemon 正向着好的方向发展
默认 回复: MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

引用:
作者: ai_hinemon 查看帖子
function[xv,fv]=GA(fitness,a,b,NP,NG,pc,pm,eps)
%待优化的目标函数:fitness
%自变量下界:a
%自变量上界:b
%种群个体数:NP
%最大进化代数:NG
%杂交概率c
%自变量概率m
%自变量离散精度:eps
%目标函数取最小值时的自变量值:xm
%目标函数的最小值:fv
L=ceil(log2((b-a)/eps+1)); %根据离散精度,确定二进制编码需要的码长
x=zeros(NP,L);
for i=1:NP
x(i,=Initial(L);%种群初始化
fx(i)=fitness(Dec(a,b,x(i,,L)); %个体适应值
end
for k=1:NG
sumfx=sum(fx); %所有个体适应值之和
px=fx/sumfx; %所有个体适应值的平均值
ppx=0;
ppx(1)=px(1);
for i=2:NP %用于轮盘赌策略的累加
ppx(i)=ppx(i-1)+px(i);
end
for i=1:NP
sita=rand();
for n=1:NP
if sita<=ppx(n)
SelFather=n; %根据轮盘赌策略确定的父亲
break;
end
ai_hinemon 当前离线   回复时引用此帖
旧 2013-03-11, 09:43 AM   #5
初级会员
 
注册日期: 2013-03-11
帖子: 9
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
ai_hinemon 正向着好的方向发展
默认 回复: MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

引用:
作者: ai_hinemon 查看帖子
L=ceil(log2((b-a)/eps+1)); %根据离散精度,确定二进制编码需要的码长
x=zeros(NP,L);
for i=1:NP
x(i,=Initial(L);%种群初始化
fx(i)=fitness(Dec(a,b,x(i,,L)); %个体适应值
end
for k=1:NG
sumfx=sum(fx); %所有个体适应值之和
px=fx/sumfx; %所有个体适应值的平均值
ppx=0;
ppx(1)=px(1);
for i=2:NP %用于轮盘赌策略的累加
ppx(i)=ppx(i-1)+px(i);
end
for i=1:NP
sita=rand();
for n=1:NP
if sita<=ppx(n)
SelFather=n; %根据轮盘赌策略确定的父亲
break;
end
end
Selmother=floor(rand()*(NP-1))+1; %随机选择母亲
posCut=floor(rand()*(L-2))+1; %随机选择交叉点
r1=rand();
if r1<=pc %交叉
nx(i,1osCut)=x(SelFather,1osCut);
nx(i,(posCut+1):L)=x(Selmother,(posCut+1):L);
r2=rand();
if r2<=pm %变异
posMut=round(rand()*(L-1)+1);
nx(i,posMut)=~nx(i,posMut);
end
ai_hinemon 当前离线   回复时引用此帖
旧 2013-03-11, 09:45 AM   #6
初级会员
 
注册日期: 2013-03-11
帖子: 9
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
ai_hinemon 正向着好的方向发展
默认 回复: MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

引用:
作者: ai_hinemon 查看帖子
end
Selmother=floor(rand()*(NP-1))+1; %随机选择母亲
posCut=floor(rand()*(L-2))+1; %随机选择交叉点
r1=rand();
if r1<=pc %交叉
nx(i,1osCut)=x(SelFather,1osCut);
nx(i,(posCut+1):L)=x(Selmother,(posCut+1):L);
r2=rand();
if r2<=pm %变异
posMut=round(rand()*(L-1)+1);
nx(i,posMut)=~nx(i,posMut);
end
else
nx(i,=x(SelFather,;
end
end
x=nx;
for i=1:NP
ai_hinemon 当前离线   回复时引用此帖
旧 2013-03-11, 09:46 AM   #7
初级会员
 
注册日期: 2013-03-11
帖子: 9
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
ai_hinemon 正向着好的方向发展
默认 回复: MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

引用:
作者: ai_hinemon 查看帖子
else
nx(i,=x(SelFather,;
end
end
x=nx;
for i=1:NP
fx(i)=fitness(Dec(a,b,x(i,,L));%子代适应值
end
end
fv=-inf;
for i=1:NP
fitx=fitness(Dec(a,b,x(i,,L));
ai_hinemon 当前离线   回复时引用此帖
旧 2013-03-11, 09:47 AM   #8
初级会员
 
注册日期: 2013-03-11
帖子: 9
感谢他人: 0
有 0 帖获得 0 感谢
声望力: 0
ai_hinemon 正向着好的方向发展
默认 回复: MATLAB实现遗传算法 如何画出进化代数和适应值的图?急求

引用:
作者: ai_hinemon 查看帖子
fx(i)=fitness(Dec(a,b,x(i,,L));%子代适应值
end
end
fv=-inf;
for i=1:NP
fitx=fitness(Dec(a,b,x(i,,L));
if fitx>fv
fv=fitx; %取个体中的最好值作为最终结果
xv=Dec(a,b,x(i,,L);
end
end
function result=Initial(length) %初始化函数
for i=1:length
r=rand();
result(i)=round(r);
end
function y=Dec(a,b,x,L) %二进制编码转换为十进制编码
base=2.^((L-1):-1:0);
y=dot(base,x);
y=a+y*(b-a)/(2^L-1);
%[xv,fv]=GA(@fitness,0,30,50,100,0.9,0.04,0.01)
ai_hinemon 当前离线   回复时引用此帖
回复

书签

主题工具
显示模式

发帖规则
不可以发表新主题
可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 启用



所有时间均为北京时间。现在的时间是 11:23 PM


Powered by vBulletin
版权所有 ©2000 - 2017,Jelsoft Enterprises Ltd.
陕ICP备07001583号

SEO by vBSEO ©2009, Crawlability, Inc.