一种车辆预约方法、服务器及计算机存储介质与流程

文档序号:18199060发布日期:2019-07-17 06:02阅读:128来源:国知局
一种车辆预约方法、服务器及计算机存储介质与流程

本发明涉及预约技术,尤其涉及一种车辆预约方法、服务器及计算机存储介质。



背景技术:

共享单车日益走进我们生活。为了方便用户用车,一些共享单车企业推出了车辆预约业务,即对于支持全球定位系统(gps)定位功能的共享单车,用户可以在手机应用(app)的地图上查看附近有哪些共享单车,并且选中一辆车辆进行预约。共享单车后台将为该预约用户一直预留该辆自行车,直到预约用户取走该辆自行车,或者是预约被取消。在车辆被预留期间,任何其他用户将不能使用该辆自行车。

在车辆投入较少的区域,用户很容易根据手机app的地图导航功能找到自己所预约的车辆,因此车辆预约功能能够正常工作。但是,在一些人口密集区域,如地铁站门口、公交站口、大型写字楼或企事业单位门口,在一天的很多时段中经常会出现共享单车扎推的现象。这时,在茫茫车海中如何有效找到自己预约的车辆,通常会比较困难。

图1为某共享单车软件上显示的某企业门口的共享单车分布情况,是该企业上班期间(如早8:30到晚5:30)的共享单车分布,显然,大量共享单车扎堆分布,在这种扎堆分布的情况下,要想找到自己预约的车辆,会比较困难。

由于共享单车定位软件通常存在5m以上的定位误差,因此,当出现共享单车扎堆现象时,预约用户仅仅通过地图导航功能很难一次性找到自己所预约的车辆。即预约用户找车难。

对于非预约用户而言,通常需要在手机上输入车辆的车牌号,或者用手机相机扫描车辆的二维码,来解锁车辆。当非预约用户恰好选中某个预约车辆时,该用户将被app告知该辆车辆已被他人预约而不能使用,因此将不得不换一辆车辆重新尝试解锁操作。即对非预约用户而言,明明周围有大量闲置车辆,却因为某个车辆被他人预约而不能使用,而不得不重新花费额外时间重新找车,其用户体验必然严重下降。

因此,在车辆扎堆时,采用现有的车辆预约机制,不仅会造成预约用户找车难问题,还会延长非预约用户平均取车时间。



技术实现要素:

本发明的主要目的在于提出一种车辆预约方法、服务器及计算机存储介质,旨在解决现有技术中存在的上述问题。

为实现上述目的,本发明提供一种车辆预约方法,包括:

接收第一用户发来的车辆预约请求;

根据所述车辆预约请求创建第一预约车辆集合;

接收第二用户发来的车辆使用请求;

根据所述车辆使用请求创建第一使用车辆集合;

从所述第一预约车辆集合和所述第一使用车辆集合中选择可用车辆,分配所述可用车辆给第二用户使用;

所述第一预约车辆集合不等于所述第一使用车辆集合。

上述方案中,根据所述车辆预约请求创建第一预约车辆集合,包括:

从所述车辆预约请求中解析出第一用户需要预约的第一车辆标识和第一用户的标识;

根据所述第一车辆标识创建第一预约车辆集合。

上述方案中,所述方法还包括:

若所述第一预约车辆集合中车辆数目大于或等于1,则确定所述第一用户预约成功。

上述方案中,所述方法还包括:

建立第一查找表以及第二查找表;其中,所述第一查找表中包括每个预约用户到其对应的可用车辆集合的索引映射;所述第二查找表中包括每个预约车辆到其对应的预约用户列表的索引关系;

相应的,所述创建第一预约车辆集合之后,所述方法还包括:

更新第一查找表,在第一查找表中增加第一用户的标识到第一预约车辆集合的索引关系;

更新第二查找表,为第一预约车辆集合中的每个车辆的预约用户列表中增加第一用户的标识。

上述方案中,根据所述第一车辆标识创建第一预约车辆集合,包括:

根据第一车辆标识,确定第一车辆位置,所述第一车辆位置是第一车辆标注所标识的车辆的位置;

根据第一车辆位置,确定第二车辆集合,所述第二车辆集合中任一车辆的位置距离第一车辆位置小于或等于第一阈值;

针对所述第二车辆集合中的每一个车辆,判断是否为可用车辆,基于所述第二车辆集合中的可用车辆,构造第一预约车辆集合;

构造第一预约车辆集合,其中,第一预约车辆集合中的车辆为第二车辆集合中的可用车辆。

