创新实训十四

本文介绍了一种根据地理位置和距离划分的酒店推荐算法。通过计算多个地点之间的距离,当发现距离超过预设阈值时,将地点分为若干组,确保每组内的地点距离较近。算法详细地展示了如何根据分组结果为每个小组分别推荐酒店,以提供更符合用户需求的旅行住宿建议。
摘要由CSDN通过智能技术生成

根据分组结果推荐酒店
我们已经实现了将多个地点分组,现在根据分组结果按照之前预想的算法进行酒店推荐。
具体实现代码如下:

def multiple_locations_days(city,place,checkin_time,checkout_time):
    #计算出入住总晚数
    nights=night(checkin_time,checkout_time)
    #计算每个地点之间的相互距离,得到距离矩阵
    #判断是否有两个地点相隔较远,目前以12km为界限
    maximum=12
    divide=False
    far=[]
    place_distance=[[0 for k in range(len(place))] for k in range(len(place))]
    for i in range(len(place)):
        j=i
        for j in range(len(place)):
            place_distance[i][j]=distance(place[i],place[j])
            #对称矩阵
            place_distance[j][i]=place_distance[i][j]
            if(place_distance[i][j]>=maximum):
                far.append([i,j])
                divide=True
        place_distance[i][i]=0
    #若不需要分组,那么推荐方法同multiple_locations,是否需要分组用是否相隔较远判断
    #否则先将地点分组,每组地点距离较近,且每组地点数量不超过4
    results=[]
    if(divide):
        #得到分组矩阵,用下标表示
        group=divide_group(place_distance,far,maximum)
        #分别对每一组地点进行推荐
        #得到第一组地点
        place_group_1=[]
        for i in range(4):
            if(group[0][i]!=99):
                place_group_1.append(place[group[0][i]])
        #计算出第一组的推荐列表
        hotels_1=multiple_locations(city,place_group_1,checkin_time,checkout_time)
        results.append(hotels_1)
        #得到第二组地点
        place_group_2=[]
        for i in range(4):
            if(group[1][i]!=99):
                place_group_2.append(place[group[1][i]])
        #计算出第二组的推荐列表
        hotels_2=multiple_locations(city,place_group_2,checkin_time,checkout_time)
        results.append(hotels_2)
        #判断是否存在第三组
        if(group[2][0]!=99):
            # 得到第三组地点
            place_group_3 = []
            for i in range(4):
                if (group[2][i] != 99):
                    place_group_3.append(place[group[2][i]])
            # 计算出第三组的推荐列表
            hotels_3 = multiple_locations(city, place_group_3, checkin_time, checkout_time)
            results.append(hotels_3)
        #判断是否存在第四组
        if(group[3][0]!=99):
            # 得到第四组地点
            place_group_4 = []
            for i in range(4):
                if (group[3][i] != 99):
                    place_group_4.append(place[group[3][i]])
            # 计算出第四组的推荐列表
            hotels_4 = multiple_locations(city, place_group_4, checkin_time, checkout_time)
            results.append(hotels_4)
    else:
        results=multiple_locations(city,place,checkin_time,checkout_time)
    return results

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值