ECLiPSe CLP:在ic库中由search / 6找到的子结果之间暂停

社交网络

(此问题与search / 6有关。)

我想知道是否有一种方法-而不是手动跟踪-每次找到单个变量的新解决方案时都暂停执行search / 6?

我想完成这项工作,以进一步调查在约束模型中搜索过程中发生的情况。

例如,如果您要解决经典的数独问题,并且为电路板编写了一组约束条件和一种打印方法,那么在设置约束条件之后但在搜索之前打印电路板可能会很有用。评估约束的强度。但是,一旦调用搜索来解决数独问题,除非您进行了跟踪,否则您实际上不会对在其下构建的单个结果有一个总体了解。

如果可能的话,这将是非常有用的,例如:

(这只是一个抽象的例子)

% Let's imagine this is a (very poorly) constrained sudoku board
?- problem(Sudoku),constraint(Sudoku),print(Sudoku).
    [[1,3,_,2,_,_,7,4,_],
     [_,2,5,_,1,_,_,_,_],
     [4,8,_,_,6,_,_,5,_],
     [_,_,_,7,8,_,2,1,_],
     [5,_,_,_,9,_,3,7,_],
     [9,_,_,_,3,_,_,_,5],
     [_,4,_,_,_,6,8,9,_],
     [_,5,3,_,_,1,4,_,_],
     [6,_,_,_,_,_,_,_,_]]

现在进行搜索:

?- problem(Sudoku),constraint(Sudoku),search_pause(Sudoku,BT),print(Sudoku,BT).
    [[1,3,6,2,_,_,7,4,_],
     [_,2,5,_,1,_,_,_,_],
     [4,8,_,_,6,_,_,5,_],
     [_,_,_,7,8,_,2,1,_],
     [5,_,_,_,9,_,3,7,_],
     [9,_,_,_,3,_,_,_,5],
     [_,4,_,_,_,6,8,9,_],
     [_,5,3,_,_,1,4,_,_],
     [6,_,_,_,_,_,_,_,_]]
     Board[1,3] = 6
     Backtracks = 1

   more ;
杰辛普

使用现有的可视化工具

看一下《可视化工具手册》通过在代码中添加viewable_create / 2批注,然后TkECLiPSe的“工具”菜单中启动可视化客户端可以获得所需的矩阵显示

使用您自己的检测式搜索例程

您可以将search / 6中indomain_xxx选择方法替换为用户定义的方法,在其中您可以在传播之前和/或之后打印信息。

如果这还不够,您可以用search/6自己的内置组件替换整个组件,这不太困难,例如,请参阅《ECLiPSe教程》中有关树搜索的章节或我对此问题的回答

使用数据驱动的工具进行跟踪

使用ECLiPSe的数据驱动控制工具,当变量发生某些变化时,您可以非常轻松地显示信息。在最简单的情况下,您可以对变量实例化做一些事情:

?- suspend(printf("X was instantiated to %w%n",[X]), 1, X->inst),
   writeln(start), X=3, writeln(end).

start
X was instantiated to 3
end

基于此想法,您可以编写代码,即使在黑盒搜索例程中发生标记和传播步骤,也可以遵循这些步骤有关详细信息,请参见链接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Eclipse中搜索结果的断点

来自分类Dev

ECLiPSe CLP中的主动约束与被动约束

来自分类Dev

ECLiPSe CLP中的主动约束与被动约束

来自分类Dev

Nsight Eclipse无法找到共享库

来自分类Dev

无法在Eclipse中找到Android的库

来自分类Dev

无法在eclipse中找到Opencv库文件

来自分类Dev

分析ECLiPSe CLP?

来自分类Dev

Eclipse库

来自分类Dev

Eclipse中“未找到JUnit测试”

来自分类Dev

如何清除Eclipse中的搜索结果?

来自分类Dev

Eclipse中SonarQube分析的不同结果

来自分类Dev

如何获取Eclipse中的搜索结果

来自分类Dev

Eclipse + JNI:可以找到库,但不能找到方法

来自分类Dev

Eclipse Neon暂停保存

来自分类Dev

Mediaplayer:在状态1中调用暂停-Android Eclipse

来自分类Dev

如何通过代码在Eclipse中暂停Java程序

来自分类Dev

Mediaplayer:在状态1中调用暂停-Android Eclipse

来自分类Dev

无法运行Eclipse项目-无法找到API数据库

来自分类Dev

在Mac dyld上的Eclipse:未加载库:未找到图像

来自分类Dev

ECLiPSe Prolog - IC 库:作为变量的整数列表

来自分类Dev

Eclipse 未找到 JRE

来自分类Dev

Eclipse Juno和Eclipse Kepler之间的区别

来自分类Dev

如何找到以编程方式在Eclipse中运行的项目

来自分类Dev

如何找到在Eclipse中实现抽象方法的位置?

来自分类Dev

在哪里可以找到Eclipse中的构建文件?

来自分类Dev

如何在Eclipse的“ Junit View”中查看Maven测试结果

来自分类Dev

在 Eclipse 搜索结果中只展开一级

来自分类Dev

在Android Studio中的方法(例如Visual Studio / Eclipse)之间跳转

来自分类Dev

在Eclipse SWT中的合成之间切换