在CLIPS中生成真值表

问题描述

问题在于如何在CLIPS中获得相似的二进制真值表。 假设有序的初始事实如下:

(vector -1 -1 -1)

预期结果将类似于:

(vector 0 0 0 0)
(vector 0 0 0 1)
(vector 0 0 1 0)
(vector 0 0 1 1) 
(vector 0 1 0 0)
(vector 0 1 0 1)
(vector 0 1 1 0)
(vector 0 1 1 1)
(vector 1 0 0 0)

问题是:如何继续获得此结果?

解决方法

不清楚您要做什么(例如,包含三个负数的向量事实的目的是什么),但是如果您只是尝试生成排列,则可以执行以下操作:

         CLIPS (6.31 6/12/19)
CLIPS> 
(defrule generate
   (values $? ?v1 $?)
   (values $? ?v2 $?)
   (values $? ?v3 $?)
   (values $? ?v4 $?)
   =>
   (assert (vector ?v1 ?v2 ?v3 ?v4)))
CLIPS> (assert (values 0 1))
<Fact-1>
CLIPS> (run)
CLIPS> (facts)
f-0     (initial-fact)
f-1     (values 0 1)
f-2     (vector 0 0 0 0)
f-3     (vector 0 0 0 1)
f-4     (vector 0 0 1 0)
f-5     (vector 0 0 1 1)
f-6     (vector 0 1 0 0)
f-7     (vector 0 1 0 1)
f-8     (vector 0 1 1 0)
f-9     (vector 0 1 1 1)
f-10    (vector 1 0 0 0)
f-11    (vector 1 0 0 1)
f-12    (vector 1 0 1 0)
f-13    (vector 1 0 1 1)
f-14    (vector 1 1 0 0)
f-15    (vector 1 1 0 1)
f-16    (vector 1 1 1 0)
f-17    (vector 1 1 1 1)
For a total of 18 facts.
CLIPS> 
,

谢谢莱利先生。 如果可以的话,以下是该程序的摘要说明。该问题的目的是获得电力系统网络中某些保护装置的状态的组合。实际上,顺序向量事实中的-1对应于停电后某些开关设备的未知状态,并且目标是在二进制决策树中组合开关的所有可能状态(0:打开状态,1闭合状态)以获得满足某些条件的序列,例如非径向网络结构。 因此,并非向量事实的每种组合都是该问题的解决方案,并且尚未确定最佳解决方案。 赖利先生,上帝保佑您帮助别人。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...