首页 > 解决方案 > 用于约束解分析的 Prolog 程序结构

问题描述

我有一个具有以下结构的 SWI-PROLOG 程序:

% various predicates
...
...
...

main :-
   % constraints
   ...
   ...
   ...
   % labeling of about 50 variables
   label([........]),
   % additional conditions and constraints:
   condition1
   condition2
   ...
   conditionN
   % output
   write(Interesting_var),nl.

约束求解器工作得相当快(大约 10 秒)并找到许多答案。condition1然后我可以在,...conditionN和 print的帮助下过滤答案Interesting_var

问题 1:condition1我必须使用不同的 ,...,运行多次conditionN。所以我每次运行时都会修改程序。但是,如果约束不是在 10 秒内解决,而是在 10 分钟或 10 小时内解决呢?我怎样才能记住约束的所有解决方案,然后就约束中大约 50 个有趣变量的值提出具体问题。

问题 2:我目前有大约 50 个有趣的变量。但我不断添加新变量和新约束。main谓词越来越长......我怎样才能让我的程序更加模块化。从语义上讲,这些变量可以分为几个“域”,但是在我的程序中,它们都定义在一个地方。

标签: prologconstraintsconstraint-programming

解决方案


推荐阅读