You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于cb与ligne模板约束实现指定断路器状态展示?

实现步骤

1. 确认/定义实体模板

首先要确保cb和ligne的模板包含关联与状态所需的核心字段:

  • ligne模板:需包含线路ID、两端关联的断路器ID
  • cb模板:需包含断路器ID、对应状态(如fermé闭合/ouvert断开)

示例模板定义代码:

(deftemplate ligne
   (slot id-ligne)    ; 线路唯一标识
   (slot cb-debut)    ; 线路起始端断路器ID
   (slot cb-fin))     ; 线路末端断路器ID

(deftemplate cb
   (slot id-cb)       ; 断路器唯一标识
   (slot etat))       ; 断路器状态

2. 调整规则匹配关联事实

修改affichage-etat-disjoncteur-pour-ligne规则,通过模板字段约束匹配线路与对应断路器的关联事实,提取信息后格式化输出指定表格:

(defrule affichage-etat-disjoncteur-pour-ligne
   ; 匹配一条线路事实,获取线路ID及两端断路器ID
   (ligne (id-ligne ?id-ligne) (cb-debut ?cb1-id) (cb-fin ?cb2-id))
   ; 匹配起始端断路器的状态
   (cb (id-cb ?cb1-id) (etat ?etat1))
   ; 匹配末端断路器的状态
   (cb (id-cb ?cb2-id) (etat ?etat2))
   =>
   ; 输出表格表头
   (printout t "| 线路ID | 断路器ID | Etat-CB |" crlf)
   (printout t "|--------|----------|---------|" crlf)
   ; 输出线路关联的断路器状态数据
   (printout t "| " ?id-ligne " | " ?cb1-id " | " ?etat1 " |" crlf)
   (printout t "| " ?id-ligne " | " ?cb2-id " | " ?etat2 " |" crlf)
   (printout t crlf))

3. 测试验证

添加测试事实并运行规则,验证输出格式:

; 插入测试事实
(assert (ligne (id-ligne L1) (cb-debut CB1) (cb-fin CB2)))
(assert (cb (id-cb CB1) (etat fermé)))
(assert (cb (id-cb CB2) (etat ouvert)))

; 执行规则
(run)

运行后输出的表格格式如下:

线路ID断路器IDEtat-CB
L1CB1fermé
L1CB2ouvert

4. 扩展说明

  • 若线路关联更多断路器,可在ligne模板添加cb-milieu1等字段,规则中对应增加cb事实匹配项即可
  • 规则会自动匹配所有符合模板约束的ligne与cb组合,批量输出所有线路的断路器状态表格
  • 如需更复杂的格式(如合并线路ID单元格),可通过CLIPS的字符串拼接功能实现自定义输出逻辑

内容的提问来源于stack exchange,提问作者Honoré De Marseille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:50:04