我建议你用
Z3
求解。它为您提供C#API。基本上,它是一个
SMT
求解器,它针对给定的约束搜索“足够好”的解决方案。定义你的问题可能相当困难
SMTLIB
语言。
如果对你来说太难了,那就看吧
Minizinc
要么
Clingo
求解器 - 只需将问题公式生成为文本文件,将解算器作为与C#代码分开的进程运行,从输出文本文件中解析出解决方案。
编辑
如果要最小化计划的长度,可以尝试以下方法。让我们假设一下
的
有
</强>
一个长度的时间表
ķ
。在这个假设下,您的规划问题是否可以满足?我们打电话给一个求解器来找出它!用不同的K生成几个问题并迭代运行求解器。使用
二分搜索
减少试验次数。