上述方案中,所述车辆使用请求中携带有第二用户申请使用的第二车辆标识和第二用户的标识;

所述方法还包括:

根据所述第二车辆标识和所述第二用户的标识判断第二车辆是否为第二用户的可用车辆;

如果判断出第二车辆是第二用户的可用车辆,则将第二车辆分配给第二用户使用;否则,拒绝第二用户对第二车辆的使用申请。

上述方案中,判断第二车辆是否为第二用户的可用车辆的判断条件,至少包括:所述第二车辆是可用车辆。

上述方案中,所述判断包括所述任一车辆和/或所述第二车辆构成的给定车辆是否为可用车辆的方法还包括:

检测所述给定车辆所对应的预约用户标识集合,所述预约用户标识集合通过以给定车辆为索引,检索第二查找表获得,所述第二查找表中包括每个预约车辆到其对应的预约用户列表的索引关系;

若所述预约用户标识集合不存在,则所述给定车辆没有被任何用户预约,判断出所述给定车辆为可用车辆;否则,所述给定车辆已被至少一个用户预约;

遍历所述预约用户标识集合中每一个用户标识,判断用户是否只预约了所述给定车辆这一辆车;

如果存在任意一个用户只预约了所述给定车辆这一辆车,则判断给定车辆不是可用车辆;否则,则判断给定车辆为可用车辆。

上述方案中,当所述第二用户同时也是所述第一用户时,判断所述第二车辆是非预约用户的可用车辆的判断条件,至少还包括以下方式中的至少一种:

所述第二车辆是所述第一预约车辆集合中的元素;

所述第二车辆的位置距离和所述第一用户发送的车辆预约请求中携带第一车辆标识所标识的第一车辆的位置小于或等于第二阈值。

上述方案中,当所述第二用户同时也是所述第一用户时,将所述第二车辆分配给所述第二用户使用之后,所述方法还包括:

获得所述第一用户所关联的第一预约车辆集合,第一预约车辆集合通过以第一用户为索引,检索第一查找表获得;

针对第一预约车辆集合中的每一车辆,所述每一车辆以第四车辆表示时(即:将所述每一车辆记为第四车辆),获得第四车辆所对应的预约用户标识集合,预约用户标识集合可以通过以第四车辆为索引,检索第二查找表获得;

从所述预约用户标识集合中删除所述第一用户;

从所述第一查找表中删除以所述第一用户为索引的表项。

上述方案中,将所述第二车辆分配给所述第二用户使用之后,所述方法还包括:

检测所述第二车辆所对应的预约用户标识集合,所述预约用户标识集合通过以第二车辆为索引,检索第二查找表获得;

如果所述预约用户标识集合存在,则所述第二车辆已被至少一个用户预约,则遍历所述预约用户标识集合中每一个用户标识;

针对所述预约用户标识集合中每一个用户标识,所述每一个用户标识以第三用户表示时(即将每一个用户标识记为第三用户),第三用户从对应的预约车辆集合中删除所述第二车辆,其中,所述预约车辆集合通过以第三用户为索引,检索第一查找表获得;

从所述第二查找表中删除以所述第二车辆为索引的表项。

上述方案中,所述方法还包括:

第x用户从对应的预约车辆集合中删除第y车辆之后,如果第x预约车辆集合中只包含一辆车辆,所述一辆车辆以第z车辆表示,则检测所述第z车辆表示所对应的预约用户标识集合,所述预约用户标识集合通过以第z车辆为索引,检索第二查找表获得;

遍历所述预约用户标识集合中排除第x用户之外的每一个用户标识;

针对所述预约用户标识集合中排除第x用户之外的每一个用户标识,所述每一个用户标识以x1表示时,获得第x1用户所对应的预约车辆集合,所述预约车辆集合通过以第x1用户为索引,检索第一查找表获得;

第x1用户从对应的预约车辆集合中删除所述第z车辆。

其中,x、x1为用户标志;y、z为车辆标志。

上述方案中,预留车辆后,所述方法还包括:更新用户侧地图显示,仅对于需要预留车辆的用户,显示预留车辆。

上述方案中,第一用户、第二用户、第三用户都是指代在预约和申请使用车辆过程中涉及的用户,“第一、第二、第三”只是为了方便描述所引入的指代描述,可以等同,也可以不同,并不限定本发明的保护范围。同理,第一车辆、第二车辆、第三车辆、第四车辆、第五车辆是指代在预约和申请使用车辆过程中涉及的任一辆车辆,“第一、第二、第三、第四、第五”只是为了方便描述所引入的,可以等同,也可以不同,并不限定本发明的保护范围。

