带约束的调度

我想对任务进行带约束的调度(类似于作业车间调度问题),我考虑使用类似微软求解器基础(Microsoft Solver Foundation)的工具(我需要使用C#)。但据我所知,这种方法只能通过寻找最优的最大值或最小值来解决问题,这需要很长时间。我需要一个近似解,这样调度在总时间上不是最优的(尽可能好),但所有约束都能得到满足。有什么解决这个问题的建议吗?


回答:

我建议你使用Z3求解器。它提供了C#的API。基本上,它是一个SMT求解器,可以在给定约束下寻找“足够好”的解决方案。用SMTLIB语言定义你的问题可能会相当困难。

如果你觉得太难,可以看看MinizincClingo求解器——只需将问题表述生成成文本文件,从你的C#代码中作为一个独立进程运行求解器,然后从输出文本文件中解析解决方案。

编辑

如果你想最小化调度长度,可以尝试以下方法。假设存在长度为K的调度。在这个假设下,你的计划问题是否可满足?让我们调用求解器来找出答案!生成几个不同K值的问题,并迭代运行求解器。使用二分查找来减少尝试次数。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注