我目前正计划开发一个微型工作平台,通过地理定位将维护人员(水管工,电工,木匠等)与有需要的用户进行匹配。预订可以提前或最后一分钟(至少1小时前)以同样的价格预订。
现在,我正在努力寻找一种合适的匹配算法,以便有效地为可用的工作人员分配预订。匹配器基本上是一个捕捉“NewBooking”事件的听众,这些事件定期被触发,直到工人被分配到特定预订。工人可以接受或拒绝工作,并可以通过简单的切换按钮选择工作时间(当它关闭时,他们将不会收到任何请求)。 总的来说,订单是在一定的公里范围内分配的。
我想到的第一个系统基于同心区域,每次事件被触发(不是无限期)时,其半径都会增加。该区域内的所有在线工作人员都将收到通知,并且第一个接受该工作的人员将获得该工作。
优点:
缺点:
第二个解决方案基于线性距离,将工作分配给最近的可用工作人员,如果(s)他在一定时间范围内不接受它(像30'),算法转到下一个可用的人,依此类推。
优点:
缺点:
第三种选择是根据反馈评分,使用第一种方法在多个批次中发送订单;收到通知的第一组是由4星以上,然后3 +平均。投票等等。
我想知道在这种匹配算法方面是否有最佳实践,因为即使出租车应用程序也面临这些问题。 无论如何,您会建议采用哪种方法(如果有的话),或者您对可能的改进有任何建议? 谢谢