HiveBrain v1.2.0
Get Started
← Back to all entries
snippetMinor

How to use Sigma Scaling in a genetic algorithm

Submitted by: @import:stackexchange-cs··
0
Viewed 0 times
scalinggeneticalgorithmsigmahowuse

Problem

I have a genetic algorithm in Java and I'm testing new types of selections.

For my tests I'm using the De Jong Half Sphere, my fitness function is $x^2 + y^2$.

The selection method used is Sigma scaling :

fscaled = S + (fraw −fmean)/2σ


Example using S=1

- a) Fitness = 5.927822124 |  After Scaling = 0.900756351532265  | 17.74410992 %
 - b) Fitness = 3.431749363 |  After Scaling = 0.5720553077878213 | 10.27246375 %
 - c) Fitness = 8.428103101 |  After Scaling = 1.2300115637030606 | 25.22835279 %
 - d) Fitness = 2.548825744 |  After Scaling = 0.455785494144756  | 7.629554871 %
 - e) Fitness = 13.07076638 |  After Scaling = 1.841391282832097  | 39.12551868 %


I know that sigma scaling should be used with a proportional selection.

-
Is this the right way to implement this type of selection?

-
If I wanted to minimize the function instead of maximize it how can I accomplish it, should I subtract the mean to each fitness and get the percentage this way or is there a better way?

Solution

Well I just tried this :

(1.0/f(x,y))+1.0

a) 21.37858466 | After the reciprocate | 1.046775781
b) 1.425432689 | After the reciprocate | 1.701541369
c) 15.48548031 | After the reciprocate | 1.064576621
d) 14.56668667 | After the reciprocate | 1.068649791
e) 41.0387647  | After the reciprocate | 1.024367205


With these new fitness I used S=1


fscaled = S + (fraw −fmean)/2σ

Mean = 1.181182154

Dev Std = 0.260649227

And this was my final result :

a) 0.742170015 | 14.8434003 %
b) 1.998198272 | 39.96396544 %
c) 0.776317134 | 15.52634267 %
d) 0.784130642 | 15.68261284 %
e) 0.699183937 | 13.98367874 %


These can be used with proportional selections.

I think this is the right way to use sigma scaling.
And I used the reciprocate plus one to make this a minimization problem.

Code Snippets

(1.0/f(x,y))+1.0

a) 21.37858466 | After the reciprocate | 1.046775781
b) 1.425432689 | After the reciprocate | 1.701541369
c) 15.48548031 | After the reciprocate | 1.064576621
d) 14.56668667 | After the reciprocate | 1.068649791
e) 41.0387647  | After the reciprocate | 1.024367205
a) 0.742170015 | 14.8434003 %
b) 1.998198272 | 39.96396544 %
c) 0.776317134 | 15.52634267 %
d) 0.784130642 | 15.68261284 %
e) 0.699183937 | 13.98367874 %

Context

StackExchange Computer Science Q#18418, answer score: 2

Revisions (0)

No revisions yet.