GeneticAlgorithmA


Requirements for this test


History 2007


Please set rand = Random(123456) before proceeding with GeneticAlgorithmA performance tests.
I think testing with -Xint (no hotspot - interpreter only) gives us more stable results and let us better compare performance.
Done on pcMy

Test No.
Date/Revision
Used Time in sec (Time in Properties)
Used Problem
set
Startevaluation
Generation
(on first run/ 2nd+more)
Evaluation
JVM Options
Database
ConfigurationNo
Changed Code?
10
09.10/330
1. 60
2. 178
gstpl
829
1. 85/n.p.
2. 270
1. -
2. -
-Xint
db4o
3
AbstractProperties
9
07.10/328
1. 60
2. 60
3. 178
gstpl
829
1. 750/n.possible
2. 86
3. 280
1. 178
2. -
3. -
1.-server
2.-Xint
3.-Xint
db4o
3
use of YearSet.isAssignedToAll
8
06.10/327
60
gstpl
829
700/not possible
227
-server
db4o
3
enhanced YearSet implementations
7
01.10/318
63 (60)
gstpl
829
410
261
-server
db4o
3
problem: we
changed getBitSet to toBitSet in YearSetImpl1 (rev259 to rev261)
6
15.08/227
1. 63 (60)
2. 59
3. 178
gstpl
829
1. 514/650
2. 72
3. 235
257/230
1.-server
2.-Xint
3.-Xint
db4o
3
1. embedded server
2. print the evaluation not every generation, but every second.
3. Age of best is 180/200
5
28.07./178
60*10 (600)
gstpl
825
4450
150
-server
db4o
3
-
4
28.07./178
60 (60)
gstpl
825 (don't sort db objects so this not the same as in 3)
495
239
-server
db4o
3
-
3
28.07./178
60 (60)
gstpl
829
916
359
-server
db4o
1
pGaps = 5 (default)
2
26.07./177
58 (60)
lse-f-91
69522
55
53000
-server
db4o
2
pGaps = 0
1
15.07./158
60 (60)
gstpl
ca. 830
980
309 (WARNING: formula changes, see changed code!!)
-server
db4o
1
new formula, but for person and room similar changed '2 *':
(1 * (pGaps / allPersons.size() +
                    2 * pMaxGaps)
 5 * (pCollision / allPersons.size() +
                    2 * pMaxCollision))

Configuration No.
#parents
#children
#changed TI's
mutationRate
roomChangeRate
startTimeChangeRate
dayChangeRate
bestIndivCorrected?
3 (result from 23+27.07.07 parameter combination tests)
80
150
80
1
0.5
0.6
80
yes
2
8
50
10
10
10
10
100
yes
1
8
50
10
10
1
10
5
yes

30.07

I run the same again (on the same pc75) all results stay but the best and is different:

Number
Mean Evaluation
RmsError of Evaluation
Mean Generation
#TIs
#children
#parents
mutationRate
startTime
roomRate
dayRate
928
190
4
628
120
160
80
0.8
1
0.1
90

28.07

With other parameter combination I tried it on pc75 again:
paramCombi-26-07-07.tar.gz

The best result was:

Number
Mean Evaluation
RmsError of Evaluation
Mean Generation
#TIs
#children
#parents
mutationRate
startTime
roomRate
dayRate
987
194
7.1
665
80
160
80
0.8
0.1
1
90

Statistics was made over the best 20 results [mean, RmsError]:
Parameter
Possible Values
Occured Values
Mean
RmsError
Comment
#children
80, 100, 120, 140, 160, 180
100, 120, 160, 180
154
26
140 comes not until 64
80 comes not until 188
mutationRate
0.1
0.8
1.5
0.8
1.5
1.0
0.3
0.1 comes not until 41
dayRate
10, 50, 90
50, 90
84
14
10 comes not until 150
startTime, (0.1 and 1) #parents (80 and 120), #TI's (80 and 120) have no tendency
For roomRate (0.1, 1, and 10) it seems to be that smaller values are better.

23.07

I run some parameter combinations (See IAlgorithmTest) and here are the results:
paramCombi-23-07-07.tar.gz.

See the column header for more information (The first column 'Number' has no meaning and Mean = Mean(Evaluation)).
The qualitative results are nearly the same if we add an offset (approx. 40) to the slower machines results. You can easily import these files and view them with my nlo project, which uses the same genvlin plotter as gstpl but comes with pnuts as its script engine.

Here are the important parameters:
The parameters: #TI's, startTimeRate, mutationRate and #parents have no tendency.

This is the best result (pc 75) was:
Number
Mean Evaluation
RmsError of Evaluation
Mean Generation
#TIs
#children
#parents
mutationRate
startTime
roomRate
dayRate
2109
256
8.8
1171
100
100
100
0.5
0.5
0.5
50.0

The mean values of all good values (evaluation < 340) of every column were.
Number
Mean Evaluation
RmsError of Evaluation
Mean Generation
#TIs
#children
#parents
mutationRate
startTime
roomRate
dayRate
-
290 (+-38)
33 (+-33)
1336 (+-611)
39 (+-45)
84 (+-35)
37 (+-40)
17 (+-22)
16 (+-21)
10 (+-18)
31 (+-22)
where the value in brackets was the rms error

If I would include all values not only the good ones we will get the Mean (and RMSError) for


19.07 revision 167

Today I compared sun's jvm with ibms on pcMy. With and without the -server option:
ibmVsSun.jpg



The y axis shows the generation reached in 2 minutes, so higher is better.

15.07 revision 158

Within 1 minute algorithm reaches 189 from 490 with GeneticAlgoProperties.xml == Config,No.1. After generation 800 on pcMy.

13.07. revision 156

no call to _checkGaps() in WeekTISetImpl1._getGaps()
changed new ArrayList<TimeInterval>(getTIs) to getTis()

07.07. revision 153

no explicit countgap and eval started from 490;

21.05.

eval started from 490
4 min 20s: generation 4000 has eval=???
5 min: generation 4480 has eval=172;

06.05.

eval started from 490
5 minutes: generation 4000 has eval=188;
???: generation 4480 has eval=172

14.04.

eval decreases from 976 to 889 in 58 sec (347 generations)
(there was a bug in eval, so beginning eval is far away from 490)