Hi Geoffrey,

I'm sorry but I have not had time to find a stable solution for diversification, I must conclude my thesis by April and I have not much time. For now I solved by calculating a value of penality in the move. But after graduation I will be happy to try to tackle the problem in a more efficient way :-)

Doing a bit of debugging I noticed that either do not exclude the right moves.

I try to explain better my problem. I have M vehicles and each has its own id (0, M-1). I have N customer and each of them has its own id (0,N-1). IDs are integer values.

A move is uniquely identified by a triple of integers: the id of the customer, the id of the source vehicle and the id of the target vehicle.

(Customer_id, source_route_id, destination_route_id)

when I make this move I would consider taboo all the moves that report the customer in the source vehicle.

If for example I have 5 vehicles and 20 customer a move could be:
(6,0,1)
so I would avoid all the moves of return, namely:
(6,1,0), (6,2,0), (6,3,0), (6,4,0);


I tried to do as you have suggested me (again if I understood correctly!)

 
public Collection <? extends Object> getTabuProperties () (
         
return Arrays. <Integer> asList (customer_id, source_route_id);
     
)
Only in this way excludes me all the moves that involve the customer and the vehicle source even if taken separately.
Ex: I esculde also draws (6,1,4) or (7,0,3)


Thank you from now for all the help you gave me already.

regards,
Marco