Val*_*ail 5 algorithm optimization reduction sat
我联系您,以便了解"如何将流水车间调度问题转换为布尔可满足性".
我已经为N*N Sudoku,N-queens和Class调度问题做了这样的减少,但是我对如何将Flow shop转换为SAT有一些问题.
SAT问题看起来像这样:

目标是:使用不同的布尔变量,找到每个变量的效果,以使"句子"成立.(如果可以找到解决方案).
我使用遗传算法创建自己的求解器,能够找到解决方案并证明什么时候没有.现在,我尝试不同的NP问题,比如Flow Shop.
流水车间调度问题是车间或集团车间的一类调度问题,其中流量控制应能够为每个作业进行适当的排序,并在一组机器或其他资源上进行处理1,2,...,m符合给定的处理订单.
特别是在最小的空闲时间和最少的等待时间的情况下,期望保持连续的处理任务流.
Flow shop调度是作业车间调度的一个特例,其中对所有作业执行所有操作的严格顺序.
流水车间调度也可以应用于计算设计的生产设施.
结果是一系列工作将经历每个研讨会,图形结果将如下所示:

所以为了表示flow-shop实例,在输入中我有这样的文件:
2 4
4 26 65 62
63 83 57 9
Run Code Online (Sandbox Code Playgroud)
这个文件意味着我有2个商店和4个工作,每个工作的每个工作的持续时间都是.
目标:找到最小化C_max的序列,如果您愿意,可以找到最后一台机器上最后一个作业的结束日期.
我的Flow-Shop现在非常简单,但我不知道如何将它们形式化以便创建一个CNF文件来执行我的SAT求解器.
如果你们其中一个有一些想法:文章?一个想法的开始?
这个问题的下一部分:Flow/Job Shop到布尔可满足性[多项式时间缩减]第2部分
我会这样处理:
对于每台机器上每个可能的时间开始的每个资源使用情况,都有一个布尔变量(当然,这要求时间是有限的和离散的,所以我假设是整数)。
s_1_2_3因此,您会得到类似于含义资源 1 从第二台 3 开始在机器 2 上使用的变量。
现在您可以根据这些变量制定各种条件。喜欢:
警告:即使对于小问题,这也会产生大量的布尔表达式。
正如 @gwilkins 提到的,您需要将优化问题转换为布尔问题。我会遵循他的方法:找到您愿意接受的最大时间并解决该时间限制(这实际上限制了变量的数量)。
您还可以从应该有解决方案的事物(例如添加的所有作业的时间)和自然下限的事物(最长作业所需的时间)开始,然后通过分割间隔找到最佳解决方案。
再说一次:这可能会表现得非常糟糕,但它应该提供正确的解决方案。
使用此变量制定的约束示例:
机器 1 必须先处理资源 x,然后机器 2 才能完成其作业(假设作业长度为 1):
(S_x_1_1 and ! S_x_2_1)
or (S_x_1_2 and ! S_x_2_1 and ! S_x_2_2)
or (S_x_1_3 and ! S_x_2_1 and ! S_x_2_2 and ! S_x_2_3)
or ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |