I'm trying to solve a logistics distribution routing problem. For example, there are x trucks that need to distribute y products from their respective starting point to respective destination.
Problems to solve:
- which product is delivered by which truck;
- in what order are the products getting picked up and dropped off.
What to achieve: (with different weights)
- minimal waiting time for one product to get picked up;
- minimal delivery time for each product.
After reading the DEAP documentation and their examples, I'm still not sure what would be a good way to implement this. Because for the problems 1 and 2 above, I have different selection, crossover, and mutation functions but it seems in DEAP you can only register one function in the toolbox for each?
Secondly, how do I implement the evaluation function here? The individual I defined is a class instance comprised of a dict of truck class instances, a dict of product class instances, a list of truck ids, a list of product ids, and a dict of product-truck combination options. The link between the individual and the evaluated value is not so straightforward, with one single evaluation function it's a bit hard (at least for me as a newbie). Thanks!