0

我正在制作一个应该组织员工工作的应用程序。

一名员工不能同时从事两份工作。
每个员工都有一个或多个资格。
每项工作都有一项或多项工作所需的资格。
*所有的工作都应该配备人员。

这些是表:
1. 雇员表 - 每个人都有 PID 号。
2. 资格表 - [Id, Name]。
3. QualificationsOfEmployee - 每个人都可以拥有多个资格 [PID, QualificationId]。
4. Jobs [Id, Name, NumOfEmployee(工作需要多少人)]
5. QualificationsRequireForJob 表 - [JobId, QualificationId]

现在,我想做一个查询/函数来为每项工作找到一个合格的员工(取决于 Jobs.NumOfEmployee)。诀窍是每项工作可能有不止一名合格的员工,但其中一些可能需要其他工作(因为他们有很多资格)。

我不认为一个简单的 sql 连接或子查询可以完成这项工作。
有什么想法吗?

非常感谢,埃拉德

4

1 回答 1

1

Mysql 可能不是这种算法的最佳语言,但我猜有可能。

您可以(不是唯一的方法)实现遗传算法。这些类型的算法用于尝试为给定问题找到最佳组合,并防止所有可能性的暴力测试。再加上一个强大的成本函数,它可以让你找到一个很好的解决方案(可能不是最好的)。在您的情况下,此成本函数可以用受影响员工的数量、没有员工的工作以及受影响员工的资格数量来计算(如果工作只需要一个资格和其他员工有此资格)。困难可能是找到最佳成本函数。

Google 上的“genetic Algorithm assignment”可能会为您提供一些适合您问题的不同算法的论文。

在分配问题中找到最佳组合可能会耗费 CPU,而且执行时间很长。取决于您的算法和您的数据集。

如果你要那样做,祝你好运!

于 2013-05-15T09:59:21.330 回答