def test_as_tuple(self): identifier = str(0) origin = jit.Service( position=generate_one_position(), earliest=100, latest=200, duration=2, ) destination = jit.Service( position=generate_one_position(), earliest=1000, latest=2000, duration=20, ) capacity = 44 vehicle = jit.Vehicle(identifier, origin, destination, capacity) expected = ( ('identifier', identifier), ('origin', tuple(origin)), ('destination', tuple(destination)), ('capacity', capacity), ('timeout', vehicle.timeout), ) self.assertEqual(expected, tuple(vehicle))
def test_vehicle_with_final(self): identifier = str(0) origin = jit.Service( position=generate_one_position(), earliest=100, latest=200, duration=2, ) destination = jit.Service( position=generate_one_position(), earliest=1000, latest=2000, duration=20, ) vehicle = jit.Vehicle(identifier, origin, destination) self.assertEqual(identifier, vehicle.identifier) self.assertEqual(1, vehicle.capacity) self.assertEqual(origin, vehicle.origin) self.assertEqual(origin.position, vehicle.origin_position) self.assertEqual(origin.earliest, vehicle.origin_earliest) self.assertEqual(origin.latest, vehicle.origin_latest) self.assertEqual(origin.duration, vehicle.origin_duration) self.assertEqual(destination, vehicle.destination) self.assertEqual(destination.position, vehicle.destination_position) self.assertEqual(destination.earliest, vehicle.destination_earliest) self.assertEqual(destination.latest, vehicle.destination_latest) self.assertEqual(destination.duration, vehicle.destination_duration)
def test_construction_with_capacity(self): capacity = 3 service = jit.Service( position=generate_one_position(), earliest=1800, latest=3600, duration=60, ) identifier = str(0) vehicle = jit.Vehicle(identifier, service, capacity=capacity) self.assertEqual(identifier, vehicle.identifier) self.assertEqual(capacity, vehicle.capacity) self.assertEqual(service, vehicle.origin) self.assertEqual(service.position, vehicle.origin_position) self.assertEqual(service.earliest, vehicle.origin_earliest) self.assertEqual(service.latest, vehicle.origin_latest) self.assertEqual(service.duration, vehicle.origin_duration) self.assertEqual(service, vehicle.destination) self.assertEqual(service.position, vehicle.destination_position) self.assertEqual(service.earliest, vehicle.destination_earliest) self.assertEqual(service.latest, vehicle.destination_latest) self.assertEqual(service.duration, vehicle.destination_duration)
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 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, ) cls.routes = [ cls._build_route_1(vehicle, surface), cls._build_route_2(vehicle, surface), cls._build_route_3(vehicle, surface), ]
def generate_one_vehicle( capacity_min: int = 1, capacity_max: int = 3, earliest_min: float = 0, earliest_max: float = 86400, timeout: float = None, timeout_min: float = 14400, timeout_max: float = 28800, idx: int = 0, *args, **kwargs, ) -> jit.Vehicle: # TODO: Increase parameter options. capacity = randint(capacity_min, capacity_max) position = generate_one_position(*args, **kwargs) earliest = uniform(earliest_min, earliest_max) if timeout is None: timeout = uniform(timeout_min, timeout_max) latest = earliest + timeout origin = jit.Service(position=position, earliest=earliest, latest=latest) return jit.Vehicle(str(idx), origin, capacity=capacity)