def testGetTopScore(self): t1 = eum.CampusTrip((1, 2, 3, 4), 60, 1, "fake") t2 = eum.CampusTrip((10, 20, 30, 40), 120, 2, "fake") t3 = eum.CampusTrip((100, 200, 300, 400), 180, 3, "fake") base = eum.UserBase() josh = eum.UserModel() self.assertEqual(josh.get_top_n((t1, t2, t3), 1), [t3]) self.assertEqual(josh.get_top_n((t1, t2, t3), 2), [t3, t2])
def do_utility_analysis(info): db = edb.get_utility_model_db() at = int((datetime.datetime.utcnow() - datetime.datetime.utcfromtimestamp(0)).total_seconds()) value_line = info.split(";") start = value_line[0] end = value_line[1] time_info = {} if value_line[2] == "leaveNow": time_info["leave"] = True time_info["when"] = datetime.datetime.now() print "leaveNow" elif value_line[2] == "leaveAt": time_info["leave"] = True time_info["when"] = str_time_to_datetme(value_line[3]) print "leaveAt" elif value_line[2] == "thereBy": time_info["leave"] = False time_info["when"] = str_time_to_datetme(value_line[3]) print "arriveAt" bike = get_bike_info(value_line[4]) user = eum.UserModel(bike) user.increase_utility_by_n("time", int(value_line[5])) user.increase_utility_by_n("sweat", int(value_line[6])) user.increase_utility_by_n("scenery", int(value_line[7])) user.increase_utility_by_n("social", int(value_line[8])) time = int(value_line[5]) sweat = int(value_line[6]) scenery = int(value_line[7]) social = int(value_line[8]) when = None if time_info["leave"]: when = time_info["when"] trips = user.get_top_choice_places(start, end) ts = "" for t in trips: ts += (str(t.make_for_browser())) ts += ";" return json.dumps({"value": ts})
def testDelta(self): base = eum.UserBase() josh = eum.UserModel(base) josh.increase_utility_by_n("scenery", 100) josh.increase_utility_by_n("noise", 10) start, end = (1, 1), (2, 2) ## GPS points josh.add_to_last(start, end) ## would find top score for a trip here self.assertFalse(josh.delta(start, end)) josh.increase_utility_by_n("scenery", 1) self.assertTrue(josh.delta(start, end)) josh.add_to_last(start, end) self.assertFalse(josh.delta(start, end))
def testE2E(self): base = eum.UserBase() josh = eum.UserModel() josh.increase_utility_by_n("time", 10) josh.increase_utility_by_n("noise", 10) start, end = (37.504712, -122.314189), (37.509580, -122.321560 ) ## GPS points josh.add_to_last(start, end) curr_time = datetime.datetime.now() curr_month = curr_time.month curr_year = curr_time.year curr_minute = curr_time.minute curr_day = curr_time.day curr_hour = curr_time.hour self.base_url = os.environ("OTP_SERVER") walk_otp = otp.OTP(self.base_url).route( start, end, "WALK", eum.write_day(curr_month, curr_day, curr_year), eum.write_time(curr_hour, curr_minute), False) bike_otp = otp.OTP(self.base_url).route( start, end, "BICYCLE", eum.write_day(curr_month, curr_day, curr_year), eum.write_time(curr_hour, curr_minute), True) choices = walk_otp.get_all_trips(0, 0, 0) + bike_otp.get_all_trips( 0, 0, 0) trips = josh.get_top_choices_lat_lng(start, end, tot_trips=choices) end = (37.512048, -122.316614) self.assertTrue(josh.delta(start, end)) josh.add_to_last(start, end) self.assertFalse(josh.delta(start, end)) josh.increase_utility_by_n("time", -200) josh.add_to_last(start, end) new_choices = josh.get_top_choices_lat_lng(start, end, tot_trips=choices)
def testNormalizationTimes(self): base = eum.UserBase() josh = eum.UserModel() josh.increase_utility_by_n("scenery", 100) josh.increase_utility_by_n("noise", 10) start, end = (37.504712, -122.314189), (37.509580, -122.321560 ) ## GPS points josh.add_to_last(start, end) curr_time = datetime.datetime.now() curr_month = curr_time.month curr_year = curr_time.year curr_minute = curr_time.minute curr_day = curr_time.day curr_hour = curr_time.hour self.base_url = os.environ("OTP_SERVER") walk_otp = otp.OTP(self.base_url).route( start, end, "WALK", eum.write_day(curr_month, curr_day, curr_year), eum.write_time(curr_hour, curr_minute), False) bike_otp = otp.OTP(self.base_url).route( start, end, "BICYCLE", eum.write_day(curr_month, curr_day, curr_year), eum.write_time(curr_hour, curr_minute), False) choices = walk_otp.get_all_trips(0, 0, 0) + bike_otp.get_all_trips( 0, 0, 0) normal_times = eum.get_normalized_times(choices) normal_sweat = eum.get_normalized_sweat(choices, True) normal_beauty = eum.get_normalized_beauty(choices) print("normal times = %s" % normal_times) print("normal sweat = %s" % normal_sweat) print("normal beauty = %s" % normal_beauty) self.assertAlmostEqual(sum(normal_times), 1) self.assertAlmostEqual(sum(normal_sweat), 1) self.assertAlmostEqual(sum(normal_beauty), 1)