如何开始创建自动循环匹配系统



我尝试研究并创建一个自动循环匹配算法。该系统的目的是匹配几个想要从当前部门转移到其他部门的员工的目的地(有几个原因需要转移,比如他们想搬到家乡或照顾家人(。不幸的是,公司的协议允许他们在找到其他部门的人想接替他们的职位时搬家。在实践中,在过去的案例中,员工必须通过在Facebook群组上发布目的地来找到他们的合作伙伴,并与两个或两个以上的人交换,以创建他们自己的周期性轮换,如下所示:

A先生在X部门工作,他想调到Y部门。

B先生在Y分部工作,他想调到Z分部。

C先生在Z部门工作,他想调到X部门。

在用例中,他们中的一个(假设A先生(必须联系B先生和C先生,以便周期性地采取行动来实现他们的目标。我的公司有2000多名员工面临这个问题(我的公司大约有3万名员工(。

因此,请任何人建议我,我如何研究并开始创建一个人工智能系统或其他算法,帮助我的朋友轻松完成他们的目的。

Ps。我有经验,熟悉python

提前谢谢。

在现实生活中,我认为您将通过DB查询获取数据,因为您谈论的是数千条记录。但对于一个小样本,让我们把我们的请求放在一个列表中。我们的想法是,从一个请求开始,看看我们是否有其他人的目标位置是我们请求的源位置,然后探索每个人,看看我们有没有更多的人,直到我们找到一个循环。

由于你想要最长的周期,并且可能还需要其他标准,我们需要计算所有的可能性。然后另一个功能将选择最佳选项。

这将找到给定请求的所有可能周期:

from dataclasses import dataclass
@dataclass
class Request():
code : int
who : str
source : str
target : str
days : int
requests = [Request(1,'A','X','Y',3),
Request(2,'B','Y','Z',5),
Request(3,'C','Z','X',2),
Request(4,'D','Y','X',3),
Request(5,'E','W','Y',3)]
cycles = []
def find_cycles(basereq):
global cycles
cycles = []
find_cycles2(basereq, basereq.target, [basereq.code])
print(cycles)
def find_cycles2(basereq, pivot, cycle):
global cycles
for otherreq in [r for r in requests if r.target == basereq.source and r.code not in cycle]:
if otherreq.source == pivot:
cycles.append(cycle + [otherreq.code])
else:
find_cycles2(otherreq, pivot, cycle + [otherreq.code])
>>> find_cycles(requests[0])
[[1, 3, 2], [1, 4]]
>>> find_cycles(requests[1])
[[2, 1, 3]]
>>> find_cycles(requests[4])
[]

相关内容

最新更新