本发明提供一种服务器,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器用于运行所述计算机程序时,执行上述方案任一项所述方法的步骤。

本发明提供的一种计算机存储介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时实现上述方案任一项所述方法的步骤。

本发明的方法中,接收第一用户发来的车辆预约请求;根据所述车辆预约请求创建第一预约车辆集合;接收第二用户发来的车辆使用请求;根据所述车辆使用请求创建第一使用车辆集合;从所述第一预约车辆集合和所述第一使用车辆集合中选择可用车辆,分配所述可用车辆给第二用户使用;所述第一预约车辆集合不等于所述第一使用车辆集合。采用本发明的车辆预约机制,方便预约用户和非预约用户快捷的进行约车、找车和取车,不仅避免了预约用户找车难的问题,还缩短了非预约用户平均取车的时间。

附图说明

图1为某共享单车软件上显示的某企业门口的共享单车分布情况示意图;

图2为本发明一实施例的方法流程示意图;

图3为本发明实施例中单车预约流程的示意图;

图4为本发明实施例中区域预约流程的示意图;

图5-10为本发明实施例中预约车辆的多个场景示意图;

图11为本发明实施例中查找表中映射关系的场景示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步详细说明。

实施例一、

本发明实施例的车辆预约方法,如图2所示,包括:

步骤101、接收第一用户(如预约者)发来的车辆预约请求。

步骤102、根据所述车辆预约请求创建第一预约车辆集合。

通过步骤101-102,在使用前,为用户创建第一预约车辆集合,即预约池,目的是先保底,确保后续用户想使用车辆时能预约上,至少有一辆车是给用户预留在该预约池的。

步骤103、接收第二用户(如车辆请求使用者,包括预约者和非预约者)发来的车辆使用请求。

步骤104、根据所述车辆使用请求创建第一使用车辆集合。

这里,除了预约池,还可以根据一些使用策略,比如,距离用户比较近的距离有可用的车辆,那么,可以根据该可用的车辆为第二用户创建第一使用车辆集合,即使用池。

步骤105、从所述第一预约车辆集合和所述第一使用车辆集合中选择可用车辆,分配所述可用车辆给第二用户使用。

这里,当第一用户等于第二用户时,由所述第一预约车辆集合和所述第一使用车辆集合构成备选的目标车辆集合,给予更多的车辆选择机会。服务器可以从备选的目标车辆集合中选择可用车辆,分配可用车辆给第二用户使用。

步骤106、所述第一预约车辆集合不等于所述第一使用车辆集合。

本文中,第一用户用于指代预约者;第二用户用于指代车辆请求使用者,包括预约者和非预约者,不做赘述。“第一用户”和“第二用户”只是为了区分用户在使用前的预约状态和使用时的状态。

本发明实施例中,在使用车辆前预先配置有预约池,方便用户使用车辆,确保用户至少有一辆车可以使用。而预约池和用户申请使用车辆的使用池二者可以是不同的(当然,不排除预约池和使用池二者相同的场景)。

容易理解的一个例子是:预约池中有a、b、c、d四辆车,这是授权给用户使用中选择的保底策略,即:用户在预约池中至少有一辆车可选。而使用池中有e、f两辆车,这是除了保底策略外,给予用户更多选择的策略。那么,用户不仅可以从预约池中选择要使用的车辆,而且,也可以从使用池中选择要使用的车辆,比如,使用池中的车辆距离用户更近,那么,为了灵活性和便捷性,用户就可以从使用池中的e、f两辆车中任选一辆。

本发明实施例中,除了服务器侧可以为终端配置预约池和使用池之外,还可以进一步配置时间策略,即:用户的预约或使用权限在所配置的时间内有效。

本发明实施例的车辆预约方法,包括:

步骤201、第一用户发送车辆预约请求,所述车辆预约请求中携带有所述用户需要预约的第一车辆标识和所述用户的标识。

步骤202、服务器根据所述车辆预约请求中携带的第一车辆标识,创建第一预约车辆集合。

步骤203、如果第一预约车辆集合中车辆数目大于或等于1,则确定该用户预约成功。

本发明实施例中,所述方法还包括:

服务器更新第一查找表,在第一查找表中增加第一用户到第一预约车辆集合的索引关系;服务器更新第二查找表,为第一预约车辆集合中的每个车辆的预约用户列表中增加第一用户。

其中,所述第一查找表中包括每个预约用户(如第一用户)到其对应的可用车辆集合(第一预约车辆集合)的索引映射;所述第二查找表中包括每个被预约车辆(如第一预约车辆集合中的每个车辆)到其对应的预约用户列表(如至少包括第一用户的预约用户列表)的索引关系。

