如何获取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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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