【问题标题】:Schedule with Constraints有约束的计划
【发布时间】:2017-11-11 03:55:35
【问题描述】:

我想使用约束来安排任务(类似于作业车间调度问题),并认为我可以使用 Microsoft Solver Foundation 之类的东西(我需要使用 C#)。但据我所知,您只能通过找到需要很长时间的最佳最大值或最小值来解决问题。我需要一个近似值,所以关于总时间的调度不是最优的(尽可能好),但所有的约束都得到了满足。 任何想法如何解决这个问题?

【问题讨论】:

  • 请先提出你的想法。
  • 请包含所提到的优化问题的正式定义。
  • 正如我提到的,我的问题类似于作业车间调度问题 - 我有需要在最短的时间内在机器上安排的作业。约束是例如作业的顺序、资源、机器的容量或特定作业的截止日期

标签: c# algorithm constraints artificial-intelligence scheduling


【解决方案1】:

我建议您使用Z3 求解器。它为您提供 C# API。基本上,它是一个SMT 求解器,它针对给定的约束搜索“足够好”的解决方案。用SMTLIB 语言定义您的问题可能相当困难。

如果这对您来说太难了,请查看 MinizincClingo 求解器 - 只需将问题公式生成为文本文件,将求解器作为与 C# 代码分开的进程运行,从输出文本文件解析解决方案。

编辑

如果您想尽量缩短计划的长度,您可以尝试以下方法。我们假设有一个长度为K的时间表。在这个假设下,你的计划问题可以满足吗?让我们打电话给求解器来解决这个问题!使用不同的 K 生成多个问题并迭代地运行求解器。使用二分搜索来减少试验次数。

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多