需要指出的是:

本文中,u:是用户user的缩写;v:是车辆vehicle的缩写,不做赘述。

第一查找表={键:用户标识un;值:车辆标识集合},其中,车辆标识集合={值:车辆标识};的物理含义是:是用户un所对应的预约车辆标识的集合。映射关系:第一查找表[用户标识]=车辆标识集合。第一查找表的数据结构可以采用哈希表形式。可用车辆集合的数据结构可以采用可变长度数组形式。

第二查找表={键:车辆标识vk;值:用户标识集合},其中,用户标识集合={值:用户标识};的物理含义是:是车辆vk所对应的预约用户集合。映射关系:第二查找表[车辆标识]=用户标识集合。第二查找表的数据结构可以采用哈希表形式。用户标识集合的数据结构可以采用可变长度数组形式。

本发明实施例所对应的一个操作流程包括:

●针对第一用户标识确定第一预约车辆集合

●更新第一查找表;

a)操作:在第一查找表中增加新项,第一查找表[第一用户标识]=第一预约车辆集合,即

●针对第一预约车辆集合中的每一个车辆标识更新第二查找表lt2,其中,vk表示第一预约车辆集合中第k个车辆标识;

a)操作:

如果第二查找表[vk]不存在(即),在第二查找表中增加新项,第二查找表[vk]={第一用户标识},即否则,获得第二查找表[vk]所对应的用户标识集合

中增加新项,即

本发明实施例中,服务器根据所述车辆预约请求中携带的第一车辆标识,创建第一预约车辆集合,包括:

服务器根据第一车辆标识,确定第一车辆位置;其中,第一车辆位置是第一车辆标注所标识的车辆的位置;根据第一车辆位置,确定第二车辆集合;其中,所述第二车辆集合中任一车辆的位置距离第一车辆位置小于或等于第一阈值;针对第二车辆集合中的每一个车辆vk,判断vk是否为可用车辆(判断是否为可用车辆在后续实施例中描述)。构造第一预约车辆集合,其中,第一预约车辆集合中的车辆为第二车辆集合中的可用车辆。

需要指出的是,一个实施例的处理流程有如下步骤:

●step1:基于第一车辆标识的地理位置信息,创建第二车辆集合其中,所述第二车辆集合中任一车辆vk的位置距离第一车辆位置小于或等于第一阈值,即

●step2:遍历第二车辆集合中任一车辆判断vk是否为可用车辆;

●step3:构造第一预约车辆集合遍历第二车辆集合中任一车辆

a)如果vk为可用车辆,则将vk增加进中,即

车辆预约后,还包括车辆使用的申请。本发明实施例的车辆使用申请方法,包括:

步骤301、第二用户发送车辆使用请求,所述车辆使用请求中携带有所述用户申请使用的第二车辆标识和所述用户的标识;

步骤302、服务器判断第二车辆是否为第二用户的可用车辆;

步骤303、如果判断第二车辆是第二用户的可用车辆,则将第二车辆分配给第二用户使用;否则,如果判断第二车辆不是第二用户的可用车辆,则拒绝第二用户对第二车辆的使用申请。

本发明实施例中,所述服务器判断第二车辆是第二用户的可用车辆的判断条件,至少包括:第二车辆是可用车辆(判断是否为可用车辆在后续实施例中描述)。

本发明实施例中,当第二车辆不是可用车辆时,第二车辆肯定不是第二用户的可用车辆。但是,当第二车辆是可用车辆时,服务器还可能需要通过进一步的条件判断第二车辆是不是第二用户的可用车辆。

特别地,对于非预约用户,第二车辆是否为第二用户的可用车辆的判断条件就等效于第二车辆是否为可用车辆的判断条件,即:1)当第二车辆是可用车辆时,第二车辆就是非预约用户的可用车辆;2)而当第二车辆不是可用车辆时,第二车辆就不是非预约用户的可用车辆。

本发明实施例中,所述服务器判断车辆vk是否为可用车辆,所述方法包括:

获得vk所对应的预约用户标识集合如果不存在(或),表示vk没有被任何用户预约,则判断vk为可用车辆;否则,如果存在(或),表示vk已被至少一个用户预约,则遍历中每一个用户标识判断是否存在un只预约了vk这一辆车。

a)如果存在任意一个un,使得该un只预约了一辆车,则服务器需要为用户un预留车辆vk,因此判断vk不是可用车辆。具体判断方法为:针对un,查找第一查找表,获得un所对应的预约车辆集合如果中车辆数目等于1,则判断该un只预约了一辆车。

