@eouti Thanks for the kind words. Usually, the transfer between the usual float vector optimization and a more realistic model is done through a genotypic <=> phenotypic translation. On the first hand, the phenotype is used for evaluation. It is the complex object that is the answer to your problem. The genotype, on the other hand, is the simpler object that is manipulated by the optimization algorithm. Since programmer time is much more costly than machine time, a translation phase in the evaluation function between a simple vector representation and your model is the ideal case. It will save you time and you will be able to use already implemented (and tested!) operators. Just as example, instead of trying to optimize a permutation of prime numbers, it is much simpler to optimize a permutation of integers (say [0, 1, 2, 3]) and, at evaluation time, translate them to primes using their index ([2, 3, 5, 7]). You can most often do the same with floats vectors.