Description Usage Arguments Note Author(s) References See Also Examples
View source: R/GA4StratificationP4.R
This is the general function in Genetic Algorithm that initially generates a random generation and then applies the fitness function, selects, mutates and crossovers in order to obtain the best solution.
1 | GA4StratificationP4(dataName, numberOfStrata, sampleSize, iteration, GAgenerationSize, mutationRate)
|
dataName |
A string: The name of any type of numeric data containing the values of a univariate stratification variable. |
numberOfStrata |
An integer: The number of strata. |
sampleSize |
An integer: The total sample size. |
iteration |
An integer: The number of iterations in the Genetic Algorithm process. |
GAgenerationSize |
An integer: The number of the generations in the Genetic Algorithm process. |
mutationRate |
A numeric: The mutation rate in the Genetic Algorithm process. Mutation rate must be in between 0 and 1, inclusive. Small levels of mutation rate is preferable in Genetic Algorithm approach. |
This study is part of a project supported by the Scientific and Technological Research Council of Turkey (TUBITAK).
Sebnem Er, Timur Keskinturk, Charlie Daly
Maintainer: Sebnem Er <er.sebnem@gmail.com>
http://ideas.repec.org/a/eee/csdana/v52y2007i1p53-67.html
http://www.sciencedirect.com/science/article/B6V8V-4NHM520-1/2/a21e0295aa1616ff56da1ddf2c0ba1ac
GA4StratificationP4fit
GA4StratificationP4fitt
GA4StratificationP4m
GA4StratificationP4x
GA4StratificationSelection
randomnumGenerator
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | ## The function is currently defined as
function(dataName,numberOfStrata,sampleSize,iteration,GAgenerationSize,mutationRate)
{
dataName=data.frame(dataName)
dataName=data.frame(dataName[order(dataName[,1]),])
lengthData=nrow(dataName)
randomGeneration=array(0,dim=c(GAgenerationSize,lengthData+numberOfStrata))
nocrom=GAgenerationSize
fitp1=array(0,dim=c(1,nocrom))
fit=array(0,dim=c(nocrom,1))
N=means=s=n=vars=mas=NN=k=p=t=array(0,dim=c(nocrom,numberOfStrata))
dd=array(0,dim=c(nocrom,1))
randomNumbers=array(0,dim=c(GAgenerationSize,numberOfStrata-1))
samples=sumSamples=array(0,dim=c(GAgenerationSize,numberOfStrata))
aftermut=array(0,dim=c(GAgenerationSize,lengthData+numberOfStrata+1))
cumTotal=cumsum(dataName)
sumSquares=cumsum(dataName^2)
tableData=as.data.frame(table(dataName))
randomnumRange=cumsum(tableData[,2])
lengthRandomnum=length(randomnumRange)
for (i in 1:GAgenerationSize)
{
randomNumbers[i,]=randomnumGenerator(randomnumRange,lengthRandomnum,numberOfStrata-1)
samples[i,]=floor(runif(numberOfStrata,1,10))
sumSamples[i,]=sum(samples[i,])
}
samples=floor(samples/sumSamples*sampleSize)
son=array(lengthData,dim=c(GAgenerationSize,1))
indis=array(c(1:GAgenerationSize,randomNumbers,son),dim=c(GAgenerationSize,(numberOfStrata+1)))
for(i in 2:(numberOfStrata+1))
{
randomGeneration[indis[,c(1,i)]]=1
}
for ( i in 1:GAgenerationSize )
{
samples[i,numberOfStrata]=samples[i,numberOfStrata]+sampleSize-sum(samples[i,])
}
randomGeneration[,(lengthData+1):(lengthData+numberOfStrata)]=samples
bestValue=-99999999999999999999999999999999999999999999999999999999999999
for ( i in 1:iteration )
{
fitnessValueGeneration=GA4StratificationP4fit(randomGeneration,dataName,numberOfStrata,sampleSize,cumTotal,sumSquares,lengthData,dd,nocrom,fitp1,fit,N,means,s,n,vars,mas,NN,k,p,t)
if ( max(fitnessValueGeneration)>bestValue )
{
bestValue=max(fitnessValueGeneration)
bestGeneration=randomGeneration[max(which(fitnessValueGeneration==bestValue)),]
}
randomGeneration=GA4StratificationSelection(randomGeneration,fitnessValueGeneration)
randomGeneration=GA4StratificationP4x(randomGeneration,bestGeneration,dataName,numberOfStrata,sampleSize,fitnessValueGeneration,cumTotal,sumSquares,lengthData,dd,nocrom,fitp1,fit,N,means,s,n,vars,mas,NN,k,p,t)
randomGeneration=GA4StratificationP4m(randomGeneration,numberOfStrata,mutationRate,i)
fitnessValueGeneration=GA4StratificationP4fit(randomGeneration,dataName,numberOfStrata,sampleSize,cumTotal,sumSquares,lengthData,dd,nocrom,fitp1,fit,N,means,s,n,vars,mas,NN,k,p,t)
if ( max(fitnessValueGeneration)>bestValue )
{
bestValue=max(fitnessValueGeneration)
bestGeneration=randomGeneration[max(which(fitnessValueGeneration==bestValue)),]
} else
{
randomGeneration[sample(GAgenerationSize,1),]=bestGeneration
}
cat(i, " ",-bestValue,'\n')
flush.console()
Sys.sleep(1)
}
GA4StratificationP4fitt(bestGeneration,dataName,numberOfStrata,sampleSize,-bestValue,cumTotal,sumSquares)
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.