{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Taxi / Shared mobility" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The standard vehicles (added by default `addVehicle` or `adddemand`) in UXsim are a kind of privately owned vehicles: They travel from origin to destination and disappear. \n", "\n", "In this demonstration, we explain how to represent taxi-like (or *shared mobility* if you want a cool name) vehicles that repeatedly transport multiple passengers. Such taxi can be added by `addVehicle` with `mode=\"taxi\"` option. Furthermore, the passenger-to-taxi matching problem is handled by `uxsim.TaxiHandler` submodule.\n", "\n", "Let's define a grid shaped network scenario." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from pylab import *\n", "from uxsim import *\n", "from uxsim.TaxiHandler import *\n", "\n", "# World definition\n", "tmax = 7200\n", "deltan = 5\n", "W = World(\n", " name=\"\",\n", " deltan=deltan,\n", " tmax=tmax,\n", " print_mode=1, save_mode=1, show_mode=1,\n", " random_seed=0,\n", ")\n", "\n", "# Scenario definition: grid network\n", "#deploy nodes as an imax x jmax grid\n", "imax = 6\n", "jmax = 6\n", "nodes = {}\n", "for i in range(imax):\n", " for j in range(jmax):\n", " nodes[i,j] = W.addNode(f\"n{(i,j)}\", i, j, flow_capacity=1.6)\n", "\n", "#create links between neighborhood nodes\n", "links = {}\n", "for i in range(imax):\n", " for j in range(jmax):\n", " if i != imax-1:\n", " links[i,j,i+1,j] = W.addLink(f\"l{(i,j,i+1,j)}\", nodes[i,j], nodes[i+1,j], length=1000, free_flow_speed=20, number_of_lanes=1)\n", " if i != 0:\n", " links[i,j,i-1,j] = W.addLink(f\"l{(i,j,i-1,j)}\", nodes[i,j], nodes[i-1,j], length=1000, free_flow_speed=20, number_of_lanes=1)\n", " if j != jmax-1:\n", " links[i,j,i,j+1] = W.addLink(f\"l{(i,j,i,j+1)}\", nodes[i,j], nodes[i,j+1], length=1000, free_flow_speed=20, number_of_lanes=1)\n", " if j != 0:\n", " links[i,j,i,j-1] = W.addLink(f\"l{(i,j,i,j-1)}\", nodes[i,j], nodes[i,j-1], length=1000, free_flow_speed=20, number_of_lanes=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Taxis can be added by `W.addVehicle(origin_node, None, 0, mode=\"taxi\")` as follows. Their behavior is as follows:\n", "\n", "- When a taxi has no job, it circulates the network randomly.\n", "- When a taxi is ordered to serve a passenger, it travels to the origin node of the passenger to pickup, and then travels to the destination to drop-off.\n", "\n", "In addition, we need to define a taxi handler `Handler`. It is responsible to manage trip requests from passengers and give orders to taxis. This time, we use default `TaxiHandler_nearest` that matches a new passenger to their nearest vacant taxi." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "Handler = TaxiHandler_nearest(W)\n", "\n", "n_taxis = 3000\n", "for i in range(int(n_taxis/deltan)):\n", " node = random.choice(list(nodes.values()))\n", " W.addVehicle(node, None, 0, mode=\"taxi\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A passenger' trip request is represented by `TripRequest` class. It can be added by `Handler.add_trip_request(origin_node, destination_node, departure_time)`. In this scenario, they are randomly set as follows." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "n_passengers = 20000\n", "for i in range(int(n_passengers/deltan)):\n", " node1 = random.choice(list(nodes.values()))\n", " node2 = random.choice(list(nodes.values()))\n", " while node1 == node2:\n", " node2 = random.choice(list(nodes.values()))\n", " Handler.add_trip_request(node1, node2, i/n_passengers*deltan*tmax/2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can execute simulation. During the simulation, `Handler.assign_trip_request_to_taxi()` must be called repeatedly in order to let taxis do their jobs." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "simulation setting:\n", " scenario name: \n", " simulation duration:\t 7200 s\n", " number of vehicles:\t 3000 veh\n", " total road length:\t 120000 m\n", " time discret. width:\t 5 s\n", " platoon size:\t\t 5 veh\n", " number of timesteps:\t 1440\n", " number of platoons:\t 600\n", " number of links:\t 120\n", " number of nodes:\t 36\n", " setup time:\t\t 0.34 s\n", "simulating...\n", " time| # of vehicles| ave speed| computation time\n", " 0 s| 0 vehs| 0.0 m/s| 0.00 s\n", " 600 s| 3000 vehs| 13.3 m/s| 0.77 s\n", " 1200 s| 3000 vehs| 12.6 m/s| 1.44 s\n", " 1800 s| 3000 vehs| 14.4 m/s| 2.11 s\n", " 2400 s| 3000 vehs| 14.2 m/s| 2.88 s\n", " 3000 s| 3000 vehs| 14.2 m/s| 3.56 s\n", " 3600 s| 3000 vehs| 14.3 m/s| 4.25 s\n", " 4200 s| 3000 vehs| 14.3 m/s| 4.79 s\n", " 4800 s| 3000 vehs| 14.2 m/s| 5.32 s\n", " 5400 s| 3000 vehs| 14.6 m/s| 5.86 s\n", " 6000 s| 3000 vehs| 14.2 m/s| 6.35 s\n", " 6600 s| 3000 vehs| 14.1 m/s| 6.86 s\n", " 7195 s| 3000 vehs| 14.5 m/s| 7.36 s\n", " simulation finished\n", "results:\n", " average speed:\t 14.3 m/s\n", " number of completed trips:\t 0 / 0\n" ] } ], "source": [ "# Run the simulation \n", "while W.check_simulation_ongoing():\n", " W.exec_simulation(duration_t = 60)\n", " Handler.assign_trip_request_to_taxi() # for every 60 seconds, the taxi is assgined\n", "\n", "# Results\n", "W.analyzer.print_simple_stats()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the trip-related stats shown by `W.analyzer.print_simple_stats()` are only for non-taxi trips, so the current one shows 0.\n", "\n", "The summary of taxi transportation can be printed as follows" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 6.67\n", " average waiting time: 84.6\n", " average in-vehicle time: 297.5\n", " average trip time: 382.0\n" ] } ], "source": [ "Handler.print_stats()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also export the trip logs as pandas.Dataframe." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
origdestdepart_timeget_taxi_timearrival_timetravel_timewaiting_timeused_taxi
0n(3, 2)n(2, 2)0.0155210210.0155.012
1n(1, 5)n(4, 5)0.9140295294.1139.1164
2n(3, 2)n(4, 4)1.855225223.253.2175
3n(2, 2)n(2, 5)2.7155310307.3152.3344
4n(2, 0)n(1, 0)3.655105101.451.4101
...........................
3995n(4, 1)n(4, 0)3595.536553715119.559.586
3996n(0, 1)n(3, 0)3596.437654005408.6168.6111
3997n(5, 3)n(0, 2)3597.337704330732.7172.7528
3998n(5, 2)n(2, 4)3598.237504040441.8151.8332
3999n(2, 2)n(0, 3)3599.136553840240.955.9107
\n", "

4000 rows × 8 columns

\n", "
" ], "text/plain": [ " orig dest depart_time get_taxi_time arrival_time travel_time \\\n", "0 n(3, 2) n(2, 2) 0.0 155 210 210.0 \n", "1 n(1, 5) n(4, 5) 0.9 140 295 294.1 \n", "2 n(3, 2) n(4, 4) 1.8 55 225 223.2 \n", "3 n(2, 2) n(2, 5) 2.7 155 310 307.3 \n", "4 n(2, 0) n(1, 0) 3.6 55 105 101.4 \n", "... ... ... ... ... ... ... \n", "3995 n(4, 1) n(4, 0) 3595.5 3655 3715 119.5 \n", "3996 n(0, 1) n(3, 0) 3596.4 3765 4005 408.6 \n", "3997 n(5, 3) n(0, 2) 3597.3 3770 4330 732.7 \n", "3998 n(5, 2) n(2, 4) 3598.2 3750 4040 441.8 \n", "3999 n(2, 2) n(0, 3) 3599.1 3655 3840 240.9 \n", "\n", " waiting_time used_taxi \n", "0 155.0 12 \n", "1 139.1 164 \n", "2 53.2 175 \n", "3 152.3 344 \n", "4 51.4 101 \n", "... ... ... \n", "3995 59.5 86 \n", "3996 168.6 111 \n", "3997 172.7 528 \n", "3998 151.8 332 \n", "3999 55.9 107 \n", "\n", "[4000 rows x 8 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = Handler.trips_to_pandas()\n", "display(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How many taxis do we need in a city?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is an important question (even [a Nature article](https://www.nature.com/articles/s41586-018-0095-1) addresses this issue). If the number of taxis is too small, it cannot provide sufficient services to the travelers. Contrary, if it is too large, the road get congested and the travel time will be increased.\n", "\n", "Let's answer this question using UXsim. First, we define simulation scenario as a function whose variable is the number of taxis and the number of passengers. The scenario setting is very similar to the previous example. This function returns some stats of the simulation results." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from pylab import *\n", "from uxsim import *\n", "from uxsim.TaxiHandler import *\n", "\n", "def simulation_with_given_number_of_taxis(n_taxis, n_passengers):\n", " print(\"####\"*20)\n", " print(f\"CASE WTIH NUMBER OF TAXIS = {n_taxis}\")\n", "\n", " # World definition\n", " tmax = 3600*3\n", " tdemand = 3600\n", " deltan = 5\n", " W = World(\n", " name=\"\",\n", " deltan=deltan,\n", " tmax=tmax,\n", " print_mode=0, save_mode=1, show_mode=1,\n", " random_seed=0,\n", " )\n", "\n", " # Scenario definition: grid network\n", " #deploy nodes as an imax x jmax grid\n", " imax = 6\n", " jmax = 6\n", " nodes = {}\n", " for i in range(imax):\n", " for j in range(jmax):\n", " nodes[i,j] = W.addNode(f\"n{(i,j)}\", i, j, flow_capacity=1.6)\n", "\n", " #create links between neighborhood nodes\n", " links = {}\n", " for i in range(imax):\n", " for j in range(jmax):\n", " if i != imax-1:\n", " links[i,j,i+1,j] = W.addLink(f\"l{(i,j,i+1,j)}\", nodes[i,j], nodes[i+1,j], length=1000, free_flow_speed=20, number_of_lanes=1)\n", " if i != 0:\n", " links[i,j,i-1,j] = W.addLink(f\"l{(i,j,i-1,j)}\", nodes[i,j], nodes[i-1,j], length=1000, free_flow_speed=20, number_of_lanes=1)\n", " if j != jmax-1:\n", " links[i,j,i,j+1] = W.addLink(f\"l{(i,j,i,j+1)}\", nodes[i,j], nodes[i,j+1], length=1000, free_flow_speed=20, number_of_lanes=1)\n", " if j != 0:\n", " links[i,j,i,j-1] = W.addLink(f\"l{(i,j,i,j-1)}\", nodes[i,j], nodes[i,j-1], length=1000, free_flow_speed=20, number_of_lanes=1)\n", "\n", " # taxis and passengers\n", " for i in range(int(n_taxis/deltan)):\n", " node = random.choice(list(nodes.values()))\n", " W.addVehicle(node, None, 0, mode=\"taxi\")\n", "\n", " Handler = TaxiHandler_nearest(W)\n", " for i in range(int(n_passengers/deltan)):\n", " node1 = random.choice(list(nodes.values()))\n", " node2 = random.choice(list(nodes.values()))\n", " while node1 == node2:\n", " node2 = random.choice(list(nodes.values()))\n", " Handler.add_trip_request(node1, node2, i/n_passengers*deltan*tdemand)\n", "\n", " # Run the simulation \n", " while W.check_simulation_ongoing():\n", " W.exec_simulation(duration_t = 60)\n", " Handler.assign_trip_request_to_taxi() # for every 60 seconds, the taxi is assgined\n", "\n", " # Results\n", " W.analyzer.print_simple_stats()\n", "\n", " Handler.print_stats()\n", "\n", " df_veh = W.analyzer.vehicles_to_pandas()\n", "\n", " # Return the average travel time, waiting time, and vehicle speed\n", " return average(Handler.travel_times), average(Handler.waiting_times), average(df_veh[\"v\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we systematically execute simulation scenarios with different number of taxis. The total traveler demand is fixed." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 1000\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 20.00\n", " average waiting time: 1508.5\n", " average in-vehicle time: 198.2\n", " average trip time: 1706.6\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 1500\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 13.33\n", " average waiting time: 455.9\n", " average in-vehicle time: 206.8\n", " average trip time: 662.7\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 2000\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 10.00\n", " average waiting time: 85.6\n", " average in-vehicle time: 220.2\n", " average trip time: 305.8\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 2500\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 8.00\n", " average waiting time: 85.3\n", " average in-vehicle time: 261.3\n", " average trip time: 346.6\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 3000\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 6.67\n", " average waiting time: 82.9\n", " average in-vehicle time: 286.6\n", " average trip time: 369.5\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 3500\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 5.71\n", " average waiting time: 89.5\n", " average in-vehicle time: 325.6\n", " average trip time: 415.1\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 4000\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 5.00\n", " average waiting time: 93.6\n", " average in-vehicle time: 375.2\n", " average trip time: 468.8\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 4500\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 4.44\n", " average waiting time: 99.5\n", " average in-vehicle time: 413.0\n", " average trip time: 512.5\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 5000\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 4.00\n", " average waiting time: 106.4\n", " average in-vehicle time: 461.3\n", " average trip time: 567.7\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 5500\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 3.64\n", " average waiting time: 111.3\n", " average in-vehicle time: 505.8\n", " average trip time: 617.1\n", "################################################################################\n", "CASE WTIH NUMBER OF TAXIS = 6000\n", "results for taxi transportation:\n", " total trip rquests: 20000\n", " completed trip requests: 20000\n", " completed trip requests ratio: 1.00\n", " average number of completed requests per taxi: 3.33\n", " average waiting time: 127.9\n", " average in-vehicle time: 554.7\n", " average trip time: 682.5\n" ] } ], "source": [ "res_passenger_travel_time = {}\n", "res_passenger_waiting_time = {}\n", "res_vehicle_speed = {}\n", "\n", "for n_taxis in range(1000, 6001, 500):\n", " ptt, pwt, vs = simulation_with_given_number_of_taxis(n_taxis, 20000)\n", " res_passenger_travel_time[n_taxis] = ptt\n", " res_passenger_waiting_time[n_taxis] = pwt\n", " res_vehicle_speed[n_taxis] = vs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now visualize the results." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "figure()\n", "ax1 = gca()\n", "ax1.plot(list(res_passenger_travel_time.keys()), list(res_passenger_travel_time.values()), \"bo-\", label=\"average travel time per trip\")\n", "ax1.plot(list(res_passenger_waiting_time.keys()), list(res_passenger_waiting_time.values()), \"go-\", label=\"average waiting time per trip\")\n", "ax1.set_xlabel(\"number of taxis\")\n", "ax1.set_ylabel(\"time (s)\")\n", "\n", "ax2 = ax1.twinx()\n", "ax2.plot(list(res_vehicle_speed.keys()), list(res_vehicle_speed.values()), \"rx--\", label=\"average vehicle speed\")\n", "ax2.set_ylabel(\"speed (m/s)\")\n", "\n", "ax1.legend(loc=\"upper left\")\n", "ax2.legend(loc=\"upper right\")\n", "\n", "show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see that the waiting time almost monotonically decreases as the number of taxis increases. However, it converges to certain value after 2000 taxis (and slightly increases after that due to congestion).\n", "\n", "On the other hand, the average speed of vehicles monotonically decreases as the the number of taxis increases, resulting long travel time after some point. \n", "\n", "As a result, the optimal number of taxis (that balances both of these factors and minimizes the passenger travel time) is found to be around 2000. This means that 1 taxi serves to 10 passengers in 1-3 hours in this city. Sounds reasonable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Defining custom TaxiHandler" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also define your won TaxiHandler that may have smarter passenger-to-vehicle matching or even ridesharing. To do so, it is recommended to define a custom class by inheriting `TaxiHandler` class. \n", "\n", "\n", "Below is an example of (slightly) advanced taxi handler.\n", "Important built-in variables and functions are as follows:\n", "\n", "- `TaxiHandler.trip_requests`: A list of all of the trip requests that is handled by `TaxiHandler`\n", "- `TaxiHandler.assign_taxi(taxi, trip_request)`: This assigns `taxi` to `trip_request`. The `taxi` immediately start traveling to pickup the `trip_request` once this function is called.\n", "\n", "For the details, please see the source code of `uxsim/TaxiHandler/TaxiHandler.py`" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "from uxsim.TaxiHandler import *\n", "\n", "class TaxiHandler_nearest_matching_radious(TaxiHandler):\n", " \"\"\"\n", " A taxi handler that assigns trip requests to nearest taxis that are within a certain radious of the origin node (based on Euclidean distance). \n", " \"\"\"\n", " def __init__(s, W, matching_radious):\n", " super().__init__(W)\n", " s.matching_radious = matching_radious\n", " \n", " def assign_trip_request_to_taxi(s):\n", " \"\"\"\n", " Assigns trip request to nearest available taxi that is within the radious of the origin node.\n", " \"\"\"\n", " vacant_taxis = [veh for veh in s.W.VEHICLES.values() if veh.mode == \"taxi\" and veh.state == \"run\" and veh.dest == None]\n", " random.shuffle(vacant_taxis)\n", " for trip_request in s.trip_requests[:]:\n", " if len(vacant_taxis) == 0:\n", " break\n", " if trip_request.depart_time <= s.W.TIME:\n", " dist_tmp = float(\"inf\")\n", " taxi_tmp = None\n", " for taxi in vacant_taxis[:]:\n", " x0, y0 = taxi.get_xy_coords()\n", " x1, y1 = trip_request.orig.x, trip_request.orig.y\n", " dist = math.sqrt((x0-x1)**2 + (y0-y1)**2)\n", " if dist <= s.matching_radious and dist <= dist_tmp:\n", " dist_tmp = dist\n", " taxi_tmp = taxi\n", " if taxi_tmp != None:\n", " vacant_taxis.remove(taxi_tmp)\n", " s.assign_taxi(taxi_tmp, trip_request)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "FYI, the following is an explanation by GPT-4 that I proofread.\n", "The function `assign_trip_request_to_taxi` is designed to assign trip requests to the nearest available taxi within a specified radius of the request's origin point. Here's a detailed explanation for its functionality:\n", "\n", "**Description**\n", "\n", "This function assigns each trip request to the nearest available taxi that is within the radius of the trip's origin node. It ensures that trip requests are matched efficiently to taxis that are not currently occupied and are in a state ready to run.\n", "\n", "**Workflow**\n", "\n", "1. **Identify Vacant Taxis**:\n", " - The function starts by filtering out all vehicles from `s.W.VEHICLES` that are marked as taxis (`veh.mode == \"taxi\"`), are in the running state (`veh.state == \"run\"`), and are not currently assigned to a destination to carry travelers (`veh.dest == None`).\n", "\n", "2. **Process Each Trip Request**:\n", " - It iterates over all current trip requests.\n", " - If there are no vacant taxis left, it breaks out of the loop as no more assignments can be made.\n", " - For each trip request, it checks if the request's departure time is less than or equal to the current world time (`s.W.TIME`).\n", "\n", "3. **Find the Nearest Available Taxi**:\n", " - For each trip request being processed, it initializes a variable to track the smallest distance found (`dist_tmp`) and a variable to hold the nearest taxi (`taxi_tmp`).\n", " - It then calculates the distance between the trip request's origin and each taxi's current coordinates using the Euclidean distance formula.\n", " - If a taxi is within the allowed matching radius (`s.matching_radious`) and closer than any previously checked taxi, it updates `taxi_tmp` to this taxi.\n", "\n", "4. **Assign the Taxi**:\n", " - If a nearest taxi (`taxi_tmp`) is found for a trip request, the taxi is removed from the list of vacant taxis to prevent it from being assigned to multiple requests.\n", " - The taxi is then officially assigned to the trip request using `s.assign_taxi(taxi_tmp, trip_request)`.\n", "\n", "**Notes**\n", "\n", "- The function assumes that there are methods and attributes within the object `s` that allow it to access current time (`s.W.TIME`), vehicle list (`s.W.VEHICLES`), and the function `assign_taxi` to handle the assignment.\n", "- The radius within which a taxi can be matched to a trip request is defined by `s.matching_radious`.\n", "- This function ensures that taxis are utilized efficiently by assigning them to the closest requests, thereby potentially reducing wait times for passengers and travel distances for taxis.\n" ] } ], "metadata": { "anaconda-cloud": {}, "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "02b3228f560f48128236b0924959a3a9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1cb3e629b0954694a6d75a335bded00e", "placeholder": "​", "style": "IPY_MODEL_c74c22dbe7d245f2a319db088fa6c56a", "value": " 8/8 [00:00<00:00,  8.38it/s]" } }, "04898591621140548120d122831b3d58": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_cc4399fafca34fd482032f327ccfa98e", "placeholder": "​", "style": "IPY_MODEL_9b5946647c58441995c3c844ab9e20a8", "value": "100%" } }, "0a7c6baa8491489d9c652cfdd02e641d": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "11308e9c57854a24991c1ae5cc7025a6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "1190816a496846848626fc1db2d486e7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1952ef3d0a5c4b23a7ce1e96baa980a7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "1bdc6b53c5c445b5861cb25d365b8af1": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1c16c097cbe64271afd5a460a43268eb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_437749d84d3a456aab33ae23dd73c4e6", "max": 8, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_a0d58d78defb4f538ba482399b1e1638", "value": 8 } }, "1cb3e629b0954694a6d75a335bded00e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2216f855e23e4cc0b50c08b90dec4216": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "30a4c4fef21a4687a076e34dc44538e2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "37382a7e31274e779bc6586d88486642": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_fb58b35de3b346e397ed9b48cadcf756", "placeholder": "​", "style": "IPY_MODEL_a169c9cfba81424d8f936235ca8336c9", "value": "100%" } }, "37415d569eee42409745a6b0da201f04": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_04898591621140548120d122831b3d58", "IPY_MODEL_935b58cdb527465f8bb06c6617738680", "IPY_MODEL_6119886cfaf344239c38347f3fda9184" ], "layout": "IPY_MODEL_1190816a496846848626fc1db2d486e7" } }, "437749d84d3a456aab33ae23dd73c4e6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5177729372014a9090cedc152725cc8a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6119886cfaf344239c38347f3fda9184": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8bf41e3bf2744074a2001cd6571d15f8", "placeholder": "​", "style": "IPY_MODEL_66fbfdb19c64477993e91699a5cb940a", "value": " 10/10 [00:03<00:00,  3.23it/s]" } }, "643319fe977a425fa80e7a87ce357a37": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6550b71ee281437f8d0a55cf5c7a170b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_c2e27e421db6475bb0d4ba6695efe6a6", "IPY_MODEL_b3f26f3366584be3878ed1f9934aea2e", "IPY_MODEL_ed5dfd9e8fb64aeaacfe84bb5a24a9e5" ], "layout": "IPY_MODEL_6bb11815d3ca4873b0bc46ce87523e31" } }, "65560ba504934163a65451a128bbf33c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ed0a0f46c4834dd29f4e84f1d85374cd", "max": 3, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_d96c49d5cb63400d958e3455f51f52ac", "value": 3 } }, "66fbfdb19c64477993e91699a5cb940a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6939e90f5625491585c6e3156c0cc8db": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6bb11815d3ca4873b0bc46ce87523e31": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "721e1a817dff469aafd7b8a332527df2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_fad7067915df4bd4b0719d7114bdcfa3", "max": 120, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_2216f855e23e4cc0b50c08b90dec4216", "value": 120 } }, "734052ca31344ce4940db93e34e61481": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_37382a7e31274e779bc6586d88486642", "IPY_MODEL_1c16c097cbe64271afd5a460a43268eb", "IPY_MODEL_02b3228f560f48128236b0924959a3a9" ], "layout": "IPY_MODEL_c10453ea464c447ea65773d16cae9ce8" } }, "7ec879c4296940deacf1a185d39f5e96": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8285618ce8f7410e9683113c2238f7ba": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_cd5b3d60bb1b469f91185b7b4612fba2", "IPY_MODEL_721e1a817dff469aafd7b8a332527df2", "IPY_MODEL_f03bb23cf3f94e0c950ee2e3c7aa7862" ], "layout": "IPY_MODEL_d155d6661d90453998786e8eac431c4c" } }, "8bf41e3bf2744074a2001cd6571d15f8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "935b58cdb527465f8bb06c6617738680": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_cc7196c9c9c34c92a94aa9b0fbf9f77b", "max": 10, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_e56a8780675f463493ccd2b2034e183c", "value": 10 } }, "9362e3599b3a4cac8e32caf836eb44b7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "97ca94b4ed054f909753cba0330b4e49": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "9b5946647c58441995c3c844ab9e20a8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "a0d58d78defb4f538ba482399b1e1638": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "a169c9cfba81424d8f936235ca8336c9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "b3f26f3366584be3878ed1f9934aea2e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_7ec879c4296940deacf1a185d39f5e96", "max": 3, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_97ca94b4ed054f909753cba0330b4e49", "value": 3 } }, "bf1e5d121edc4964913e69c3085280b0": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c10453ea464c447ea65773d16cae9ce8": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c2e27e421db6475bb0d4ba6695efe6a6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_0a7c6baa8491489d9c652cfdd02e641d", "placeholder": "​", "style": "IPY_MODEL_643319fe977a425fa80e7a87ce357a37", "value": "100%" } }, "c513da548239411c935e5e7410e2f835": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_fd60fe2814ca4c308185b8af29d09ca4", "IPY_MODEL_65560ba504934163a65451a128bbf33c", "IPY_MODEL_fd66bd69c18b4a0b98fef3a9dad17b68" ], "layout": "IPY_MODEL_de2474ad69c7416e852ab257037c35ea" } }, "c74c22dbe7d245f2a319db088fa6c56a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "c7677ad8e834419596f7d47daef871b7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cc4399fafca34fd482032f327ccfa98e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cc7196c9c9c34c92a94aa9b0fbf9f77b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cd5b3d60bb1b469f91185b7b4612fba2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c7677ad8e834419596f7d47daef871b7", "placeholder": "​", "style": "IPY_MODEL_5177729372014a9090cedc152725cc8a", "value": "100%" } }, "d155d6661d90453998786e8eac431c4c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d2e14198cf6346f5b935651921256f06": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "d96c49d5cb63400d958e3455f51f52ac": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "de2474ad69c7416e852ab257037c35ea": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e56a8780675f463493ccd2b2034e183c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "ed0a0f46c4834dd29f4e84f1d85374cd": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ed5dfd9e8fb64aeaacfe84bb5a24a9e5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_bf1e5d121edc4964913e69c3085280b0", "placeholder": "​", "style": "IPY_MODEL_1952ef3d0a5c4b23a7ce1e96baa980a7", "value": " 3/3 [00:01<00:00,  1.61it/s]" } }, "f03bb23cf3f94e0c950ee2e3c7aa7862": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_9362e3599b3a4cac8e32caf836eb44b7", "placeholder": "​", "style": "IPY_MODEL_6939e90f5625491585c6e3156c0cc8db", "value": " 120/120 [00:13<00:00, 10.09it/s]" } }, "fad7067915df4bd4b0719d7114bdcfa3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fb58b35de3b346e397ed9b48cadcf756": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fd60fe2814ca4c308185b8af29d09ca4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_30a4c4fef21a4687a076e34dc44538e2", "placeholder": "​", "style": "IPY_MODEL_d2e14198cf6346f5b935651921256f06", "value": "100%" } }, "fd66bd69c18b4a0b98fef3a9dad17b68": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1bdc6b53c5c445b5861cb25d365b8af1", "placeholder": "​", "style": "IPY_MODEL_11308e9c57854a24991c1ae5cc7025a6", "value": " 3/3 [00:01<00:00,  1.58it/s]" } } } } }, "nbformat": 4, "nbformat_minor": 0 }