b)否则,如果对于中所有用户un(un∈uk),都预约了2俩及以上的车辆,则判断vk为可用车辆。具体判断方法为:针对un,查找第一查找表,获得un所对应的预约车辆集合如果中车辆数目大于1,则判断该un预约了2俩及以上的车辆。

本发明实施例中,所述服务器判断车辆vk是否为可用车辆,所述方法还包括:

获得vk所关联的用户标识集合即用户标识集合(即);如果表示vk没有被任何用户预约,则判断vk为可用车辆;否则,如果表示vk已被至少一个用户预约,则遍历中每一个用户标识判断un是否只预约了一辆车。

如果flaga:判断un是否只预约了一辆车,则:

a)获得un所关联的预约车辆集合(即),统计中包含的车辆数目其中,|s|表示集合s中包含的元素的数目;

b)如果则判断un只预约了一辆车,这时服务器需要为用户un预留车辆vk。因此,判断vk为不可用车辆。结束对的遍历;

c)否则,如果则判断un预约了2俩及以上的车辆,此时尚不能判断vk是否为可用车辆;返回flaga,继续遍历中的下一个用户un+1是否只预约了一辆车。

当遍历完中的每一个用户un,且判断每个用户un都预约了2俩及以上的车辆时,判断vk为可用车辆。

本发明实施例中,当第二用户同时也是第一用户时,所述服务器判断第二车辆是非预约用户的可用车辆的判断条件,至少还包括以下方式中的至少一种:

是第一预约车辆集合中的元素;

的位置距离和发送的车辆预约请求中携带第一车辆标识所标识的第一车辆的位置小于或等于第二阈值。

需要指出的是:第二用户同时也是第一用户指的是:先发送车辆预约请求,然后再发出车辆使用申请。

服务器通过多种方法判断所申请的车辆是否为的可用车辆。

实施例1:只要车辆是可用车辆,即使不落在服务器之前为创建的第一预约车辆集合中,服务器也将分配给使用;

实施例2:只要当车辆同时满足2个条件——即既是可用车辆,同时也落在服务器之前为创建的第一预约车辆集合中——时,服务器才将分配给使用;

实施例3:只有当车辆是可用车辆,并且当之前预约时所指定的车辆距离小于或等于第二阈值(表示之后申请的车辆和之前预约的车辆距离较近)时,服务器才将分配给使用。注意到,在该实施例中,可能不落在服务器之前为创建的第一预约车辆集合中,即可能是在预约之后其他用户新还的车辆。

本发明实施例中,当第二用户同时也是第一用户时,所述将第二车辆分配给第二用户使用之后,所述方法还包括:

●获得所关联的预约车辆集合

●针对预约车辆集合中的每一辆车辆获得vk所对应的预约用户标识集合

a)从预约用户标识集合中删除元素

●从第一查找表中删除以为索引的表项。

需要指出的是:从第一查找表中删除到第一预约车辆集合的索引关系,包括:获得所关联的预约车辆集合从第一查找表中删除到第一预约车辆集合的索引关系,即从第一查找表中删除以为索引的表项。

在一实施例中,服务器还会删除可用车辆集合以释放计算机存储空间。

本发明实施例中,所述将第二车辆分配给第二用户使用之后,还包括:

获得所对应的预约用户标识集合

●如果存在(或),表示已被至少一个用户预约,则遍历中每一个用户标识

a)针对中的每一个un,获得其所对应的预约车辆集合

b)在集合中删除元素

从第二查找表中删除以为索引的表项。

本发明实施例中,所述在预约车辆集合中删除元素所述方法还包括:当从集合中删除元素之后,如果中只包含1辆车辆(即),表示un只预约了一辆车这时服务器需要为用户un预留车辆

这里,所述服务器需要为用户un预留车辆的方法包括:

●获得所对应的预约用户标识集合

●遍历中每一个用户标识

a)如果um≠un,针对中的每一个um,获得其所对应的预约车辆集合即um=第一查找表[um];

b)在集合中删除元素

如果当从中删除元素如果中只包含1辆车辆那么表示um只预约了一辆车这时服务器需要继续为用户um预留车辆具体方法同上,直至所有用户的预约车辆集合中都包含2辆及以上的车辆。

本发明实施例中,所述服务器需要为用户un预留车辆所述方法还包括:更新用户侧地图显示,对于un,显示预留车辆而对于un以外的其他车辆,不显示预留车辆

