def test_normalize(self):
        individual = Individual([Route(0, self.depots)])
        individual.normalize(100)

        self.assertGreater(len(individual.routes), 1)
        for route in individual.routes:
            self.assertTrue(route.sum_of_demands() <= 100)

        depots_in_individual = [depot for route in individual.routes for depot in route.depots]
        self.assertItemsEqual(depots_in_individual, self.depots)
 def test_insertion(self):
     depots = self.depots
     route = Route(0, list(depots))
     individual = Individual([route])
     individual.normalize(self.operators.settings.max_demand)
     self.operators.insertion(individual)