我可以使用规则引擎来解决作业调度问题 ( JSS ) 吗?
我想要这样的东西。这是否可能与规则引擎或不是一个好主意。
甘特图
甘特图是可视化作业计划问题的绝妙想法。甚至 NASA 也使用了一种名为“Europa T-Rex 时间规划”的软件。在 x 轴上,时间刻度是可见的,在另一个轴上显示任务和子任务。挑战在于发明一种算法来确定必须在什么时间完成哪些任务。在现实生活中,经常使用概率调度,它利用参数来定义问题空间和随机数生成器来填充计划,请参阅在概率调度中使用自适应优先权加权来直接搜索简而言之:最简单的实现完全随机填充进度计划。制定一个好的计划需要多次重复。更复杂的算法定义了诸如“任务不应该重叠”之类的约束,并且随机生成器仅在该子空间中起作用以生成计划。在高级级别上,采用了附加规则来详细说明问题。但在这种情况下,随机生成器也用于处理不确定性。
规则引擎
规则引擎最突出的例子是密码破解工具 Hashcat Rule Based Attack中的规则引擎。这个想法是使用启发式算法进行更快的修剪。规则引擎被实现为普通的源代码。他们使用函数、循环和 if/then 请求。规则引擎和图灵机没有区别。
有时使用术语规则引擎的原因与内容相关。Hashcat 中的规则引擎是一段代码,它处理有关破解他人密码的知识。甘特图时间表中的规则引擎处理与计划相关的知识等。在 1980 年代,通常使用 CLIPS、Prolog 或 LISP 等所谓的人工智能语言来实现规则。但是普通的编程语言也很适合。在大多数情况下,规则引擎描述了算法。算法是解决某个问题的方法。要为作业调度问题创建求解器,了解细节很重要。有时间表问题、生产计划或机器人技术的调度。
我相信是这样,但对我来说这更像是一个设计问题:
你可以看看这个堆栈溢出问题,以及Martin Fowler关于规则引擎的文章,但乍一看,这个图看起来像基本的瀑布调度,可以在没有规则引擎的情况下轻松实现。
对于最简单的调度,您可以查看我的旧项目,其中调度是通过迭代列表来实现的。
您需要查看 cron 调度程序或其任何竞争技术。