如何获取Agentspeak中字面值的值

我有三个用Agentspeak编写的运行中的代理。其中两个代理有一个belief +number(someNumber),第三个代理试图计算这两个值中的最小值。我现在的情况是中间代理接收到来自两个代理的字面值,但由于它们都是字面值,普通的math.min()操作在这里无法使用:

+!test: iam(root) <-    .send("agent14", askOne, number(RE), L);    .send("agent15", askOne, number(RE2), R);    .print("Both got numbers: ", L, " ", R);    +number(math.min(L, R));    .print("DONE").

这里math.min()函数会产生错误,因为它对这种数据类型没有实现:

[ArithFunctionTerm] Error in 'math.min(L,R)' (agent.asl:36) -- error in evaluate!jason.JasonException: math.min is not implemented for type 'number(65)[source(agent14)]'.

有没有办法比较这两个值?


回答:

问题的根源在于askOne的回答:一个与用于提问的类型相同的字面值。因此L与number(65)统一,R与number(<somenumber>)统一。由于它们是字面值(而不是数字),它们不能被math.min使用。

解决方案是利用.send的第四个参数中的统一:

.send("agent14", askOne, number(RE), number(L));.send("agent15", askOne, number(RE2), number(R));

现在L和R与数字统一,math.min将能正常工作。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注