基于上述实施例,以如下车辆预约和使用的几个应用场景对其进行说明:

在一些热点地区,共享单车扎推,导致预约用户找车难。另外,对于非预约用户,可能会多次扫码到已被预约车辆,导致取车流程长,影响用户体验。

针对上述问题,基于本发明实施例,可以实现基于区域预约和范围解锁功能,即:1)区域预约:用户预约的不是特定单辆自行车,而是一个区域内任一辆自行车的骑行资格;2)范围解锁:预约用户在app选中的自行车一定预设范围(e.g.,5m)内的所有非预留自行车都可解锁骑行。

通过上述技术,可有效降低预约用户找车难度,并降低非预约用户平均开锁尝试次数,可以显著改善用户体验。

如图3所示为单车预约流程,初始时刻(t1),路面都有3辆车辆(b1、b2、b3)可用。单车预约流程中,ue1在t2时刻预约车辆b1。在t3时刻,未预约用户ue2想直接解锁用车。ue2先尝试解锁b1,但是服务器发现b1已经被ue1预约了,因此,服务器通知ue2该车辆b1已被他人预约,不能使用。ue2只好在t4时刻重新尝试解锁b2,并且成功取车。因此ue2共尝试了2次,才能成功解锁车辆。

而在t5时刻,预约用户ue1尝试解锁用车。由于b1和b3地理位置较近,ue1并不清楚b1和b3中哪辆车是自己所预约的车辆。ue1先尝试解锁b3。由于ue1实际上预约的是车辆b1,因此服务器通知ue1该车辆b3不是其预约的车辆,不能使用。ue2只好在t6时刻重新尝试解锁b1,并且成功取车。因此预约ue1共尝试了2次,才能成功解锁车辆。

如图4所示为区域预约流程,初始时刻(t1),路面都有3辆车辆(b1、b2、b3)可用。区域预约流程中,ue1在t2时刻申请预约车辆b1。服务器为ue1将b1及其附近的车辆b2和b3都给ue1预留。

在t3时刻,未预约用户ue2想直接解锁用车。ue2先尝试解锁b1。服务器发现,如果把b1分配给ue2使用,ue1还剩2辆车可用,即ue1仍然有车可用,因此服务器同意把b1分配给ue2使用。因此,ue2只需尝试1次,就能成功解锁车辆。

而在t4时刻,预约用户ue1尝试解锁用车。由于b2和b3都离ue1最先申请预约的车辆b1地理位置较近,ue1并不清楚b1、b2和b3中哪辆车是自己所预约的车辆。其实,ue1也不需要分清楚哪辆车是其之前预约的车辆。

ue1先尝试解锁b2。虽然b2不是ue1在终端侧最先申请预约的车辆(ue1在终端侧最先申请预约的车辆的是b1),但是b2是服务器为其预留的车辆集合中(服务器为ue1最先预留的车辆集合是{b1、b2、b3}。但是在t3时刻,b1已经被其他用户取走,因此,服务器为ue1预留的车辆集合变更为{b2,b3})的一辆,因此服务器同意把b2分配给ue1使用。因此,ue1只需尝试1次,就能成功解锁车辆。

对比图3和图4所示的单车预约流程和区域预约流程,可以发现,本实施例提出的区域预约流程能够显著降低预约用户(如ue1)和非预约用户(如ue2)用车时的平均解锁次数,进而提升用户体验。

具体的,针对区域预约流程,为了保证预约用户一定有车可用,本案进一步提出了详细的车辆预约算法。图5-图11以一种实施例的形式,给出了车辆预约处理流程。注意到,在对该处理流程的介绍中,应用到了上述各个实施例中所述的方法流程。

如图5所示,t1时刻为初始状态,某区域中存在四辆车v1-v4。第一查找表中包括每个预约用户(如第一用户)到其对应的可用车辆集合(第一预约车辆集合)的索引映射。第二查找表中包括每个被预约车辆(如第一预约车辆集合中的每个车辆)到其对应的预约用户列表(如至少包括第一用户的预约用户列表)的索引关系。第一查找表第二查找表

如图6所示,在t2时刻,用户u1提出车辆预约请求,其中其预约的车辆为该区域中的车辆v2。

服务器为u1创建以v2为中心的第二车辆集合={v1,v2,v3},服务器判断第二车辆集合中所有车辆都是可用车辆。服务器为u1创建第一预约车辆集合=第二车辆集合={v1,v2,v3}。服务器更新第一查找表和第二查找表。更新后得到的查找表分别为:第一查找表lt1=[u1=>{v1,v2,v3}],第二查找表lt2=[v1=>{u1},v2=>{u1},v3=>{u1}]。

