def crossover(self, route_1, route_2):
        # YOUR CODE HERE

        child = Route(self.cities)
        initial_State = int(random.random() * len(route_1))
        final_State = int(random.random() * len(route_1))

        for k in range(0, len(child)):
            if (initial_State < final_State and k > initial_State
                    and k < final_State):
                child.assign_city(k, route_1.get_city(k))
            elif initial_State > final_State:
                if not (k < initial_State and k > final_State):
                    child.assign_city(k, route_1.get_city(k))

        for k in range(0, len(route_2)):
            if not child.__contains__(route_2.get_city(k)):
                for m in range(0, len(child)):
                    if (child.get_city(m) == None):
                        child.assign_city(m, route_2.get_city(k))
                        break

        return child