调度应用程序中的约束图变换

Bus*_*icK 7 language-agnostic algorithm scheduling graph constraint-programming

我正在开发一个交互式作业调度应用程序.给定一组具有相应容量/可用性配置文件的资源,一组要在这些资源上执行的作业以及一组约束,这些约束确定作业顺序和作业的最早/最晚开始/结束时间我想让用户手动移动周围的工作.基本上我希望用户能够"抓住"作业网络的节点并在不违反任何约束的情况下及时向前/向后拖动它.

该图显示了一个简单的示例配置.最后的三角形作业表示所有作业的最新完成时间,作业之间的连接线对作业施加顺序,灰色/绿色条表示资源可用性和负载.

您可以拖动任何作业来压缩计划.请注意,由于容量配置文件不同,作业的长度会发生变化.

我已经实现了一种有效的ad-hock算法.但是仍然存在失败并违反某些限制的情况.然而,由于作业车间调度是一个研究很充分的领域,有很多算法和启发式方法可以找到一般的NP难问题的最优(或相当好)解决方案 - 我认为解决方案应该存在于我更容易的子集中.我已经研究了约束编程主题甚至基于物理的解决方案(通过静态关节连接的刚体),但到目前为止找不到合适的东西.任何指针/提示/提示/搜索关键词对我来说?

mo-*_*eph 0

您可能可以更改 Waltz 约束传播算法来处理不断变化的约束,从而快速找出给定的解决方案是否有效。我没有手的参考,但这可能会为您指明正确的方向: http://www.sciencedirect.com/science? _ob=ArticleURL&_udi=B6TYF-41C30BN-5&_user=809099&_rdoc=1&_fmt=&_orig=search&_sort= d&_docanchor=&view=c&_searchStrId=1102030809&_rerunOrigin=google&_acct=C000043939&_version=1&_urlVersion=0&_userid=809099&md5=696143716f0d363581a1805b34ae32d9