[Tutor] Problems with a Class
Carlos
carloslara at web.de
Sat Jan 13 12:02:02 CET 2007
Hello Again,
Looks like Im getting there now. I did this inside the GA module:
def update(self):
return self.entities
now Im putting it in my code:
def my_fitness(entity):
x = ga.update()
print 'X', x
fitness = 0.0
for i in entity:
if i == 1:
fitness += 1.0
return fitness
This fitness fuction sets the evaluation criteria. I does the job, but
there is a small problem, it returns too much information! for example
in generation 1 it gives:
X [[0, 0, 1, 1, 0, 1, 1, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 0, 0, 0,
1, 1, 0, 0, 0, 0]]
X [[0, 0, 1, 1, 0, 1, 1, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 0, 0, 0,
1, 1, 0, 0, 0, 0]]
X [[0, 0, 1, 1, 0, 1, 1, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 0, 0, 0,
1, 1, 0, 0, 0, 0]]
X [[0, 0, 1, 1, 0, 1, 1, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 0, 0, 0,
1, 1, 0, 0, 0, 0]]
X [[0, 0, 1, 1, 0, 1, 1, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 0, 0, 0,
1, 1, 0, 0, 0, 0]]
and in generation 2:
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [0, 0, 1, 1,
0, 1, 1, 0, 0, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 0, 0, 0,
1, 1, 0, 1, 1, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 1, 0, 0, 1, 0, 0, 1, 1, 1], [1, 0, 0, 0,
1, 1, 0, 1, 1, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 0, 1, 1, 0, 1, 1, 0, 0, 0], [1, 0, 0, 0,
1, 1, 0, 1, 1, 0]] ## Small change here
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 0, 1, 1, 0, 1, 1, 0, 0, 0], [1, 0, 0, 0,
1, 1, 0, 1, 1, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 0, 1, 1, 0, 1, 1, 0, 0, 0], [1, 0, 0, 0,
1, 1, 0, 1, 1, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 0, 1, 1, 0, 1, 1, 0, 0, 0], [1, 0, 0, 0,
1, 1, 0, 1, 1, 0]]
X [[1, 0, 0, 0, 1, 1, 0, 1, 1, 0], [1, 0, 1, 0, 0, 1, 1, 0, 1, 1], [0,
1, 0, 1, 1, 1, 1, 0, 1, 0], [0, 0, 1, 1, 0, 1, 1, 0, 0, 0], [1, 0, 0, 0,
1, 1, 0, 1, 1, 0]]
As you can see it is almost the same, the problem is that if I update my
3D objects with each list, the system becomes too slow because I'm
working with hundreds and even thousands of generations, and updating
geometry is not a vera fast process.
The question now would be, how to update my objects only if the new list
is different from the previous???
More information about the Tutor
mailing list