【发布时间】:2016-12-13 04:19:07
【问题描述】:
我正在玩不同的语言,偶然发现了 prolog。为了测试自己,我一直在尝试为我的工作设置一个员工调度程序。一年中的某个时间,我们会开始灵活的日程安排。我们可以从具有不同开始时间、结束时间、午餐时间和双周休息日的选项列表中进行选择:第一个星期五、第一个星期一、第二个星期五、第二个星期一,并且没有额外的一天作为选项。
我正在尝试编写一个 prolog 算法,它将采用所有这些不同的选项并输出一个时间表,以确保不超过 n 名员工有一个特定的选项,并且每个选项至少有一名员工。该算法还应该允许输入部分时间表,并让算法为其余员工提供不同的选项。
我不知道这在序言中会有多难。但是我看到一些神奇的大型程序在这种语言中被简化为几行代码。有人对如何进行有任何建议吗?
提前致谢。
【问题讨论】:
-
你看过任何类型的教程吗?
-
即使在 Prolog 中编写时间表也不会是“仅仅几行”,尽管 Prolog 确实很适合此类问题。我建议找到一些好的 Prolog 教程,并首先从更简单的程序开始,以更好地理解语言。然后,您将能够开始构想如何在 Prolog 中处理调度程序。您还可以在“prolog scheduler”上进行 Google 或 Stackoverflow 搜索并找到一些说明性示例。
-
除了@lurker 所说的,我将首先定义这个问题的一个非常小的、几乎愚蠢且无用的玩具版本并解决它。如果你的范围足够窄,这应该不会太难,然后你就会对 Prolog 和你的问题有所了解,并且可以自己看看是否值得。
-
你想看看Constraint Logic Programming。如今,带有 Prolog 引擎接口的 CLP 库带有各种 Prolog 实现。还可以看看Answer Set Programming,这完全是另一种解决约束的方法。
-
感谢您的回复。我必须进行的唯一结构化的接触是通过这本书,七日之内的七种语言。这让我想到了这个问题。我快速搜索了一个 prolog 调度程序,但我主要是想出任务计划。但我猜现在他们比我以前的盟友想象的更类似于员工调度程序?感谢各位大侠的指点,我一定会做更多的研究。如果你们把你们的回答作为答案,我一定会投票给他们。