Artificial intelligence JASON(AgentSpeak)如何使用带有变量的外部操作

Artificial intelligence JASON(AgentSpeak)如何使用带有变量的外部操作,artificial-intelligence,multi-agent,Artificial Intelligence,Multi Agent,我知道如何定义一个原子性的外部操作(必须包含参数),比如“坐下”,然后在环境Java文件中的execute action方法中手动编写它 但是,如果我定义了一个外部操作,它有没有接受参数的方法? 假设我想定义一个可以在代理代码中通过以下方式调用的操作: 销毁(4,7) 在我的environment类中,如何在execute action方法中检索这些值?是的,您可以向环境发送参数并获取反馈 例如,在应用程序中,更改机器人LED的方法可能如下所示(这属于扩展工件的类-CArtAgO): Jason

我知道如何定义一个原子性的外部操作(必须包含参数),比如“坐下”,然后在环境Java文件中的execute action方法中手动编写它

但是,如果我定义了一个外部操作,它有没有接受参数的方法? 假设我想定义一个可以在代理代码中通过以下方式调用的操作:

销毁(4,7)


在我的environment类中,如何在execute action方法中检索这些值?

是的,您可以向环境发送参数并获取反馈

例如,在应用程序中,更改机器人LED的方法可能如下所示(这属于扩展工件的类-CArtAgO):

Jason调用此外部操作的代理代码可能如下所示:

!start.

+!start <- 
    changeLedPin(low).
@OPERATION 
void inc(OpFeedbackParam<String> value) {
    /* some code */
}
!开始

+!start如果不是使用Cartago环境,而是使用Jason环境,则可以使用结构类API获取参数值。例如:

class ... extends Environment {
   ...
   public boolean executeAction(String ag, Structure action) {
      NumberTerm arg0 = (NumberTerm)action.getTerm(0);
      int vl = (int)arg0.solve();
   }
   ...
jasonapi是可用的

class ... extends Environment {
   ...
   public boolean executeAction(String ag, Structure action) {
      NumberTerm arg0 = (NumberTerm)action.getTerm(0);
      int vl = (int)arg0.solve();
   }
   ...