def test_step(self): a = Taxi() a._drift_prob = 0.0 (r, ns, terminal) = a.step(np.array([1, 0, 0, 0]), 0) self.assertEqual((r, ns.tolist(), terminal), (-1, [1, 0, 0, 0], False)) (r, ns, terminal) = a.step(np.array([1, 0, 0, 0]), 1) self.assertEqual((r, ns.tolist(), terminal), (-1, [1, 0, 1, 0], False)) (r, ns, terminal) = a.step(np.array([1, 0, 0, 0]), 2) self.assertEqual((r, ns.tolist(), terminal), (-1, [1, 0, 0, 0], False)) (r, ns, terminal) = a.step(np.array([1, 0, 0, 0]), 3) self.assertEqual((r, ns.tolist(), terminal), (-1, [1, 0, 0, 1], False)) (r, ns, terminal) = a.step(np.array([2, 0, 0, 0]), 4) self.assertEqual((r, ns.tolist(), terminal), (-1, [2, 4, 0, 0], False)) (r, ns, terminal) = a.step(np.array([0, 4, 1, 1]), 4) self.assertEqual((r, ns.tolist(), terminal), (-10, [0, 4, 1, 1], False)) (r, ns, terminal) = a.step(np.array([0, 4, 1, 0]), 5) self.assertEqual((r, ns.tolist(), terminal), (-10, [0, 4, 1, 0], False)) (r, ns, terminal) = a.step(np.array([0, 4, 0, 0]), 5) self.assertEqual((r, ns.tolist(), terminal), (20, [0, 0, 0, 0], True))
def main(): mytaxi = Taxi("Crown Victoria", 100) mytaxi.drive(40) print("Taxi Information\n {}\n Current Fare: ${}".format( mytaxi, mytaxi.get_fare())) mytaxi.start_fare() print("Taxi Information\n {}\n Current Fare: ${}".format( mytaxi, mytaxi.get_fare()))
def init_taxis(self): taxis = [] taxi_types = len(self.capacities) for capacity in self.capacities: for x in range(round(self.n_taxi / taxi_types)): taxis.append(Taxi(x, self, capacity)) return taxis
def test_can_move(self): a = Taxi() self.assertFalse(a.can_move([0, 1], [0, 2])) self.assertFalse(a.can_move([0, 2], [0, 1])) self.assertFalse(a.can_move([1, 1], [1, 2])) self.assertFalse(a.can_move([1, 2], [1, 1])) self.assertFalse(a.can_move([3, 0], [3, 1])) self.assertFalse(a.can_move([3, 1], [3, 0])) self.assertFalse(a.can_move([4, 0], [4, 1])) self.assertFalse(a.can_move([4, 1], [4, 0])) self.assertFalse(a.can_move([3, 2], [3, 3])) self.assertFalse(a.can_move([3, 3], [3, 2])) self.assertFalse(a.can_move([4, 2], [4, 3])) self.assertFalse(a.can_move([4, 3], [4, 2]))
def main(): taxi_list = [ Taxi("Prius", 100), SilverServiceTaxi("Limo", 100, 2), SilverServiceTaxi("Hummer", 200, 4) ] my_taxi = None totalbill = 0 flag = True print("Let's drive!") while flag: print("Menu:") print("q) quit") print("c) choose taxi") print("d) drive)") menuoption = input(">>>") if (menuoption == "D" or menuoption == "d"): if not (my_taxi in taxi_list): my_taxi = taxi_list[0] print(my_taxi) curr_trip_distance = int(input("Drive how far?")) my_taxi.start_fare() curr_distance_driven = my_taxi.drive(curr_trip_distance) totalbill += my_taxi.get_fare() print("Your {} trip cost you ${:.2f}".format( my_taxi.name, my_taxi.get_fare())) print("Bill to date : ${:.2f}".format(totalbill)) elif (menuoption == "c" or menuoption == "C"): print("Taxis available:") for i in range(len(taxi_list)): print(taxi_list[i]) taxioption = int(input("Choose Taxi: ")) my_taxi = taxi_list[taxioption] print("Bill to date: ${:.2f}".format(totalbill)) second_flag = True while second_flag: if not (0 <= taxioption < len(taxi_list)): print("Invalid Option Try Again..!!") else: my_taxi = taxi_list[taxioption] second_flag = False elif (menuoption == "q" or menuoption == "Q"): print("Total Trip Cost: ${:.2f}".format(totalbill)) flag = False else: print("Invalid Menu Choice")
def system_init(): print('type: {}'.format(type(osm_map))) # sub_graph = osm_map.subgraph([4548141057, 4548141062, 4548141067, 1457872913, 4548141073]) # E = list(sub_graph.nodes) # print(E) # input() print('System Initiating...') taxi_table = pd.read_csv('./data/taxi_info_list.csv') df = pd.read_csv('./data/node_list_with_cluster.csv') for indexs in df.index: tmp = df.loc[indexs] node_list.append( Node(tmp['real_id'], tmp['lon'], tmp['lat'], int(tmp['cluster_id']))) # .里面包含的内容是每个partition的landmark的经纬度.其下标与partition_list的下标一一对应 landmark_table = pd.read_csv('./data/landmark.csv') global landmark_list landmark_list = list( zip(landmark_table.loc[:, 'lon'], landmark_table.loc[:, 'lat'], landmark_table.loc[:, 'landmark_node_id'])) global partition_list partition_list = [None] * (max(df.loc[:, 'cluster_id']) + 1) # 初始化所有partition实例 for node_it in node_list: cid = node_it.cluster_id_belongto if partition_list[cid] is None: partition_list[cid] = Partition(cid, node_list=[], taxi_list=[]) partition_list[cid].node_list.append(int(node_it.node_id)) else: partition_list[cid].node_list.append(int(node_it.node_id)) global taxi_list for taxi_it in taxi_table.index: tmp = taxi_table.loc[taxi_it] taxi_in_which_partition = check_in_which_partition( tmp['init_lon'], tmp['init_lat']) taxi_list.append( Taxi(int(tmp['taxi_id']), tmp['init_lon'], tmp['init_lat'], SYSTEM_INIT_TIME - TIME_OFFSET, partition_id_belongto=taxi_in_which_partition, seat_left=3)) partition_list[taxi_in_which_partition].taxi_list.append( int(tmp['taxi_id'])) # 初始化邻接矩阵 global node_distance_matrix node_distance_matrix = copy.copy(node_distance.values)
def create( spec, scheme = 'none', count = 20, *args ): """ @spec - Specification (size, endpoints, barriers); either exactly specified in a file, or with numeric values in a list @option_scheme - none|manual|optimal|small-world|random|ozgur's betweenness|ozgur's randomness|end @n_actions - Number of steps that need to taken comment : optimal(shortest path to destination)??|random|ozgur's betweenness|ozgur's randomness """ env = Taxi.create( spec ) # Percentage if isinstance(count,str): count = int(count[:-1]) count = count*env.S/100 # Add options for all the optimal states O = [] if scheme == "none": pass elif scheme == "random-node": O = OptionGenerator.optimal_options_from_random_nodes( env, count, *args ) elif scheme == "random-path": O = OptionGenerator.optimal_options_from_random_paths( env, count, *args ) elif scheme == "betweenness": O = OptionGenerator.optimal_options_from_betweenness( env, count, *args ) elif scheme == "small-world": O = OptionGenerator.optimal_options_from_small_world( env, count, *args ) elif scheme == "betweenness+small-world": O = OptionEnvironment.optimal_options_from_betweenness( env, count ) count_ = count - len( O ) O += OptionEnvironment.optimal_options_from_small_world( env, count_, *args ) elif scheme == "load": O = OptionGenerator.options_from_file( *args )[:count] else: raise NotImplemented() return OptionEnvironment( TaxiOptions, env.S, env.A, env.P, env.R, env.R_bias, env.start_set, env.end_set, O )
from Transportation import Transportation from Walk import Walk from Taxi import Taxi from Train import Train if __name__ == '__main__': travel_cost = 0 trip = [ Walk("KMITL", "KMITL SCB Bank", 0.6), Taxi("KMITL SCB Bank", "Ladkrabang Station", 5), Train("Ladkrabang Station", "Payathai Station", 40, 6), Taxi("Payathai Station", "The British Council", 3) ] for travel in trip: travel_cost += travel.find_cost() print(travel_cost)
#!/usr/bin/python from Demo import Demo from Swarm import Swarm from Taxi import Taxi swarm= Swarm(count=24) demo= Demo(swarm) while demo.is_open: demo.draw(Taxi(swarm)) if not demo.paused: swarm.move(demo.step)
from Taxi import Taxi Taxi1 = Taxi("Prius 1", 100, 1.2) print(Taxi1) Taxi1.drive(50) print(Taxi1) Taxi2 = Taxi("Prius 2", 100, 1.2) print(Taxi2) Taxi2.drive(100) print(Taxi2.get_fare()) print(Taxi2)
def test_is_terminal(self): a = Taxi() self.assertTrue(a.is_terminal(np.array([0, 0, 0, 0]))) self.assertTrue(a.is_terminal(np.array([1, 1, 0, 0]))) self.assertTrue(a.is_terminal(np.array([2, 2, 0, 0]))) self.assertTrue(a.is_terminal(np.array([3, 3, 0, 0])))
def determine_travel_time(self): if self.simulation.dist_indep: return float('inf') else: distance = Taxi.distance(self.orig, self.dest) return ((MAX_DISTANCE * 0.1) + (1.2 * distance)) / self.power
def determine_price(self): if self.simulation.price_indep: return float('inf') else: return Taxi.distance(self.orig, self.dest) * self.power