如何创建一个自动循环匹配系统

我尝试学习并创建一个自动循环匹配算法。该系统的目的是匹配几个希望从当前部门调动到其他部门的员工的目的地(调动的原因有很多,比如他们想搬回故乡或照顾家人)。不幸的是,公司规定只有当他们能找到其他部门愿意接替他们职位的人时,他们才被允许调动。在过去的案例中,员工不得不通过在Facebook群组中发布他们的目的地来寻找合作伙伴,并与两人或更多人交换以创建他们自己的循环轮换,如下所示:

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

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

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

在实际案例中,他们中的一人(假设是A先生)必须联系B先生和C先生,以实现他们的目标进行循环调动。我的公司有超过2000名员工面临这个问题(我的公司总共有约3万名员工)。

因此,请问大家有什么建议,我该如何学习并开始创建一个AI系统或其他算法来帮助我的朋友们轻松实现他们的目的呢?

附注:我有Python的经验并且很熟悉这门语言

提前感谢大家。


回答:

在现实生活中,我假设你会通过数据库查询来获取数据,因为你提到有数千条记录。但对于一个小样本,我们可以先将请求放在一个列表中。思路是,从一个请求开始,看看是否有其他人,其目标地点是我们请求的源地点,然后探索这些请求,看看是否有更多,直到找到一个循环。

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

这将找到给定请求的所有可能循环:

from dataclasses import dataclass@dataclassclass Request():    code : int    who : str    source : str    target : str    days : intrequests = [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])[]

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注