无法向另一个Jason代理发送操作

我使用Jason语言在两个代理之间进行通信。但是我无法使用发送操作,它会报错。

这是我的两个代理,

代理1:

// Agent Agent1 in project factorial3.mas2j/* Initial goals */!start./* Plans */+!start : true<- .print("starting..");    !query_factorial(2).+!query_factorial(X) : true <-.send(agent2,tell,giveme(X))./*+fact(X,Y) : true <-.print("factorial ", X, " is ", Y, " thank you expert").*/

代理2:

// Agent agent2 in project IdEx.mas2j/* Initial beliefs and rules *//* Initial goals */!begin./* Plans */+!begin : true    <- .print("expert starting.......");        !giveme(X).+!giveme(X):true    <- !fact(X,Y);    .print("Factorial of ", X, " is ", Y).    //.send(agent1,achive,fact(X,Y)).    +!fact(X,1) : X == 0.+!fact(X,Y) : X > 0<- !fact(X-1,Y1);    Y = Y1 * X.

因此,当我在代理1中尝试调用发送操作时,我会得到这个错误,而代理2则会接收到错误信息。

[agent2] *** Error adding var into renamed vars. var=X, value=(_229-1).java.lang.ClassCastException: jason.asSyntax.ArithExpr cannot be cast to jason.asSyntax.VarTerm    at jason.asSemantics.TransitionSystem.prepareBodyForEvent(TransitionSystem.java:877)    at jason.asSemantics.TransitionSystem.applyExecInt(TransitionSystem.java:728)    at jason.asSemantics.TransitionSystem.applySemanticRule(TransitionSystem.java:222)    at jason.asSemantics.TransitionSystem.reasoningCycle(TransitionSystem.java:1429)    at jason.infra.centralised.CentralisedAgArch.run(CentralisedAgArch.java:205)    at java.lang.Thread.run(Thread.java:745)

回答:

如果你想请求一个代理执行一个计划(例如代理1中的+!query_factorial(X)...),它应该是一个实现消息。取消注释“计划”+fact(X,Y) : true <- .print("factorial ", X, " is ", Y, " thank you expert"),你应该在开头使用操作符!将其变成一个计划。因此,如果我理解了你测试项目的总体思路,可以重写如下:

代理1代码:

!start.+!start : true<- .print("starting..");    !query_factorial(2).+!query_factorial(X) : true <-    .send(agent2,achieve,giveme(X)).

代理2代码:

+!giveme(X):true    <- !fact(X,Y);    .print("Factorial of ", X, " is ", Y).+!fact(X,1) : X == 0.+!fact(X,Y) : X > 0    <- !fact(X-1,Y1);    Y = Y1 * X.

你可以看到,我没有使用你原始代码中的“开始计划”,因为代理1在执行任务,使代理2在被请求时工作。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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