本站首页    管理页面    写新日志    退出

公告

宿命宽恕轮回修仙


我的分类(专题)

日志更新

最新评论

留言板

链接

-----------数据挖掘-----------

Data Mining Community's Top Resource(KDnuggets)
Information Management(DMReview)
STATISTICA Software(StatSoft)
IIR USA(CRM Community)
Editor's Picks(CustomerThink)
Data Mining Group
ACM SIGKDD(DM顶级国际会议)
SourceForge.NET(Open Source Software)

SAS
SPSS
KXEN
WEKA
AlphaMiner
RapidMiner

中国万维网联盟(W3CHINA)
中国统计网
数据库专委会
数据挖掘研究院(China Data Mining Research)
LAMDA机器学习与数据挖掘研究组
北京大学计算语言学研究所
北京大学Dlib组
哈工大信息检索研究室论坛
神威学术资源中心

CRMSKY
数据挖掘学习交流论坛
计算机科学论坛
数据分析论坛
Weka中文站
R语言中文论坛
SAS中文论坛

ECT 584

-----------同行博客-----------

数据挖掘者(IDMer)
数据挖掘青年(DMman)
数据挖掘斗士(DMFighter)
神威异度空间
一维空间
不准阁
不断学习
欧燊怡
Datamining&BI
王义
Koala++

-----------学者信息-----------

Jiawei Han(韩家炜)
张鹏
曾元顯
吴俊杰

-----------回忆过去-----------

www.5im.cn
www.ustbhrm.com
www.finance3399.cn
www.xueyuanlu.cn
www.ccesr.com
econometrics.buaa.edu.cn

 


Blog信息
blog名称:宿命宽恕轮回修仙
日志总数:18
评论数量:3
留言数量:0
访问次数:114881
建立时间:2009年3月18日

«September 2025»
123456
78910111213
14151617181920
21222324252627
282930




[Matlab](转)Matlab遗传算法工具箱函数及实例讲解
文章收藏,  软件技术

宿命宽恕轮回修仙 发表于 2009/6/5 19:15:59

核心函数:(1)function [pop]=initializega(num,bounds,eFN,eOps,options)--初始种群的生成函数【输出参数】pop--生成的初始种群【输入参数】num--种群中的个体数目bounds--代表变量的上下界的矩阵eFN--适应度函数eOps--传递给适应度函数的参数options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B],如precision--变量进行二进制编码时指定的精度F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度)(2)function [x,endPop,bPop,traceInfo] = ga(bounds,FN,Ops,startPop,opts,...termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遗传算法函数【输出参数】x--求得的最优解endPop--最终得到的种群bPop--最优种群的一个搜索轨迹【输入参数】bounds--代表变量上下界的矩阵FN--适应度函数Ops--传递给适应度函数的参数startPop-初始种群opts[epsilon prob_ops display]--opts(1:2)等同于initializega的options参数,第三个参数控制是否输出,一般为0。如[1e-6 1 0]termFN--终止函数的名称,如['maxGenTerm']termOps--传递个终止函数的参数,如[100]selectFN--选择函数的名称,如['normGeomSelect']selectOps--传递个选择函数的参数,如[0.08]xOverFNs--交叉函数名称表,以空格分开,如['arithXover heuristicXover simpleXover']xOverOps--传递给交叉函数的参数表,如[2 0;2 3;2 0]mutFNs--变异函数表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']mutOps--传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为0.95,变异概率为0.08【程序清单】 %编写目标函数 function[sol,]=fitness(sol,options)x=sol(1);=x+10*sin(5*x)+7*cos(4*x);%把上述函数存储为fitness.m文件并放在工作目录下 initPop=initializega(10,[0 9],'fitness');%生成初始种群,大小为10[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',...[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遗传迭代 运算借过为:x =7.8562 24.8553(当x为7.8562时,f(x)取最大值24.8553)注:遗传算法一般用来取得近似最优解,而不是最优解。 遗传算法实例2【问题】在-5<=Xi<=5,i=1,2区间内,求解 f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。 【分析】种群大小10,最大代数1000,变异率0.1,交叉率0.3【程序清单】 %源函数的matlab代码 function []=f(sol)numv=size(sol,2);x=sol(1:numv);=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;%适应度函数的matlab代码 function [sol,]=fitness(sol,options)numv=size(sol,2)-1;x=sol(1:numv);=f(x);=-;%遗传算法的matlab代码 bounds=ones(2,1)*[-5 5];[p,endPop,bestSols,trace]=ga(bounds,'fitness')注:前两个文件存储为m文件并放在工作目录下,运行结果为 p =0.0000 -0.0000 0.0055大家可以直接绘出f(x)的图形来大概看看f(x)的最值是多少,也可是使用优化函数来验证。matlab命令行执行命令: fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9])


阅读全文(4650) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144809931 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号