-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathm3_perf_public.inter_poi_perf_very_hard.toronto_canada.cpp
243 lines (204 loc) · 27.6 KB
/
m3_perf_public.inter_poi_perf_very_hard.toronto_canada.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
#include <random>
#include <unittest++/UnitTest++.h>
#include "StreetsDatabaseAPI.h"
#include "m1.h"
#include "m3.h"
#include "unit_test_util.h"
#include "path_verify.h"
using ece297test::relative_error;
using ece297test::path_is_legal;
SUITE(inter_inter_path_perf_very_hard_public) {
struct MapFixture {
MapFixture() {
rng = std::minstd_rand(4);
rand_intersection = std::uniform_int_distribution<unsigned>(0, getNumberOfIntersections()-1);
rand_street = std::uniform_int_distribution<unsigned>(1, getNumberOfStreets()-1);
rand_segment = std::uniform_int_distribution<unsigned>(0, getNumberOfStreetSegments()-1);
rand_poi = std::uniform_int_distribution<unsigned>(0, getNumberOfPointsOfInterest()-1);
rand_lat = std::uniform_real_distribution<double>(43.479999542, 43.919979095);
rand_lon = std::uniform_real_distribution<double>(-79.789978027, -79.000007629);
rand_turn_penalty = std::uniform_real_distribution<double>(0., 30.);
}
std::minstd_rand rng;
std::uniform_int_distribution<unsigned> rand_intersection;
std::uniform_int_distribution<unsigned> rand_street;
std::uniform_int_distribution<unsigned> rand_segment;
std::uniform_int_distribution<unsigned> rand_poi;
std::uniform_real_distribution<double> rand_lat;
std::uniform_real_distribution<double> rand_lon;
std::uniform_real_distribution<double> rand_turn_penalty;
};
TEST_FIXTURE(MapFixture, find_path_to_point_of_interest_perf_very_hard) {
//Verify Functionality
std::vector<unsigned> path;
std::vector<unsigned> valid_end_intersections;
double path_cost;
valid_end_intersections = {4111, 4015, 1401, 6304, 9511, 6718, 4137, 512, 2355, 70790, 2290, 15786, 1855, 759, 12544, 7765, 2543, 1014, 1868, 3468, 89255, 28892, 88345, 1118, 1656, 28591, 23132, 23220, 3701, 11016, 16749, 5176, 4183, 19143, 68577, 74994, 107653, 20244, 71793, 107821, 35792, 87129, 105429, 14691, 82479, 45670, 28896, 87695, 94740, 89171, 1896, 1744, 53720, 11454, 101715, 80730, 101976, 100230, 105568, 16941, 62042, 97497, 1078, 78903, 3172, 551, 70063, 70573, 70701, 70707, 89487, 11649, 8876, 98946, 4669, 69736, 16222, 28929, 52382, 9799, 28633, 2318, 20676, 2324, 4218, 91116, 2264, 86069, 45659, 80971, 30545, 101900, 1418, 15585, 94150, 79798, 5205, 89310, 12747, 85963, 98897, 41885, 71708, 34358, 87031, 2634, 20185, 12410, 100647, 79525, 14608, 1043, 99707, 33347, 1423, 96496, 33061, 71967, 38660, 100551, 94697, 95439, 79402, 75710, 61521, 34494, 34781, 99049, 64251, 85319, 21227, 11645, 85051, 106042, 19856, 2260, 3411, 15792, 34613, 19322, 44112, 3705, 86275, 71979, 99120, 6856, 20193, 30407, 2270, 2294, 5833, 73484, 104560, 20083, 18532, 369, 5852, 32615, 100120, 60407, 30537, 63236, 45673, 55062, 4321, 18888, 107893, 9313, 80267};
path = find_path_to_point_of_interest(3758, "Starbucks Coffee", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(3758, valid_end_intersections, path));
CHECK(path_cost <= 658.26596816883363772);
valid_end_intersections = {16768};
path = find_path_to_point_of_interest(4310, "Piazza Manna Restaurant & Bar", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(4310, valid_end_intersections, path));
CHECK(path_cost <= 568.00984127745209662);
valid_end_intersections = {3380, 1375, 52868, 12183, 9737, 21562, 96170, 2600, 8874, 2318, 60770, 98646, 18142, 22183, 71187};
path = find_path_to_point_of_interest(4502, "Toronto Sun", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(4502, valid_end_intersections, path));
CHECK(path_cost <= 755.08792547314578769);
valid_end_intersections = {94875};
path = find_path_to_point_of_interest(5487, "Dr. D. Vengjen & Assoc. Dentists", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(5487, valid_end_intersections, path));
CHECK(path_cost <= 934.93689736444093796);
valid_end_intersections = {1813};
path = find_path_to_point_of_interest(21949, "Dental Smiles", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(21949, valid_end_intersections, path));
CHECK(path_cost <= 1338.23625410994895901);
valid_end_intersections = {88360};
path = find_path_to_point_of_interest(28523, "Druxys", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(28523, valid_end_intersections, path));
CHECK(path_cost <= 1518.86836286389620909);
valid_end_intersections = {4111, 4015, 1401, 6304, 9511, 6718, 4137, 512, 2355, 70790, 2290, 15786, 1855, 759, 12544, 7765, 2543, 1014, 1868, 3468, 89255, 28892, 88345, 1118, 1656, 28591, 23132, 23220, 3701, 11016, 16749, 5176, 4183, 19143, 68577, 74994, 107653, 20244, 71793, 107821, 35792, 87129, 105429, 14691, 82479, 45670, 28896, 87695, 94740, 89171, 1896, 1744, 53720, 11454, 101715, 80730, 101976, 100230, 105568, 16941, 62042, 97497, 1078, 78903, 3172, 551, 70063, 70573, 70701, 70707, 89487, 11649, 8876, 98946, 4669, 69736, 16222, 28929, 52382, 9799, 28633, 2318, 20676, 2324, 4218, 91116, 2264, 86069, 45659, 80971, 30545, 101900, 1418, 15585, 94150, 79798, 5205, 89310, 12747, 85963, 98897, 41885, 71708, 34358, 87031, 2634, 20185, 12410, 100647, 79525, 14608, 1043, 99707, 33347, 1423, 96496, 33061, 71967, 38660, 100551, 94697, 95439, 79402, 75710, 61521, 34494, 34781, 99049, 64251, 85319, 21227, 11645, 85051, 106042, 19856, 2260, 3411, 15792, 34613, 19322, 44112, 3705, 86275, 71979, 99120, 6856, 20193, 30407, 2270, 2294, 5833, 73484, 104560, 20083, 18532, 369, 5852, 32615, 100120, 60407, 30537, 63236, 45673, 55062, 4321, 18888, 107893, 9313, 80267};
path = find_path_to_point_of_interest(34725, "Starbucks Coffee", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(34725, valid_end_intersections, path));
CHECK(path_cost <= 101.19022880599952430);
valid_end_intersections = {8618};
path = find_path_to_point_of_interest(35804, "U&C Pharmacy", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(35804, valid_end_intersections, path));
CHECK(path_cost <= 2124.10848833726549856);
valid_end_intersections = {8252, 86206, 7245, 14787, 1790, 12240, 16674, 14820, 7596, 3519, 70897, 14608, 24459, 30641, 57662, 32553, 92399, 4459, 4320, 18601, 89776, 35793, 26798, 105959, 67903, 77680, 18482, 70072, 93481, 2650, 50656, 7670, 23327, 3271, 11484, 50677, 51575, 94138, 12566, 96378, 78851, 59286, 87695};
path = find_path_to_point_of_interest(52410, "RBC Financial Group", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(52410, valid_end_intersections, path));
CHECK(path_cost <= 317.97788148219427740);
valid_end_intersections = {3128, 1127, 87701, 1130, 9511, 7276, 7245, 8227, 91425, 16773, 16695, 20024, 20228, 1750, 16570, 71078, 8374, 88345, 1118, 97185, 103427, 18672, 59292, 99983, 24740, 18487, 98904, 41909, 9163, 28915, 57095, 80708, 88674, 107653, 61242, 61372, 3305, 105178, 105429, 77832, 43589, 36000, 36298, 54326, 61296, 97143, 104617, 16757, 2600, 44754, 28907, 19182, 5510, 1671, 60902, 70584, 26925, 68574, 4308, 82642, 29789, 44161, 7854, 91776, 86833, 61226, 71731, 54006, 90874, 18970, 1078, 23758, 108379, 3679, 64275, 4461, 88344, 70573, 1744, 20826, 14901, 12572, 14675, 333, 5702, 44066, 71262, 98900, 4318, 24452, 99720, 71027, 57995, 5812, 13135, 749, 61308, 71869, 54499, 70708, 2246, 1862, 6753, 2294, 30964, 44035, 52383, 69685, 9799, 8172, 98946, 56866, 86200, 41916, 94133, 34255, 20233, 79798, 54863, 1884, 85971, 73908, 62074, 9400, 61321, 79167, 546, 5206, 16758, 6047, 96169, 60475, 41905, 10006, 41812, 34379, 82546, 24525, 75745, 8874, 94645, 3955, 11491, 67223, 96378, 96917, 6759, 29104, 1381, 25473, 17227, 72214, 31343, 26706, 87691, 24556, 58705, 38400, 104991, 44800, 23035, 1419, 92486, 75763, 22074, 99065, 22524, 97232, 22525, 28508, 66430, 98637, 22226, 64250, 85319, 41834, 39079, 97503, 58757, 70909, 29507, 104447, 22151, 67695, 40479, 50517, 30374, 58785, 59718, 107465, 45250, 7711, 71564, 91365, 84589, 2634, 96346, 80538, 4631, 89207, 99358, 97595, 11422, 104877, 28913, 46545, 96491, 14761, 56420, 104752, 60402, 36288, 7512, 11035, 6866, 33311, 89158, 3293, 88146, 1252, 85234, 93076, 93394, 63216, 101341, 28634, 105187, 35880, 97857, 35792, 61872};
path = find_path_to_point_of_interest(53119, "Subway", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(53119, valid_end_intersections, path));
CHECK(path_cost <= 377.72821692925572279);
valid_end_intersections = {47577, 48417};
path = find_path_to_point_of_interest(53994, "Cmb", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(53994, valid_end_intersections, path));
CHECK(path_cost <= 933.82623734780429459);
valid_end_intersections = {3128, 1127, 87701, 1130, 9511, 7276, 7245, 8227, 91425, 16773, 16695, 20024, 20228, 1750, 16570, 71078, 8374, 88345, 1118, 97185, 103427, 18672, 59292, 99983, 24740, 18487, 98904, 41909, 9163, 28915, 57095, 80708, 88674, 107653, 61242, 61372, 3305, 105178, 105429, 77832, 43589, 36000, 36298, 54326, 61296, 97143, 104617, 16757, 2600, 44754, 28907, 19182, 5510, 1671, 60902, 70584, 26925, 68574, 4308, 82642, 29789, 44161, 7854, 91776, 86833, 61226, 71731, 54006, 90874, 18970, 1078, 23758, 108379, 3679, 64275, 4461, 88344, 70573, 1744, 20826, 14901, 12572, 14675, 333, 5702, 44066, 71262, 98900, 4318, 24452, 99720, 71027, 57995, 5812, 13135, 749, 61308, 71869, 54499, 70708, 2246, 1862, 6753, 2294, 30964, 44035, 52383, 69685, 9799, 8172, 98946, 56866, 86200, 41916, 94133, 34255, 20233, 79798, 54863, 1884, 85971, 73908, 62074, 9400, 61321, 79167, 546, 5206, 16758, 6047, 96169, 60475, 41905, 10006, 41812, 34379, 82546, 24525, 75745, 8874, 94645, 3955, 11491, 67223, 96378, 96917, 6759, 29104, 1381, 25473, 17227, 72214, 31343, 26706, 87691, 24556, 58705, 38400, 104991, 44800, 23035, 1419, 92486, 75763, 22074, 99065, 22524, 97232, 22525, 28508, 66430, 98637, 22226, 64250, 85319, 41834, 39079, 97503, 58757, 70909, 29507, 104447, 22151, 67695, 40479, 50517, 30374, 58785, 59718, 107465, 45250, 7711, 71564, 91365, 84589, 2634, 96346, 80538, 4631, 89207, 99358, 97595, 11422, 104877, 28913, 46545, 96491, 14761, 56420, 104752, 60402, 36288, 7512, 11035, 6866, 33311, 89158, 3293, 88146, 1252, 85234, 93076, 93394, 63216, 101341, 28634, 105187, 35880, 97857, 35792, 61872};
path = find_path_to_point_of_interest(55879, "Subway", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(55879, valid_end_intersections, path));
CHECK(path_cost <= 306.99834732129448867);
valid_end_intersections = {3632, 99298, 5205};
path = find_path_to_point_of_interest(55957, "Denny's", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(55957, valid_end_intersections, path));
CHECK(path_cost <= 1408.46754933386159792);
valid_end_intersections = {5204, 3944, 103427, 4222, 6151, 21090, 21143, 23113, 28929, 3694, 87872, 50620, 56677, 72476, 4564, 4564, 14599, 2629, 16759, 64187, 41471, 98827, 98945, 87219, 93128, 4320};
path = find_path_to_point_of_interest(61118, "RBC Royal Bank", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(61118, valid_end_intersections, path));
CHECK(path_cost <= 589.43795662426623494);
valid_end_intersections = {105444, 12425, 14609, 18768, 5184, 2290, 41909, 1745, 58152, 87075, 4712, 15309, 16690, 12788, 33025, 7766, 2277, 36641, 21369, 1666, 2125, 23135, 3394, 15228, 20195, 1113, 1080, 71671, 101438, 33279, 72235, 102554, 54322, 95335, 31988, 26814, 96942, 101800, 74932, 43196, 8192, 36298, 23842, 8874, 96170, 41904, 28591, 28896, 9799, 1272, 2600, 21238, 59297, 6779, 45677, 92099, 68036, 81392, 105975, 106581, 1870, 95400, 96689, 54015, 44157, 60874, 72563, 61229, 20009, 84777, 79040, 102490, 90879, 6152, 47606, 53501, 1949, 60378, 2243, 6867, 5510, 11261, 16263, 90758, 70075, 44349, 20232, 1792, 5176, 71114, 98946, 1422, 51282, 35154, 13097, 14985, 97865, 5198, 1131, 3984, 41268, 76172, 75682, 2272, 4017, 75739, 31198, 32076, 95943, 1744, 77284, 23975, 28331, 82477, 105838, 106166, 2270, 50317, 33060, 74417, 90256, 104623, 30926, 82001, 58307, 61331, 99545, 5814, 96062, 10562, 96525, 6056, 45674, 79798, 4016, 70806, 11348, 67447, 78734, 78718, 69926, 82046, 25311, 26564, 10496, 90120, 40907, 42219, 96908, 55962, 25923, 71477, 33281, 44748, 24805, 70646, 108023, 33024, 58772, 81880, 84593, 60721, 58790, 18982, 94170, 63869, 95305, 23034, 22959, 96293, 35061, 35582, 22612, 39503, 26474, 7801, 9714, 89550, 34721, 67695, 86620, 97329, 16770, 79726, 50621, 50542, 41887, 83219, 106040, 99329, 15793, 5458, 98781, 22107, 99294, 100639, 101455, 36512, 42192, 69946, 19145, 1897, 7743, 92199, 25414, 1047, 4631, 79345, 45499, 82021, 6514, 23412, 100133, 1744, 1059, 53719, 100647, 4303, 74077, 79885, 1353, 107455, 56415, 5093, 22698, 35110, 97748, 79631, 727, 6668, 45124, 59967, 82274, 107639, 99904, 73443, 107650, 27011, 13495, 52477, 82678, 13027, 93607, 29584};
path = find_path_to_point_of_interest(63825, "Tim Hortons", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(63825, valid_end_intersections, path));
CHECK(path_cost <= 195.99275630697732709);
valid_end_intersections = {96721, 16769, 50756, 101401, 71125, 86067, 90745, 87729, 59331, 2497};
path = find_path_to_point_of_interest(66503, "Zipcar", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(66503, valid_end_intersections, path));
CHECK(path_cost <= 1599.05194165985790278);
valid_end_intersections = {4183};
path = find_path_to_point_of_interest(68530, "The Residences of College Park Parking", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(68530, valid_end_intersections, path));
CHECK(path_cost <= 921.19974845699061916);
valid_end_intersections = {21283, 70806, 28633};
path = find_path_to_point_of_interest(41652, "The Bagel Stop", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(41652, valid_end_intersections, path));
CHECK(path_cost <= 1768.21899622333376101);
valid_end_intersections = {102025, 6339, 1606, 12751, 2376, 2324, 2290, 20025, 69682, 14820, 29104, 86232, 7765, 16975, 1014, 9244, 21369, 103429, 24460, 16462, 85315, 29210, 2954, 98707, 101446, 99962, 31614, 57675, 17010, 92414, 12581, 71793, 49815, 77452, 91245, 92502, 61261, 49579, 22702, 33213, 35826, 61521, 42735, 36000, 59406, 103939, 35151, 54004, 19844, 29581, 16757, 33014, 70058, 41887, 1451, 44754, 24760, 31089, 31857, 106573, 101979, 107521, 68572, 4309, 103323, 103248, 98622, 62004, 23686, 7225, 60370, 90042, 92175, 61318, 6724, 20730, 98946, 11442, 107221, 62041, 12338, 79040, 71545, 70909, 68931, 72646, 41218, 75682, 76109, 90534, 56109, 73344, 75072, 81689, 50236, 100978, 101900, 70747, 8233, 2272, 74435, 24813, 82898, 83204, 96009, 67794, 1387, 6056, 2242, 23123, 10854, 87690, 90, 66053, 66552, 36589, 81814, 90600, 57025, 33577, 32573, 24733, 3803, 98153, 99122, 105007, 725, 84727, 75746, 34810, 90766, 22148, 22525, 36643, 55855, 21221, 99329, 71569, 63993, 21715, 61723, 4650, 25731, 45402, 56308, 87078, 78708, 41490, 68958, 102029, 61137, 6668, 104741, 59974, 63316, 93394, 27002, 80410, 13495, 59482, 103983, 35794, 105725};
path = find_path_to_point_of_interest(69189, "Shoppers Drug Mart", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(69189, valid_end_intersections, path));
CHECK(path_cost <= 199.55191512089260186);
valid_end_intersections = {41811};
path = find_path_to_point_of_interest(82825, "Twin Fish", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(82825, valid_end_intersections, path));
CHECK(path_cost <= 2085.09365572941305800);
valid_end_intersections = {12238, 6430, 7636, 61358, 104721, 5812, 100051, 47489, 15240, 44763, 18487, 29135, 71078, 28893, 19467, 88387, 60237, 26919, 61543, 32459, 30411, 83360, 8595, 28345, 56682, 59316, 58041, 89470, 57138, 7388, 26459, 29974, 86732, 44165, 17035, 35099, 71518, 78976, 14206, 54944, 78533, 62144, 61725, 74932, 43686, 58006, 57748, 14339, 60650, 37963, 52515, 70098, 97142, 89317, 105726, 8404, 77212, 66400, 59291, 30509, 82641, 33542, 81992, 82269, 20118, 50793, 89873, 100007, 23371, 28269, 107531, 98394, 54000, 54808, 55450, 51806, 1351, 55859, 90671, 92477, 1089, 55121, 95479, 69747, 53731, 87686, 54002, 56688, 76190, 70987, 55047, 77061, 63408, 59511, 60402, 64239, 75753, 77948, 77927, 92004, 60456, 87207, 24728, 61400, 322, 67438, 74302, 78617, 82751, 90682, 89317, 24864, 67871, 36512, 35246, 17338, 26347, 25516, 15594, 26609, 92879, 50506, 88706, 106895, 59185, 101114, 74779, 68628, 94397, 74578, 106127, 29414, 14484, 55712};
path = find_path_to_point_of_interest(86516, "Petro-Canada", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(86516, valid_end_intersections, path));
CHECK(path_cost <= 272.15843254673598040);
valid_end_intersections = {16768};
path = find_path_to_point_of_interest(89793, "Cocoberry Cafe", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(89793, valid_end_intersections, path));
CHECK(path_cost <= 326.79121768479126331);
valid_end_intersections = {14774};
path = find_path_to_point_of_interest(90218, "Southside Johnny's Bar", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(90218, valid_end_intersections, path));
CHECK(path_cost <= 2336.47894943767369114);
valid_end_intersections = {4111, 4015, 1401, 6304, 9511, 6718, 4137, 512, 2355, 70790, 2290, 15786, 1855, 759, 12544, 7765, 2543, 1014, 1868, 3468, 89255, 28892, 88345, 1118, 1656, 28591, 23132, 23220, 3701, 11016, 16749, 5176, 4183, 19143, 68577, 74994, 107653, 20244, 71793, 107821, 35792, 87129, 105429, 14691, 82479, 45670, 28896, 87695, 94740, 89171, 1896, 1744, 53720, 11454, 101715, 80730, 101976, 100230, 105568, 16941, 62042, 97497, 1078, 78903, 3172, 551, 70063, 70573, 70701, 70707, 89487, 11649, 8876, 98946, 4669, 69736, 16222, 28929, 52382, 9799, 28633, 2318, 20676, 2324, 4218, 91116, 2264, 86069, 45659, 80971, 30545, 101900, 1418, 15585, 94150, 79798, 5205, 89310, 12747, 85963, 98897, 41885, 71708, 34358, 87031, 2634, 20185, 12410, 100647, 79525, 14608, 1043, 99707, 33347, 1423, 96496, 33061, 71967, 38660, 100551, 94697, 95439, 79402, 75710, 61521, 34494, 34781, 99049, 64251, 85319, 21227, 11645, 85051, 106042, 19856, 2260, 3411, 15792, 34613, 19322, 44112, 3705, 86275, 71979, 99120, 6856, 20193, 30407, 2270, 2294, 5833, 73484, 104560, 20083, 18532, 369, 5852, 32615, 100120, 60407, 30537, 63236, 45673, 55062, 4321, 18888, 107893, 9313, 80267};
path = find_path_to_point_of_interest(80361, "Starbucks Coffee", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(80361, valid_end_intersections, path));
CHECK(path_cost <= 110.13537224628151989);
valid_end_intersections = {102025, 6339, 1606, 12751, 2376, 2324, 2290, 20025, 69682, 14820, 29104, 86232, 7765, 16975, 1014, 9244, 21369, 103429, 24460, 16462, 85315, 29210, 2954, 98707, 101446, 99962, 31614, 57675, 17010, 92414, 12581, 71793, 49815, 77452, 91245, 92502, 61261, 49579, 22702, 33213, 35826, 61521, 42735, 36000, 59406, 103939, 35151, 54004, 19844, 29581, 16757, 33014, 70058, 41887, 1451, 44754, 24760, 31089, 31857, 106573, 101979, 107521, 68572, 4309, 103323, 103248, 98622, 62004, 23686, 7225, 60370, 90042, 92175, 61318, 6724, 20730, 98946, 11442, 107221, 62041, 12338, 79040, 71545, 70909, 68931, 72646, 41218, 75682, 76109, 90534, 56109, 73344, 75072, 81689, 50236, 100978, 101900, 70747, 8233, 2272, 74435, 24813, 82898, 83204, 96009, 67794, 1387, 6056, 2242, 23123, 10854, 87690, 90, 66053, 66552, 36589, 81814, 90600, 57025, 33577, 32573, 24733, 3803, 98153, 99122, 105007, 725, 84727, 75746, 34810, 90766, 22148, 22525, 36643, 55855, 21221, 99329, 71569, 63993, 21715, 61723, 4650, 25731, 45402, 56308, 87078, 78708, 41490, 68958, 102029, 61137, 6668, 104741, 59974, 63316, 93394, 27002, 80410, 13495, 59482, 103983, 35794, 105725};
path = find_path_to_point_of_interest(96794, "Shoppers Drug Mart", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(96794, valid_end_intersections, path));
CHECK(path_cost <= 393.35979775680686998);
valid_end_intersections = {82479};
path = find_path_to_point_of_interest(100432, "Commerce Court parking", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(100432, valid_end_intersections, path));
CHECK(path_cost <= 800.23889069004690100);
valid_end_intersections = {102025, 6339, 1606, 12751, 2376, 2324, 2290, 20025, 69682, 14820, 29104, 86232, 7765, 16975, 1014, 9244, 21369, 103429, 24460, 16462, 85315, 29210, 2954, 98707, 101446, 99962, 31614, 57675, 17010, 92414, 12581, 71793, 49815, 77452, 91245, 92502, 61261, 49579, 22702, 33213, 35826, 61521, 42735, 36000, 59406, 103939, 35151, 54004, 19844, 29581, 16757, 33014, 70058, 41887, 1451, 44754, 24760, 31089, 31857, 106573, 101979, 107521, 68572, 4309, 103323, 103248, 98622, 62004, 23686, 7225, 60370, 90042, 92175, 61318, 6724, 20730, 98946, 11442, 107221, 62041, 12338, 79040, 71545, 70909, 68931, 72646, 41218, 75682, 76109, 90534, 56109, 73344, 75072, 81689, 50236, 100978, 101900, 70747, 8233, 2272, 74435, 24813, 82898, 83204, 96009, 67794, 1387, 6056, 2242, 23123, 10854, 87690, 90, 66053, 66552, 36589, 81814, 90600, 57025, 33577, 32573, 24733, 3803, 98153, 99122, 105007, 725, 84727, 75746, 34810, 90766, 22148, 22525, 36643, 55855, 21221, 99329, 71569, 63993, 21715, 61723, 4650, 25731, 45402, 56308, 87078, 78708, 41490, 68958, 102029, 61137, 6668, 104741, 59974, 63316, 93394, 27002, 80410, 13495, 59482, 103983, 35794, 105725};
path = find_path_to_point_of_interest(31280, "Shoppers Drug Mart", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(31280, valid_end_intersections, path));
CHECK(path_cost <= 324.89795082916731417);
valid_end_intersections = {95360, 38953};
path = find_path_to_point_of_interest(106577, "Gamma-Dynacare Medical Laboratories", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(106577, valid_end_intersections, path));
CHECK(path_cost <= 1936.16287266385324983);
valid_end_intersections = {102025, 6339, 1606, 12751, 2376, 2324, 2290, 20025, 69682, 14820, 29104, 86232, 7765, 16975, 1014, 9244, 21369, 103429, 24460, 16462, 85315, 29210, 2954, 98707, 101446, 99962, 31614, 57675, 17010, 92414, 12581, 71793, 49815, 77452, 91245, 92502, 61261, 49579, 22702, 33213, 35826, 61521, 42735, 36000, 59406, 103939, 35151, 54004, 19844, 29581, 16757, 33014, 70058, 41887, 1451, 44754, 24760, 31089, 31857, 106573, 101979, 107521, 68572, 4309, 103323, 103248, 98622, 62004, 23686, 7225, 60370, 90042, 92175, 61318, 6724, 20730, 98946, 11442, 107221, 62041, 12338, 79040, 71545, 70909, 68931, 72646, 41218, 75682, 76109, 90534, 56109, 73344, 75072, 81689, 50236, 100978, 101900, 70747, 8233, 2272, 74435, 24813, 82898, 83204, 96009, 67794, 1387, 6056, 2242, 23123, 10854, 87690, 90, 66053, 66552, 36589, 81814, 90600, 57025, 33577, 32573, 24733, 3803, 98153, 99122, 105007, 725, 84727, 75746, 34810, 90766, 22148, 22525, 36643, 55855, 21221, 99329, 71569, 63993, 21715, 61723, 4650, 25731, 45402, 56308, 87078, 78708, 41490, 68958, 102029, 61137, 6668, 104741, 59974, 63316, 93394, 27002, 80410, 13495, 59482, 103983, 35794, 105725};
path = find_path_to_point_of_interest(107392, "Shoppers Drug Mart", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(107392, valid_end_intersections, path));
CHECK(path_cost <= 316.21719378521595445);
valid_end_intersections = {5204, 45670, 5185, 82551, 1487, 1833, 12572, 11031, 513, 6997, 63067, 97836, 4182, 727, 16674, 81174, 2259, 45089, 3340, 2292, 9236, 70897, 95463, 18670, 99114, 93480, 1078, 23113, 59300, 20194, 10869, 11016, 24460, 10077, 99992, 2955, 7359, 57768, 23035, 57420, 2142, 4320, 14601, 45640, 107820, 57809, 4756, 62134, 61721, 25555, 21033, 21437, 1219, 69668, 54322, 35151, 56405, 15076, 19848, 41888, 82161, 45499, 88579, 44755, 36643, 57025, 11621, 35124, 2277, 13491, 103732, 78869, 98642, 50657, 4297, 13280, 103325, 20697, 7374, 90859, 70714, 85313, 70080, 30545, 13547, 91, 89185, 16270, 101013, 86929, 11652, 71366, 55837, 51470, 62041, 98166, 67837, 1014, 72647, 72722, 13509, 78657, 90530, 20573, 31198, 75072, 2616, 61318, 78708, 79851, 12380, 31088, 39914, 100978, 59011, 41993, 83226, 20638, 58307, 44748, 108439, 94713, 71708, 41888, 49570, 28929, 10705, 14875, 15327, 96378, 102316, 26561, 31353, 31436, 90149, 86671, 92235, 90611, 105177, 33433, 34329, 16982, 105008, 105754, 10654, 73025, 76161, 89164, 41888, 91364, 22203, 64251, 97329, 96696, 21220, 97512, 5454, 13479, 106280, 35327, 3339, 19847, 24385, 45095, 34069, 86359, 91838, 53707, 36467, 79328, 2569, 91665, 7830, 52498, 6652, 32341, 106756, 63321, 49388, 101345, 93394, 103775, 103980, 18532, 49629, 93660};
path = find_path_to_point_of_interest(1180, "TD Canada Trust", 15.00000000000000000);
path_cost = compute_path_travel_time(path, 15.00000000000000000);
CHECK(path_is_legal(1180, valid_end_intersections, path));
CHECK(path_cost <= 103.98434403649767432);
//Generate random inputs
std::vector<unsigned> intersection_ids;
std::vector<std::string> poi_names;
std::vector<double> turn_penalties;
for(size_t i = 0; i < 400; i++) {
intersection_ids.push_back(rand_intersection(rng));
poi_names.push_back(getPointOfInterestName(rand_poi(rng)));
turn_penalties.push_back(rand_turn_penalty(rng));
}
{
//Timed Test
ECE297_TIME_CONSTRAINT(19466);
std::vector<unsigned> result;
for(size_t i = 0; i < 400; i++) {
result = find_path_to_point_of_interest(intersection_ids[i], poi_names[i], turn_penalties[i]);
}
}
} //find_path_to_point_of_interest_perf_very_hard
} //inter_inter_path_perf_very_hard_public