我有一个具有以下结构的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
过滤答案并打印Interesting_var
。
问题1:我必须使用不同的condition1
,...,conditionN
运行多次。因此,每次运行该程序时,我都会对其进行修改。但是,如果不是在10秒钟之内而是在10分钟或10个小时内解决了约束,该怎么办?如何记住约束的所有解,然后问一些有关约束中约50个有趣变量的值的具体问题。
问题2:我目前大约有50个有趣的变量。但是我一直在增加新的变量和新的约束。 main
谓词越来越长...如何使我的程序更具模块化。从语义上讲,这些变量可以分为几个“域”,但是在我的程序中,它们都被定义在一个地方。