示例#1
0
def getRouteMatchScore(car, passenger):

    cursor = RouteInfo.initDatabase()
    
    #车主起点到车主终点行车路径规划距离D0
    distance_0 = RouteInfo.queryDistanceFromDriveTable( car['start_simple_lng'], car['start_simple_lat'],
                                                                    car['end_simple_lng'], car['end_simple_lat'])
    #车主起点到乘客起点行车路径规划距离D1
    distance_1 = RouteInfo.queryDistanceFromDriveTable( car['start_simple_lng'], car['start_simple_lat'],
                                                                    passenger['start_simple_lng'], passenger['start_simple_lat'])
    #乘客起点到乘客终点行车路径规划距离D2
    distance_2 = RouteInfo.queryDistanceFromDriveTable( passenger['start_simple_lng'], passenger['start_simple_lat'],
                                                                    passenger['end_simple_lng'], passenger['end_simple_lat'])
    #乘客终点到司机终点行车路径规划距离D3
    distance_3 = RouteInfo.queryDistanceFromDriveTable( passenger['end_simple_lng'], passenger['end_simple_lat'],
                                                                    car['end_simple_lng'], car['end_simple_lat'])
    
    #计算车主绕行距离: d = (D1+D2+D3) - D0
    car_extra_distance = (distance_1 + distance_2 +distance_3) - distance_0
    #计算车主绕行因子:  r1 = d / D0,     ( 0< r1 < 1 )  越小越好
    car_extra_factor= car_extra_distance / distance_0 
    #计算车主收益因子:  r2 = D2 / D0,(0< r2 )  越大越好
    car_earn_factor= distance_2 /distance_0
    
    car_extra_plus = 1.5
    if( car_earn_factor< 0.1 ):
        match_factor = 0
    elif(car_extra_factor==0 and  car_earn_factor == 0 ):
        match_factor = 0
    else:
        match_factor = car_earn_factor - car_extra_plus*car_extra_factor
        
    #print "getRouteMatchScore, d0=%d, d1=%d, d2=%d, d3=%d"%(distance_0, distance_1, distance_2, distance_3)
    # print "车主绕行距离=%d,  车主绕行因子=%f,  车主收益因子=%f"%( car_extra_distance, car_extra_factor, car_earn_factor)   
    return (match_factor, car_extra_distance, car_extra_factor, car_earn_factor)     
示例#2
0
def findMatchRoute(test_car_route_id ):
    #test_car_route_id = 2178
    table_name = 'recommend_'+ str(test_car_route_id) +'_tb'
    start_time = datetime.datetime.now()
    #go through all route in database 
    cursor = RouteInfo.initDatabase()
    
    #新建这条路线的匹配表
    RouteInfo.createRecommendFactorTable(cursor, table_name)
    
    #车主信息
    car = dict()
    try:
        get_car_sql =  "SELECT * from recommend_route_tb where route_id=%d "%test_car_route_id 
        print get_car_sql
        count = cursor.execute( get_car_sql)
        print 'database return %d line'%(count)
        result = cursor.fetchone()
    except Exception, e:
        print e