# How to use Sigma Scaling in a genetic algorithm

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?

• I think there is background missing here; you seem to assume some generic algorithm which binds some of your variable names. – Raphael Feb 3 '14 at 0:19

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.