如图7所示,在t3时刻:另一用户u2提出车辆预约请求,其中,其预约的车辆为v4。

服务器为u2创建以v4为中心的第二车辆集合={v3,v4},服务器判断第二车辆集合中所有车辆都是可用车辆。服务器为u2创建第一预约车辆集合=第二车辆集合={v3,v4}。服务器更新第一查找表和第二查找表。更新后得到的查找表分别为:第一查找表lt1=[u1=>{v1,v2,v3},u2=>{v3,v4}],第二查找表lt2=[v1=>{u1},v2=>{u1},v3=>{u1,u2},v4=>{u2}]。

如图8所示,t4时刻:非预约用户u3提出车辆使用请求,其中其所申请使用的车辆为v4。

服务器判断v4是可用车辆,且将v4分配给u3使用,服务器发现v4是u2的预约车辆之一,即lt2[v4]={u2},因此,从u2的预约车辆集合u2=>{v3,v4}中删除v4,且从第二查找表中删除以v4为索引的表项,则更新后的第一查找表和第二查找表分别为:

第一查找表lt1=[u1=>{v1,v2,v3},u2=>{v3}];

第二查找表lt2=[v1=>{u1},v2=>{u1},v3=>{u1,u2}]

更进一步的,服务器发现中只包含1俩车辆v3,那么表示u2只预约了一辆车v3,这时服务器需要继续为用户u2预留车辆v3。通过说明书正文中所述的“唯一预留”处理后,服务器将第一查找表和第二查找表分别更新为:

第一查找表lt1=[u1=>{v1,v2},u2=>{v3}];

第二查找表lt2=[v1=>{u1},v2=>{u1},v3=>{u2}]

如图9所示,t5时刻:预约用户u1提出车辆使用请求,其中,其所申请使用的车辆为v2。

服务器判断v2是可用车辆,且发现v2是u1的预约车辆之一,即:lt2[u1]={v1,v2},因此,将v2分配给u1使用。服务器删除u1对所有车辆的预约关系,即更新后的第二查找表为:lt2=[v3=>{u2}]。服务器从第一查找表中删除以u1为索引的表项,即更新后的第一查找表为:lt1=[u2=>{v3}]。服务器将v2对应的无需额外的操作。

如图10所示,t5时刻,预约用户u1提出车辆使用请求,其中,其所申请使用的车辆为v3。

服务器判断v3是为用户u2所预留的唯一车辆,即为不可用车辆,因此,拒绝将v3分配给u1使用。其第一查找表和第二查找表保持不变。

应该注意到,第一查找表和第二查找表可以用车辆和预约用户的映射关系表来表述,同样的,也可以用矩阵形式表示。

如图11所示为映射关系示意图,用第一查找表和第二查找表的形式描述,为:

lt1=[u1=>{v1,v2,v3},u2=>{v3,v4}];

lt2=[v1=>{u1},v2=>{u1},v3=>{u1,u2},v4=>{u2}];

而用矩阵语言,可以描述为:

其中,矩阵当第m行、第n列的元素δm,n=1时,表示车辆vm和用户un之间存在预约关系。

只要能体现出第一查找表和第二查找表中的车辆和预约用户的对应关系,可以采用映射、表格、矩阵等多种实施方式进行等效的表述。

本发明实施例的一种服务器,所述服务器包括:

第一接收单元,用于接收第一用户发来的车辆预约请求;

第一创建单元,用于根据所述车辆预约请求创建第一预约车辆集合;

第二接收单元,用于接收第二用户发来的车辆使用请求;

第二创建单元,用于根据所述车辆使用请求创建第一使用车辆集合;

分配单元,用于从所述第一预约车辆集合和所述第一使用车辆集合中选择可用车辆,分配所述可用车辆给第二用户使用。其中,所述第一预约车辆集合不等于所述第一使用车辆集合。

本发明实施例一实施方式中,所述第一创建单元,进一步用于从所述车辆预约请求中解析出第一用户需要预约的第一车辆标识和第一用户的标识;根据所述第一车辆标识创建第一预约车辆集合。

本发明实施例一实施方式中,所述服务器还包括:预约确认单元,用于若所述第一预约车辆集合中车辆数目大于或等于1,则确定所述第一用户预约成功。

