资源描述:
《r语言ga包的简介及相关代码示例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、R语言GA包的简介及相关代码示例GA包是为了在R语言的环境中实现基于遗传算法分析的工具,包GA提供了相当丰富内部函数供用户使用。GA包的主程序叫做ga,包含了下列主要参数:ga(type=c("binary","real-valued","permutation"),fitness,...,min,max,nBits,population=gaControl(type)@population,selection=gaControl(type)@selection,crossover=gaControl(type)@crossover,mutation=ga
2、Control(type)@mutation,popSize=50,pcrossover=0.8,pmutation=0.1,elitism=max(1,round(popSize*0.05)),monitor=gaMonitor,maxiter=100,run=maxiter,maxfitness=-Inf,names=NULL,suggestions,seed)其中,有效参数是:type:决定遗传算法分析的决策变量的类型,可能的值为:”binary”表示决策变量为二进制型;”real-valued”表示决策变量为实数型,即决策变量为浮点型实数;”pre
3、mutation”表示涉及到一个列表排序的问题的变量。fitness:表示适应性函数,任何一个可行的R的函数,只要它有着独立的函数名,都可以代表一个可行解,而且会返回一个描述适应度的数值。min,max:表示决策变量上下限的向量,在实数类型中,它代表着遗传算法搜索空间的范围。nBits:表示二进制编码的位数的值。population:用于随机产生初始种群的R函数selection:用于模拟自然选择过程的R函数,根据每一个个体的适应度从当前世代中挑选产生新的世代。pcrossover:表示交叉概率的值,默认概率为0.8pmutation:表示变异概率的值,默
4、认概率为0.1popSize:表示种群大小的量。elitism:表示在每一次种群更迭中最适应的个体存活下来的比例,默认设定为5%的个体会在更迭中存话而形成新的世代。monitor:将当前ga对象的状态作为输入值的函数,并显示搜索结果的进化过程。在默认状态下,函数gaMonitor会将每一次更迭结果的平均值与最适值显示出来。maxiter:表示最大迭代数。run:表示连续出现一定数目的未改善世代后,GA搜索终止。maxfitness:表示适应值的上限,满足后GA搜索终止。names:表示决策变量名的向量。suggestions:表示结果名称的字符串矩阵。se
5、ed:包含随机数生成器状态的整数向量。这个参数可以用来复制一个遗传算法搜索的结果。ga程序至少有type和fitness这两个参数。对于二进制搜索,则必须有nBits参数;对于实数类型的决策变量,则必须有min和max这两个参数。执行ga程序后,会返回一系列描述对象状态与结果的值,包括:iter:表示当前进行搜索的循环数。fitness:评价当前种群的适应度best:在每次GA搜索的循环中最大适应度值。mean:在每次GA搜索循环中平均适应度至。fitnessValue:GA搜索结束后最大的适应度值。solution:表示最终结果的矩阵,其行数为找到的最优
6、解个数,列数为决策变量的个数。要在R中调用GA包,首先要进行安装,输入以下代码:>install.packages("GA")安装完成后调用GA包,输入以下代码:>library(GA)调用完成后便可以使用GA包中的内置函数,以下是GA包在人口增长预测分析的实际应用,数据为非真实数据。以下为XX市1993-2007年人口数据(表一):单位:万人年份人口数199367.52199468.01199568.50199668.99199769.49199869.99199970.49200071.00200171.51200272.02200372.542004
7、73.06200573.59200674.12200773.65表一利用遗传算法对该市2010,2020,2030年人口数进行预测,程序代码如下所示:>library(GA)>t<-c(1993:2007)>populationN<-c(67.52,68.01,68.50,68.99,69.49,69.99,70.49,71.00,71.51,72.02,72.54,73.06,73.59,74.12,73.65)>functionP<-function(x,theta)+67.52*(1+theta)^(x-1993)>fitness1<-functio
8、n(x,y,theta)-sum((y-functionP(x,t