累积约束解释的实验研究
1. 引言
在累积调度中,我们会遇到一组需要不同资源的作业。这些资源具有恒定容量且可再生,每个作业不可中断,有固定的处理时间和资源需求。累积调度问题可通过约束规划(CP)、整数规划(IP)或可满足性测试(SAT)等技术来解决,近年来还出现了结合这些领域方法的混合方法。
解决累积调度问题的一些精确方法会使用搜索树,将问题实例逐步分解为更小的子问题,直到子问题易于解决,子问题的最优解组合起来就是全局最优解。在算法执行过程中,会创建一个搜索树,每个节点代表一个子问题,这些子问题通常通过添加边界变化(分支决策)来生成,这会限制可行区域。在每个子问题中,会使用复杂的数学技术排除变量域中的某些值,其中一种技术就是域传播,它可以推断变量的边界变化。
最近发现,冲突分析在高效解决累积调度问题中起着重要作用。冲突分析用于分析搜索过程中出现的不可行子问题,以生成冲突子句(也称为禁例),这些冲突子句可用于在后续搜索中检测类似的不可行子问题。为了进行冲突分析,需要解释搜索过程中执行的边界变化,即找出导致该边界变化的一组边界。收集解释有两种常见方式:正向检查和反向检查。正向检查会直接随边界变化提交解释,即使可能不需要;反向检查则在需要时重构解释,但在这种情况下,延迟计算解释可能会很昂贵,因为相同的边界变化可能会被多次解释。
本文将展示大量实验结果,证明边界变化的最小规模解释是高效解决累积调度实例的关键组成部分。我们将分析在反向检查系统中构建解释的影响,并考虑时间调度、边查找和能量推理这三种域传播算法。对于时间调度,计算最小规模解释的复杂度状态仍未确定,因此我们将评估三种不同的启发式方法来提供合适的小尺寸解释。我们使用PSPLib库中的实例和Pack实例作为基准测
超级会员免费看
订阅专栏 解锁全文
3396

被折叠的 条评论
为什么被折叠?



