这是我最初的条件:
I have a set of employees E1, E2, E3, ...
I have a set of dates for an activity D1, D2, D3, ...
For every employee, I know on which dates he is available to perform the activity
Every employee should perform the activity only once
我需要找到允许每位员工执行活动的最佳配置,最大限度地减少使用日期的数量,并为每个日期提供最大数量的员工。因此,例如,如果在特定日期我可以有20名员工,我只需要使用最好的10名员工,在不同日期移动其他10名员工。
我认为解决方案可能是与二分图相关的一些算法,但我找不到一个好方法来解决它。
您是否知道如何解决它,或者问题是否适合某些已经知道的算法?
非常感谢, 马可
答案 0 :(得分:0)
此问题似乎是一个名为nurse scheduling的已知问题,已知为NP-hard。基本上在您的员工和日期分别对应于护士和轮班。您的硬约束是员工可用的日子,软约束是他们工作的质量,正如您提到的那样,在您的示例中选择最佳10 。
不幸的是,我认为你无法想到一个最佳解决方案。根据员工和日期的大小,找到这样的解决方案可能非常棘手,而且到目前为止,我不仅仅根据您对问题的定义来思考,那么告诉哪个方法可能是合适的。用于解决护士安排可能最适合您的要求。
尽管如此,您可以查看以下几篇论文,看看它们如何符合您的问题实例的具体要求。
A grasp-knapsack hybrid for a nurse-scheduling problem
A two-phase adaptive variable neighborhood approach for nurse rostering
An Indirect Genetic Algorithm for a Nurse Scheduling Problem