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

标签 artificial-intelligence multi-agent

我知道如何定义一个原子的外部操作(必须有参数),例如“sitDown”,然后在执行操作方法内的环境 Java 文件中手动对其进行编码。

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

销毁(4, 7);

在我的环境类中,如何在执行操作方法中检索这些值?

最佳答案

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

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

@OPERATION 
void changeLedPin(String newState) throws Exception {
     try {
        /** put gpio HIGH */
        if (newState.equals("high")) {
            logger.info("Changing pin to HIGH!");
            ledPin.high();
        }

        /** put gpio LOW */
        if (newState.equals("low")) {
            logger.info("Changing pin to LOW!");
            ledPin.low();
        }
     } catch (Exception e) {
        e.printStackTrace();
   }
}

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

!start.

+!start <- 
    changeLedPin(low).

对于反馈,您可以使用 OpFeedbackParam 在 Jason 代码中发送一个变量来统一。工件方法是这样的:

@OPERATION 
void inc(OpFeedbackParam<String> value) {
    /* some code */
}

来源:https://github.com/cleberjamaral/goldminers/blob/master/src/env/mining/Raspi.java https://github.com/cleberjamaral/camel-artifact/blob/master/camelJaCaMoRobot/src/env/artifacts/Counter.java

关于artificial-intelligence - JASON (AgentSpeak) 如何使用带有变量的外部操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48334608/

相关文章:

artificial-intelligence - 如何实现有序交叉

algorithm - 蒙特卡洛树搜索,反向传播(备份)步骤 : Why change perspective of reward value?

java - JADE Con​​tractNet 和 GUI 问题

java - 在 jade 中构建具有集成 GUI 的代理

java - Jade 行为调度

nlp - 如何构建 Jira AI 聊天机器人?

artificial-intelligence - 如何处理人工神经网络中的不确定性/缺失数据?

python - 了解mfcc的输出

artificial-intelligence - Multi-Agent系统应用思路