有约束的计划

Schedule with Constraints

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

我建议你使用 Z3 solver. It provides you C# API. Basically, it is a SMT solver, which searches for 'good enough' solution with respect to given constraints. It could be rather difficult to define your problem in SMTLIB 语言。

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

编辑

如果你想尽量减少一个日程的长度,你可以试试下面的方法。我们假设 一个长度为 K 的时间表。在此假设下,您的规划问题是否可满足?让我们打电话给求解器来找出答案!迭代地生成具有不同 K 和 运行 求解器的几个问题。使用二进制搜索减少试验次数。