求解器辅助的循环扩展以避免生成和测试.pdfVIP

  • 0
  • 0
  • 约2.08万字
  • 约 13页
  • 2026-03-06 发布于北京
  • 举报

求解器辅助的循环扩展以避免生成和测试.pdf

求解器辅助的循环扩展以避免生成和测试

NiklasDewallyEnvelopeHOME

SchoolofComputerScience,UniversityofStAndrews,UK

ÖzgürAkgünEnvelopeHOME

SchoolofComputerScience,UniversityofStAndrews,UK

Abstract

约束建模语言如MiniZinc和本质在编译过程中依赖于展开循环(以量化表达式和推导的形式)。标准

方法生成所有归纳变量的组合,并使用部分求值来丢弃那些简化为结合交换运算符的单位元素(例如,

对于连词是true,对于求和是0)的组合。这对于大多数最终无关紧要的组合的问题来说可能效率低

下。我们提出了一种方法,该方法通过使用求解器仅计算生成最终约束集所需的组合来避免完全枚举。

由此产生的模型与传统展平方法生成的模型相同,但编译速度可以显著加快。这提高了将高级用户模

型翻译成适合求解的形式的效率,特别是在归纳变量范围覆盖具有选择性前置条件的大领域时。

本2012ACMSubjectClassificationComputingmethodologies→Artificialintelligence

中Keywordsandphrases约束建模,循环展开,求解器辅助重构

1SupplementaryMaterialOurprototypeextensiontoConjureisavailableat/

vconjure-cp/conjure-oxide.Themodelsweuseinourexperiments,scriptsweusetorunthe

2

4experiments,rawresultsandplottingscriptsareavailableat/niklasdewally/

4

82025-comprehension-unrolling-modref.

0Software(SourceCode):/10.5281/zenodo

.

8Dataset:/10.5281/zenodo

0

5

2Acknowledgements我们感谢圣安德鲁斯大学“人工智能决策”垂直整合项目成员的贡献。

:

v

i

x1介绍

r

a

约束建模语言如本质[1],本质素数[4]和MiniZinc[3]允许用户以简洁和声明性

的方式指定复杂的组合问题。然而,编译这些模型的效率往往取决于循环和量化表达式

的扩展方式,微小的语法变化可能会导致编译时间和内存使用产生显著差异。当前工具

依赖于生成与测试策略结合部分求值的方法,这使得性能变得脆弱,并且依赖于建模者

的专业知识。

我们提出了一种求解器辅助的方法,用于扩展理解表达式和量化表达式,该方法对

语法表述具有鲁棒性。我们的方法消除了完全枚举和部分求值的需要,确保只生成相关

的归纳变量组合,无论守卫或条件如何表示。这一步将声明式建模更接近其理想状态:

允许用户在没有隐藏性能陷阱的情况下表达意图。底层技术是通用的,可以适应任何需

要无副作用循环展开的上下文。

标准基准上的实证结果表明,我们的求解器辅助扩展方法能够在不同约束的句法表

达中稳健地进行扩展。与传统的生成和测试方法相比,它显著减少了编译时间,尤其是

2求解器辅助的循环扩展以避免生成和测试

在涉及隐式条件或大型域的情况下。这种稳健性和效率使得约束模型编译更加可靠,允

许用户清晰地表达意图而不必担心隐藏的性能成本。

2动机

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档