本发明实施例一实施方式中,所述服务器还包括:表创建单元,用于建立第一查找表以及第二查找表;其中,所述第一查找表中包括每个预约用户到其对应的可用车辆集合的索引映射;所述第二查找表中包括每个预约车辆到其对应的预约用户列表的索引关系。以及更新单元,用于创建第一预约车辆集合之后,更新第一查找表,在第一查找表中增加第一用户的标识到第一预约车辆集合的索引关系;更新第二查找表,为第一预约车辆集合中的每个车辆的预约用户列表中增加第一用户的标识。

本发明实施例一实施方式中,所述第一创建单元,进一步用于:根据第一车辆标识,确定第一车辆位置,所述第一车辆位置是第一车辆标注所标识的车辆的位置;根据第一车辆位置,确定第二车辆集合,所述第二车辆集合中任一车辆的位置距离第一车辆位置小于或等于第一阈值;针对所述第二车辆集合中的每一个车辆,判断是否为可用车辆,基于所述第二车辆集合中的可用车辆,构造第一预约车辆集合;构造第一预约车辆集合,其中,第一预约车辆集合中的车辆为第二车辆集合中的可用车辆。

本发明实施例一实施方式中,所述车辆使用请求中携带有第二用户申请使用的第二车辆标识和第二用户的标识。

所述服务器还包括:第一判断单元,用于根据所述第二车辆标识和所述第二用户的标识判断第二车辆是否为第二用户的可用车辆;如果判断出第二车辆是第二用户的可用车辆,则将第二车辆分配给第二用户使用;否则,拒绝第二用户对第二车辆的使用申请。

本发明实施例一实施方式中,所述服务器还包括:第二判断单元,用于判断第二车辆是否为第二用户的可用车辆的判断条件,至少包括:所述第二车辆是可用车辆。

本发明实施例一实施方式中,所述服务器还包括:第三判断单元,用于检测所述第二车辆所对应的预约用户标识集合,所述预约用户标识集合等于第二查找表,所述第二查找表中包括每个预约车辆到其对应的预约用户列表的索引关系;若所述预约用户标识集合不存在,则所述第二车辆没有被任何用户预约,判断出所述第二车辆为可用车辆;否则,所述第二车辆已被至少一个用户预约;遍历所述预约用户标识集合中每一个用户标识,判断用户是否只预约了所述第二车辆这一辆车。

本发明实施例一实施方式中,所述服务器还包括:第四判断单元,当所述第二用户同时也是所述第一用户时,判断所述第二车辆是非预约用户的可用车辆的判断条件,至少还包括以下方式中的至少一种:

所述第二车辆是所述第一预约车辆集合中的元素;

所述第二车辆的位置距离和所述第一用户发送的车辆预约请求中携带第一车辆标识所标识的第一车辆的位置小于或等于第二阈值。

本发明实施例一实施方式中,所述服务器还包括:第一处理单元,用于当所述第二用户同时也是所述第一用户时,将所述第二车辆分配给所述第二用户使用之后,获得所述第一用户所关联的第一预约车辆集合,第一预约车辆集合等于第一查找表;针对第一预约车辆集合中的每一车辆,获得每一车辆所对应的预约用户标识集合,预约用户标识集合等于第二查找表;从所述预约用户标识集合中删除所述第一用户;从所述第一查找表中删除以所述第一用户为索引的表项。

本发明实施例一实施方式中,所述服务器还包括:第二处理单元,用于将所述第二车辆分配给所述第二用户使用之后,检测所述第二用户所对应的预约用户标识集合,所述预约用户标识集合等于第二查找表;如果所述预约用户标识集合存在,则所述第二车辆已被至少一个用户预约,则遍历所述预约用户标识集合中每一个用户标识;针对所述预约用户标识集合中每一个用户标识,获得第二用户所对应的第一预约车辆集合,第一预约车辆集合=第一查找表;在第一预约车辆集合中删除所述第二用户;从所述第二查找表中删除以所述第二用户为索引的表项。

本发明实施例一实施方式中,所述服务器还包括:第三处理单元,用于当从所述第一预约车辆集合中删除所述第二用户后,如果所述第一预约车辆集合中只包含一车辆,则只预约了一辆车,继续预留车辆,直至所有用户的第一预约车辆集合中都包含两辆及以上的车辆。

本发明实施例一实施方式中,预留车辆后,所述方法还包括:更新用户侧地图显示,仅对于需要预留车辆的用户,显示预留车辆。

本发明实施例的一种服务器,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器用于运行所述计算机程序时,执行实施例一种所述方法的步骤。并且处理器能够执行实施例一中所提供的方法的各个步骤,这里不再赘述。

本发明实施例的一种计算机存储介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时实现实施例一种所述方法的步骤。这里不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备设备(可以是手机,计算机,装置,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1