GA4StratificationP4m: The mutation operation in genetic algorithm for the...

Description Usage Arguments Note Author(s) References See Also Examples

View source: R/GA4StratificationP4m.R

Description

This is the mutation operation in the Genetic Algorithm approach for the determination of the stratum boundaries and sample sizes in each stratum in stratified sampling with an GA Sample Allocation Scheme.

Usage

1
GA4StratificationP4m(mutationGeneration, numberOfStrata, mutationRate, it)

Arguments

mutationGeneration

The generation that will be crossovered and transfered to the next generation.

numberOfStrata

An integer: The number of strata.

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.

it

An integer: The number of the iteration

Note

This study is part of a project supported by the Scientific and Technological Research Council of Turkey (TUBITAK).

Author(s)

Sebnem Er, Timur Keskinturk, Charlie Daly

Maintainer: Sebnem Er <er.sebnem@gmail.com>

References

http://ideas.repec.org/a/eee/csdana/v52y2007i1p53-67.html

http://www.sciencedirect.com/science/article/B6V8V-4NHM520-1/2/a21e0295aa1616ff56da1ddf2c0ba1ac

See Also

GA4StratificationP4 GA4StratificationP4fit GA4StratificationP4fitt GA4StratificationP4x

GA4StratificationSelection randomnumGenerator

Examples

 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
## The function is currently defined as
function(mutationGeneration,numberOfStrata,mutationRate,it)
   {

   	rowOfMutationGeneration=nrow(mutationGeneration)
   	colOfMutationGeneration=ncol(mutationGeneration)
	c=colOfMutationGeneration-numberOfStrata
   	for ( i in 1:rowOfMutationGeneration)
   	{
    	   if ( runif(1,0,1) < mutationRate )
 	   {
		for ( k in 1:2 )
  		{
	         if ( runif(1,0,1) < 0.35 )
		   {
			if ( it<100 )
			{
	               ones=which(mutationGeneration[i,1:c]==1,arr.ind=TRUE)
      	         zeros=which(mutationGeneration[i,1:c]==0,arr.ind=TRUE)
            	   mutationPoint=ones[sample(1:(length(ones)-1),1)]
	               mutationPoint1=zeros[sample(1:length(zeros),1)]
	               mutationGeneration[i,mutationPoint]=0
	               mutationGeneration[i,mutationPoint1]=1
            	} else
			{ 
	               ones=which(mutationGeneration[i,1:c]==1,arr.ind=TRUE)
            	   mutationPoint=ones[sample(1:(length(ones)-1),1)]
                     if ( runif(1,0,1)<0.51 )
		         {
				if ( mutationGeneration[i,(mutationPoint+1)]==0 )
				{
					mutationGeneration[i,mutationPoint]=0
		    			mutationGeneration[i,(mutationPoint+1)]=1
              		}
			   } else if ( mutationPoint>1)
			   {
				if ( mutationGeneration[i,(mutationPoint-1)]==0 ) 
				{
				      mutationGeneration[i,mutationPoint]=0
				      mutationGeneration[i,mutationPoint-1]=1    
				}
			   }
			}
    		} else
		{
		   mutationPoint=sample((c+1):(c+numberOfStrata),1)
		   mutationPoint1=sample((c+1):(c+numberOfStrata),1)

	         while  ( mutationPoint == mutationPoint1 )
		   {
			mutationPoint=sample((c+1):(c+numberOfStrata),1)
		   	mutationPoint1=sample((c+1):(c+numberOfStrata),1)
		   }
     
               if (mutationGeneration[i,mutationPoint]>2 & mutationGeneration[i,mutationPoint1]>2)
		   {
			if (runif(1,0,1)< 0.51)
			{
				mutationGeneration[i,mutationPoint]=mutationGeneration[i,mutationPoint]-1
		      	mutationGeneration[i,mutationPoint1]=mutationGeneration[i,mutationPoint1]+1

           		} else
			{
		            mutationGeneration[i,mutationPoint]=mutationGeneration[i,mutationPoint]+1
		            mutationGeneration[i,mutationPoint1]=mutationGeneration[i,mutationPoint1]-1           
			}

 		   } else if (mutationGeneration[i,mutationPoint]==2 & mutationGeneration[i,mutationPoint1]>2)
		   {
			mutationGeneration[i,mutationPoint]=mutationGeneration[i,mutationPoint]+1
           		mutationGeneration[i,mutationPoint1]=mutationGeneration[i,mutationPoint1]-1

          	   } else (mutationGeneration[i,mutationPoint]>2 & mutationGeneration[i,mutationPoint1]==2)

	            mutationGeneration[i,mutationPoint]=mutationGeneration[i,mutationPoint]-1
       	      mutationGeneration[i,mutationPoint1]=mutationGeneration[i,mutationPoint1]+1
		   }
		}
	  }
	}
   return(mutationGeneration)
  }

GA4Stratification documentation built on May 30, 2017, 1:22 a.m.