Java 如何在Agentspeak中获取文本的值
A有3个工作代理,以书面形式使用agentspeak。其中两个有一个信念+数(someNumber),第三个试图计算这两个中的最小值。我现在看到的是中间代理从两个代理接收两个文本,但由于这两个都是文本,这里不能使用普通的math.min()操作:Java 如何在Agentspeak中获取文本的值,java,artificial-intelligence,agent,Java,Artificial Intelligence,Agent,A有3个工作代理,以书面形式使用agentspeak。其中两个有一个信念+数(someNumber),第三个试图计算这两个中的最小值。我现在看到的是中间代理从两个代理接收两个文本,但由于这两个都是文本,这里不能使用普通的math.min()操作: +!test: iam(root) <- .send("agent14", askOne, number(RE), L); .send("agent15", askOne, number(RE2), R); .print(
+!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").
有没有办法比较这两个值?问题的根源是askOne的答案:一个与用于提问的文本类型相同的文本。因此,L与编号(65)相结合,R与编号()相结合。由于它们是文字(而不是数字),因此
math.min
不能使用它们
解决方案是利用的第四个参数中的统一。send
:
.send(“agent14”、askOne、数字(RE)、数字(L))代码>
.send(“agent15”、askOne、number(RE2)、number(R))代码>
现在L和R用数字和数学统一起来。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)]'.