4. 逻辑与计算引擎 (Math Engine)
这是 MindLogic 最引以为傲的核心驱动力。普通的图谱只是一张死板的图,而在 MindLogic 中,图谱是一张活的电子表格和逻辑沙盘。
4.1 置信度推演 (Confidence Inference)
置信度用于处理图谱中的“逻辑概率”或“事实发生可能性”。当您串联多个节点时,您可以选中连接器 (Junctor),并在侧边栏的 “置信度推演 (Operators)” 中为其配置运算符。系统会根据运算符,将上游的置信度自动传导到下游:
- 模糊与 (Fuzzy AND, ∧):取所有上游输入置信度的最小值(木桶效应)。
- 模糊或 (Fuzzy OR, ∨):取所有上游输入置信度的最大值。
- 代数乘积 (Product, ×):将上游概率相乘,适用于计算多个互相独立的连续事件的联合概率。
- 概率和 (Sum Probability, Σp):计算
1 - (1-p1)(1-p2)...,用于推演多个能够独立促成结果的概率。 - 其他还包含:求和 (Sum)、平均值 (Average)、取反 (Negate)、互补 (Complement) 等十余种数学算子。
提示:实体的默认置信度由上游推演而来,但如果您手动修改了某个实体的置信度,它将被“锁定(Override)”为您指定的值。
4.2 变量与公式 (Data & Formulas)
让节点化身为电子表格单元格,使底层数据沿连线自动流转。这通过侧边栏的 “变量与公式 (Attributes)” 面板实现。
1. 定义与输出变量
在“已定义属性”或“输出公式”中,您可以为当前节点新增属性。
- 例如,您可以直接定义常量:Key:
cost,Value:100。 - 您也可以定义公式:Key:
total_cost,Value:cost * 1.2。
2. 接收上游分支数据 (Inputs)
如果一个节点有多条输入连线,这些连线传来的数据会自动挂载在隐藏的 inputs 数组中。
为了方便提取,您可以直接通过 变量名[ID] 的语法来提取特定分支的数据:
- 例如,上游有两个节点分别传来了
time,您可以写公式time[1] + time[2]。
3. 使用内置宏函数 (Macros)
MindLogic 引擎在底层注入了多个强大的聚合函数,它们会自动遍历所有上游节点传来的变量进行聚合计算:
SUM(cost):将所有上游传来的cost值相加。MIN(time)/MAX(time):找出上游所有time变量中的最小值或最大值。PRODUCT(rate):将所有上游传来的rate值连乘。
4. 原生 JS 引擎与丰富的全局函数支持
底层的推演引擎基于完整的 JSContext,并且我们直接将大量的 Excel 风格函数和原生数学函数提升到了全局变量,意味着您可以直接像在 Excel 中一样使用它们:
逻辑与容错函数 (Logic & Error Handling)
IF(条件, 满足时的值, 不满足时的值):条件判断。AND(条件1, 条件2)/OR(条件1, 条件2)/NOT(条件):基础逻辑。IFERROR(表达式, 默认值):非常推荐。在遇到空值、除以0等异常时,使用它提供默认值,避免链路中断。例如:IFERROR(A / B, 0)。ISBLANK(值)/ISNULL(值):判断上游变量是否存在。
文本处理函数 (Text Functions)
用于拼接或处理需要在 UI 或报表展示的文本信息:
CONCAT(text1, text2, ...):多段文本合并。LEN(text):计算字符串长度。LEFT(text, n)/RIGHT(text, n):截取左右侧字符串。UPPER(text)/LOWER(text):转换大小写。TRIM(text):去除首尾空格。
高级数学与日期函数 (Advanced Math & Date)
- 数学计算:
ROUND(x),ABS(x),POW(x, y),CEIL(x),FLOOR(x),SQRT(x),MOD(num, div),PI()。 - 随机生成:
RAND()(0~1之间),RANDBETWEEN(min, max)(范围随机整数)。 - 日期时间:
NOW()(当前时间戳),TODAY()(今天凌晨的时间戳),YEAR(date),MONTH(date),DAY(date),DATEDIF(start, end)(计算天数差)。
您依然可以随时降级使用原生的 JS 语法,比如 Math.max(x, y) 等。
4.3 高阶使用技巧 (Advanced Tips)
1. 变量名转义与特殊字符 (Variable Name Escaping)
MindLogic 的计算引擎底层基于强大的 JavaScript 环境。如果您的变量名包含括号、空格或数学符号等特殊字符(例如 订单延误(小时)),直接写在公式中可能会被误认为是一段代码,从而引发语法错误(如 SyntaxError)。
- 正确做法:在使用
SUM、AVERAGE等内置聚合函数时,将这类变量名用英文双引号或单引号包裹起来传入。 - 示例:
SUM("订单延误(小时)")或MAX('交货周期 (天)')。 - 原理:引擎识别到字符串后,会自动在所有上游透传来的数据中,查找与该字符串完全匹配的变量名并进行聚合计算。对于标准英文/拼音字母组成的变量名(如
cost),则不需要加引号,直接写SUM(cost)即可。
2. 属性与数据的自动透传 (Attribute Pass-through)
数据在连线网络中流转时具有自动透传和汇聚特性:
- 上游变量无缝流入:任何节点上自定义的属性值、或通过公式计算输出的值,都会顺着连接线,自动被携带并传递到下游节点的数据池(
inputs)中。 - 智能同名变量累加:对于标准命名的变量,引擎会自动在底层帮您进行同名变量的累加合并。例如,如果上游有 3 个节点分别传来了 10、20、30 的
cost,您在下游节点的公式里直接写cost + 100即可(此时cost已自动求和为 60),甚至无需显式书写SUM(cost)。这种“所连即所得”的机制大大简化了复杂模型的配置。
4.4 动态占位符 (Dynamic Placeholders)
计算引擎最直观的体验方式是“数据可视化”。
在节点的标题或 Markdown 文本描述中,您可以随时使用 { } 语法插入变量名。
- 操作步骤:双击节点进入编辑模式,输入
成本为:{cost} 万。 - 效果:当图谱结构发生变化,或上游的数据变动时,引擎会瞬间完成重新计算,节点上的文字会自动实时更新为
成本为:120 万,无需任何刷新操作!
