def setUp(self) -> None: self.vehicle = generate_one_vehicle() self.position = generate_one_position() stop0 = jit.Stop(self.vehicle, self.position, None) stop1 = jit.Stop(self.vehicle, generate_one_position(), stop0) stop0.following = stop1 stop2 = jit.Stop(self.vehicle, generate_one_position(), stop1) stop1.following = stop2 stop3 = jit.Stop(self.vehicle, generate_one_position(), stop2) stop2.following = stop3 stop4 = jit.Stop(self.vehicle, generate_one_position(), stop3) stop3.following = stop4 stops = [stop0, stop1, stop2, stop3, stop4] self.stops = stops self.route = jit.Route(self.vehicle, self.stops) self.planning = jit.Planning({self.route}) self.job = jit.Job(generate_trips(10), objective_cls=jit.DialARideObjective) self.fleet = jit.Fleet(generate_vehicles(10)) self.algorithm = jit.NaiveAlgorithm(self.fleet, self.job) self.result = jit.Result(self.algorithm, self.planning, computation_time=float(0.0))
def _build_route_3(cls, vehicle: jit.Vehicle, surface: jit.Surface) -> jit.Route: route = jit.Route(vehicle) trip = jit.Trip( identifier="TEST_3", origin=jit.Service( position=surface.get_or_create_position([0, 0]), earliest=1.0, latest=20.0, ), destination=jit.Service(position=surface.get_or_create_position( [10, 10]), ), timeout=1.0, ) pickup_stop = jit.Stop(vehicle, surface.get_or_create_position([0, 0]), route.current_stop) delivery_stop = jit.Stop(vehicle, surface.get_or_create_position([10, 10]), pickup_stop) planned_trip = jit.PlannedTrip( vehicle=vehicle, trip=trip, pickup=pickup_stop, delivery=delivery_stop, ) route.append_planned_trip(planned_trip) return route
def generate_one_route( feasible: bool = True, planned_trips_count: int = None, planned_trips_min: int = 1, planned_trips_max: int = 20, surface: jit.Surface = None, *args, **kwargs, ) -> jit.Route: if surface is None: surface = generate_one_surface(*args, **kwargs) if feasible: kwargs["timeout"] = float("inf") vehicle = generate_one_vehicle(surface=surface, *args, **kwargs) route = jit.Route(vehicle) if planned_trips_count is None: planned_trips_count = randint(planned_trips_min, planned_trips_max) for i in range(planned_trips_count): planned_trip = generate_one_planned_trip( feasible=feasible, vehicle=vehicle, previous_stop=route.current_stop, surface=surface, ) route.append_planned_trip(planned_trip) return route
def setUpClass(cls) -> None: surface = jit.GeometricSurface(jit.DistanceMetric.MANHATTAN) origin = jit.Service(surface.get_or_create_position([0, 0])) vehicle = jit.Vehicle( identifier="TEST", origin=origin, ) fleet = jit.Fleet({vehicle}) trips = [ jit.Trip( identifier="TEST_1", origin=jit.Service( position=surface.get_or_create_position([0, 0]), earliest=0.0, latest=10.0, ), destination=jit.Service( position=surface.get_or_create_position([1, 1]), ), ), jit.Trip( identifier="TEST_2", origin=jit.Service( position=surface.get_or_create_position([1, 1]), earliest=0.0, latest=20.0, ), destination=jit.Service( position=surface.get_or_create_position([10, 10]), ), ), ] job = jit.Job(set(trips), jit.DialARideObjective) route = jit.Route(vehicle) pickup_stop = jit.Stop(vehicle, surface.get_or_create_position([0, 0]), route.current_stop) delivery_stop = jit.Stop(vehicle, surface.get_or_create_position([1, 1]), pickup_stop) cls.planned_trip = jit.PlannedTrip( vehicle=vehicle, trip=trips[0], pickup=pickup_stop, delivery=delivery_stop, ) route.append_planned_trip(cls.planned_trip) cls.stop = route.stops[1] conjecture = jit.TailInsertionStrategy() cls.route = conjecture.compute(route, trips[1])[0] cls.planning = jit.Planning({cls.route}) cls.algorithm = jit.NaiveAlgorithm(fleet, job) cls.result = jit.Result(cls.algorithm, cls.planning, 0.0)
def test_route(self): vehicle = generate_one_vehicle() route = jit.Route(vehicle) self.assertIsInstance(route.identifier, str) self.assertEqual(list(), list(route.planned_trips)) self.assertEqual(vehicle, route.vehicle)