【问题标题】:How do I make a staff scheduler in Prolog如何在 Prolog 中制作员工调度程序
【发布时间】: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 调度程序,但我主要是想出任务计划。但我猜现在他们比我以前的盟友想象的更类似于员工调度程序?感谢各位大侠的指点,我一定会做更多的研究。如果你们把你们的回答作为答案,我一定会投票给他们。

标签: algorithm prolog


【解决方案1】:

我推荐你使用一个叫做约束逻辑编程的 prolog 库:https://www.swi-prolog.org/man/clpfd.html

它将帮助您通过三个步骤非常轻松地编写时间表:定义您的变量(例如:员工人数 * 一周中的可用工作时间)然后定义此变量的域(0 或 1,0 表示在那个时间不起作用,1 表示它在那个时间起作用),最后设置你的约束(你在问题上写的那些)。

一开始可能有点棘手,但当你理解它时,它会变得非常有用,并且易于使用,可以解决类似的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多