prolog - 用于约束解分析的 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
谓词越来越长......我怎样才能让我的程序更加模块化。从语义上讲,这些变量可以分为几个“域”,但是在我的程序中,它们都定义在一个地方。
解决方案
推荐阅读
- listview - xamarin.forms: Observablecollection, Listviews in a Chat: 当新消息添加到顶部时,listview 向上移动,shou
- c# - RenderScripts 是如何工作的?相同的脚本为我加载了三次
- google-sheets - GSheets 按列表中多个项目的字符串过滤
- python - 目标“y”需要超过 1 个类。改为上 1 节课
- javascript - 如何将本机 java 类返回到 javascript
- sql - 计算列中的值并将结果添加到新的 sql 中的列旁边
- python - Python/Matlab中系统响应的反卷积
- java - Java 中 System 类的 out 对象是什么时候初始化的?
- git - 在 Visual Studio 中接受拉取请求后如何解决 git 冲突?
- tensorflow - tf2 SSD检测模型的后期处理