Пример #1
0
    def request(self, rider_id, lat, lng):
        minDistance, minDriverId = float('inf'), None
        for dId, loc in self.driver2Location.items():
            curDistance = Helper.get_distance(lat, lng, loc[0], loc[1])
            if minDistance > curDistance:
                minDistance, minDriverId = curDistance, dId

        trip = Trip(rider_id, lat, lng)
        trip.driver_id = minDriverId

        if minDriverId:
            self.driver2Trip[minDriverId] = trip
            del self.driver2Location[minDriverId]

        return trip
Пример #2
0
    def request(self, rider_id, lat, lng):
        # Write your code here
        dist = -1
        driver = -1
        for key, value in self.locs.items():
            td = Helper.get_distance(value[0], value[1], lat, lng)
            if dist == -1 or td < dist:
                dist = td
                driver = key

        trip = Trip(rider_id, lat, lng)
        trip.driver_id = driver
        if dist != -1:
            del self.locs[driver]
            self.trips[driver] = trip
        return trip
Пример #3
0
    def request(self, rider_id, lat, lng):
        # Write your code here
        minD = sys.maxsize
        closestD = None
        for driver in self.driverLocation.keys():
            if driver in self.trip:
                continue
            lat1, lng1 = self.driverLocation[driver]
            dis = Helper.get_distance(lat1, lng1, lat, lng)
            if dis < minD:
                minD = dis
                closestD = driver

        trip = Trip(rider_id, lat, lng)
        trip.driver_id = closestD
        self.trip[closestD] = trip
        return trip
Пример #4
0
    def request(self, rider_id, lat, lng):
        trip = Trip(rider_id, lat, lng)
        distance, driver_id = -1, -1

        for key, value in self.driver2Location.items():
            dis = Helper.get_distance(value.lat, value.lng, lat, lng)
            if distance < 0 or distance > dis:
                driver_id = key
                distance = dis

        if driver_id != -1:
            del self.driver2Location[driver_id]

        trip.driver_id = driver_id
        self.driver2Trip[driver_id] = trip

        return trip
Пример #5
0
    def request(self, rider_id, lat, lng):
        trip = Trip(rider_id, lat, lng)
        min_dist = float('inf')
        closest_driver_id = -1
        for driver_id, driver in self.drivers.items():
            dist = Helper.get_distance(lat, lng, driver.lat, driver.lng)

            if dist < min_dist:
                min_dist = dist
                closest_driver_id = driver_id

        print(dist, closest_driver_id)
        trip.driver_id = closest_driver_id
        self.trip_serial_id += 1
        self.trips[self.trip_serial_id] = trip
        self.drivers[closest_driver_id].trip_id = self.trip_serial_id

        return trip
Пример #6
0
    def request(self, rider_id, lat, lng):
        the_dvr_id = None
        min_distance = float("inf")
        for dvr_id, dvr in self.drivers.items():
            if dvr[2]:
                continue

            distance = Helper.get_distance(lat, lng, dvr[0], dvr[1])
            if distance < min_distance:
                min_distance = distance
                the_dvr_id = dvr_id

        if not the_dvr_id:
            return None

        trip = Trip(rider_id, lat, lng)
        trip.driver_id = the_dvr_id
        self.drivers[the_dvr_id][2] = trip
        return trip
Пример #7
0
 def request(self, rider_id, lat, lng):
     # Write your code here
     t = Trip(rider_id, lat, lng)
     min_diff = sys.maxint
     match_driver = []
     for driver in self.driver_id_to_location:
         driver_tuple = self.driver_id_to_location[driver]
         diff = Helper.get_distance(lat, lng, driver_tuple[0], driver_tuple[1])
         if diff < min_diff:
             min_diff = diff
             match_driver = [driver, driver_tuple[0], driver_tuple[1]]
     
     if len(match_driver) != 0:
         del self.driver_id_to_location[match_driver[0]]
         t.driver_id = match_driver[0]
         self.driver_id_to_trip[match_driver[0]] = t
         return t
     else:
         return None
Пример #8
0
 def request(self, rider_id, lat, lng):
     # create a trip first
     # find the closest available driver from self.driver2Location
     # if no driver return none, if yes, fill in trip driver_id,
     # remove from driver2Location, add to driver2Trip
     trip = Trip(rider_id, lat, lng)
     driver_id, distance = -1, -1
     for id, loc in self.driver2Location.items():
         dis = Helper.get_distance(lat, lng, loc.lat, loc.lng)
         if distance == -1 or dis < distance:
             distance = dis
             driver_id = id
     if driver_id == -1:
         print("No available drivers")
         return None
     trip.driver_id = driver_id
     self.driver2Trip[driver_id] = trip
     del self.driver2Location[driver_id]
     return trip
Пример #9
0
    def request(self, rider_id, lat, lng):
        if not rider_id:
            return
        trip = Trip(rider_id, lat, lng)
        _distance = distance = self.INFINITY
        driver_id = -1

        for _driver_id, _loc in self.driver_to_locs.items():
            _distance = Helper.get_distance(_loc['lat'], _loc['lng'], lat, lng)
            if _distance < distance:
                driver_id = _driver_id
                distance = _distance

        if driver_id == -1:
            return trip

        trip.driver_id = driver_id
        self.driver_to_trip[driver_id] = trip
        del self.driver_to_locs[driver_id]

        return trip
Пример #10
0
    def request(self, rider_id, lat, lng):
        # @param rider_id an integer
        # @param lat, lng rider's location
        # return a trip

        # find a closest driver
        closest_driver, closest_dist = None, sys.maxsize
        for driver, location in self.drivers2location.items():
            distance = Helper.get_distance(lat, lng, location[0], location[1])
            if distance < closest_dist:
                closest_driver = driver
                closest_dist = distance

        # create a trip with rider's information.
        trip = Trip(rider_id, lat, lng)
        # fill driver_id into this trip.
        trip.driver_id = closest_driver

        # mark this driver not available.
        del self.drivers2location[closest_driver]
        self.drivers2trip[closest_driver] = trip

        return trip