问题标签 [clips]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 有没有人有使用 Clipsmm 的经验?
我一直在考虑使用 CLIPS 作为我正在开发的模拟器的专家系统,因此我查看了 clipsmm。唯一的问题是他们的 sourceforge 页面有损坏的链接和私人论坛。我只是好奇是否有人有使用 clipsmm 的经验(我已经学会了如何将 CLIPS 作为一个独立的设备使用),我只需要一点帮助来让 c++ 包装器工作。有人可以给我的任何帮助都会很棒。谢谢-克雷格
(抱歉不能为此制作自定义标签,所以必须使用通用标签)
expert-system - 在 CLIPS 专家系统中聚合事实以找到最大值
我试图澄清我对 Clips 专家系统中语义的理解,因此我试图编写一些简单的规则来聚合事实列表以找到具有最高槽值的事实。我使用的比喻是一个简单的代理试图决定它应该吃还是睡。描述代理状态的事实被扩展为潜在的动作,然后一个规则试图找到具有最高效用的最终动作。
这是我的代码:
运行此之后,我希望最终的操作是:
但是,Clips 将其评估为:
表示 find-final-action 规则永远不会激活。为什么是这样?您将如何遍历一组事实并找到具有最小/最大槽值的事实?
expert-system - 如何读取 CLIPS 中的行?
我需要在 CLIPS 中读取一个字符串,所以我正在使用(readline),但它似乎不起作用。它不允许我输入任何内容,它只返回“”。知道有什么问题吗?
我正在使用最新版本的http://clipsrules.sourceforge.net/
expert-system - 剪辑匹配表达式不起作用
你好剪辑我有这个模板:
而这个事实:
然后我在 LHS 中有这个条款:
我想得到变量?a1
似乎不允许添加到变量中"(+ ?x 1)"
,所以我怎样才能实现我想要的。
clips - 剪辑中的奇怪错误
我想在 Clips 中制作一个程序,它会生成一个数字的所有分区。首先,我从他的基本分区之类的数字开始:(1 1 1 1 1) 如果是数字 5,等等。
问题是,虽然代码看起来不错,但它在“not”行中有错误 - 我指定创建的新分区不应该已经存在于事实中。我不知道是什么问题,欢迎任何想法。谢谢
python - 使用 Clips 专家系统中的 Python 函数
使用 PyClips,我试图在 Clips 中构建规则,从 Python 解释器动态检索数据。为此,我按照手册中的说明注册了一个外部函数。
下面的代码是该问题的一个玩具示例。我这样做是因为我有一个包含大量数据的应用程序,以 SQL 数据库的形式,我想使用 Clips 进行推理。但是,如果我可以简单地将 Clips 直接“插入”到 Python 的命名空间中,我不想浪费时间将所有这些数据转换为 Clips 断言。
但是,当我尝试创建规则时,出现错误。我究竟做错了什么?
machine-learning - 取消引用剪辑中匹配事实中的插槽
您如何取消引用规则 LHS 中匹配的事实中的插槽?如果变量与事实匹配,我找不到如何创建与该事实中的插槽匹配的进一步条件。
例如,在下面的代码中,如果存在“(do(action ?action))”形式的事实,我想打印一些文本。但是, ?action 本身就是一个事实,我只希望规则在该事实的“名称”槽是“运行”时触发。我将如何做到这一点?
artificial-intelligence - 计算剪辑规则 RHS 中的现有事实
您如何测试Clips规则 RHS 中的事实存在?我正在尝试设计一个规则,通过计算存在多少目标事实来“评分”当前状态。如何在 LHS 中测试事实很明显,但我找不到如何在 RHS 中进行等效测试。
我想做这样的事情,尽管这不是有效的剪辑代码:
因此,如果不存在任何目标状态,那么就会存在事实(分数(值 0))。相反,如果所有目标状态都存在,那么就会存在事实(分数(值 3))。
参考手册中提到了 fact-existp 函数,但这似乎需要传递一个事实地址。我尝试像 (fact-existp (goal-1)) 一样使用它,但 Clips 给了我一个语法错误。
python - 在 PyClips 中传播剪辑错误消息
我发现使用 PyClips 开发非常困难,因为它似乎用通用的“语法错误”消息替换了 Clips 抛出的有用错误消息。这使得在使用 PyClips 时在大型代码库上进行调试非常费力并且几乎不可能。
考虑以下示例。我写了一个非常大的表达式,其中包含乘法运算符,但我错误地忘记添加第二个参数。PyClips 没有简单地告诉我缺少参数,而是告诉我存在语法错误。本来应该花 1 秒来纠正的事情,却花了 5 分钟来纠正,因为我在我的大表情中寻找错误,寻找错误。
这是一个精简版:
在 Clips 中,带有有用的错误消息:
在 PyClips 中,出现无用的错误消息:
如何让 PyClips 告诉我 Clips 抛出的真正错误?
prolog - Datalog vs CLIPS vs Prolog
和很多程序员一样,我在大学里学过 Prolog,但很少。我知道Prolog和Datalog密切相关,但Datalog更简单?另外,我相信我读到 Datalog 不依赖于逻辑子句的顺序,但我不确定为什么这是优势。CLIPS 应该是完全不同的,但它太微妙了,我无法理解。有人可以提供这些语言相对于其他语言的一般亮点吗?