如何在Prolog中制作人员调度程序

时间:2016-12-13 04:19:08

标签: algorithm prolog

我正在玩不同的语言,偶然发现了prolog。为了测试自己,我一直在尝试为我的工作设置员工调度程序。我们有一年中的某个时间开始弹性计划。我们可以从不同开始时间,结束时间,午餐长度和每两周休假日期的选项列表中进行选择:第一个星期五,第一个星期一,第二个星期五,第二个星期一,并且没有额外的一天作为选项。

我正在尝试编写一个prolog算法,该算法将采用所有这些不同的选项并输出一个计划,以确保不超过n个员工有一个特定选项,并且每个选项至少有一个员工。该算法还应允许输入部分计划,并让算法为其余员工分配不同的选项。

我不知道这在prolog中有多难。但我已经看到一些神奇的大型程序减少到这种语言的几行代码。有没有人有任何建议如何进行?

提前致谢。

1 个答案:

答案 0 :(得分:2)

我建议您使用一个称为约束逻辑编程的序言库:https://www.swi-prolog.org/man/clpfd.html

这将帮助您分三步轻松地制定时间表:定义变量(例如:员工数量*一周中的可用工作时间),然后为该变量定义域(0或1,0表示含义)在那一小时不起作用,而1表示在那一小时起作用),最后设置您的约束条件(您在问题上写的约束条件)。

开始时可能会有些棘手,但是当您了解它时,它会非常有用,并且易于使用,可以解决类似的问题。