[Tutor] Encoding and Decoding

Kent Johnson kent37 at tds.net
Tue Jan 2 19:52:50 CET 2007


Carlos wrote:

> The genetic algorithm that Im using (GA) generates solutions for a given 
> problem, expressed in a list, this list is composed by integers. Every 
> element in the list takes 8 integers, is a little messy but this is because
> 
> List [0] = Tens X position
> List [1] = Units X position
> List [2] = Decimals X position
> List [3] = If < than 5 the number is negative, else is positive
> 
> Then if the result is List = [6, 1, 2, 3] the X position equals -612.3. 
> This is the same for the Y position. If there are 10 elements the list 
> is going to be 80 integers long and if there are 100 elements, well you 
> get a very long list...
> 
> With this in mind my question would be, how can I keep track of this 
> information? I mean how can I assign this List positions to each 
> element? This is needed because this is going to be a long list and the 
> GA needs to evaluate the position of each element with respect to the 
> position of the other elements. So it needs to know that certain numbers 
> are related to certain element and it needs to have access to the size, 
> level, name and parent information... I hope that this is clear enough.

I will assume there is a good reason for storing the coordinates in this 
form...

Do the numbers have to be all in a single list? I would start by 
breaking it up into lists of four, so if you have 10 elements you would 
have a list of 20 small lists. It might make sense to pair the x and y 
lists so you have a list of 10 lists of 2 lists of 4 numbers, e.g.
[ [ [6, 1, 2, 3], [7, 2, 8, 4] ], ...]

Another thing to consider is whether you might want to make a class to 
hold the coordinate values, then you could refer to x.tens, x.units, 
x.decimal, x.sign by name.

If you need a single list for the GA to work, one alternative would be 
to make converters between the nested representation and the flat one. 
Alternately you could wrap the list in a class which provides helpful 
accessors.

HTH
Kent



More information about the Tutor mailing list