示例#1
0
    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))
示例#2
0
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()))
示例#3
0
 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
示例#4
0
    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")
示例#6
0
    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]))
示例#7
0
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 )
示例#9
0
    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 )
示例#10
0
文件: main.py 项目: 62011213/task3
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)
示例#11
0
#!/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)

示例#12
0
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)
示例#13
0
    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))
示例#14
0
 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])))
示例#15
0
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)
示例#16
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
示例#17
0
 def determine_price(self):
     if self.simulation.price_indep:
         return float('inf')
     else:
         return Taxi.distance(self.orig, self.dest) * self.power
示例#18
0
 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])))