JADE学习笔记4:Agent通信

Agent通信是JADE中最基本的功能,基于异步消息传递。每个Agent都有一个“邮箱”(Agent消息队列),JADE实时运行环境传递Agent发送的消息传递到邮箱内,通知接收Agent。Agent是否处理队列中的消息由Agent开发者决定。
消息格式遵循FIPA-ACL消息结构,每条消息包括以下几个内容:
  1)sender:消息的发送者,用Agent标志AID表示。
  2)receivers:接受Agent消息的Agent,可以是多个。
  3)Reply-to:应收到回应的接受者。
  4)Performative:通信行为或称通信原语,标志发送消息的目的,即发送者想要通过发送消息干什么。通常有这样一些常值:REQUEST,INFORM,ACCEPT_PROPOSAL,REJECT_PROPOSAL,PROPOSE等。如REQUEST表示发送者希望接收者执行一个特定的任务,INFORM表示发送者希望接收者了解一些事情,PROPOSE或者CFP(Call For Proposals)表示发送者希望进行一次谈判。
  5)Content:消息的内容。
  6)Language:内容语言,比如内容的编码格式。
  7)ontology:双方都能够理解的消息内容的概念说明和语义描述。
发送消息时调用send()方法,接收消息调用Receive()方法。

简单实例:
发送者:l_3_ACL_cyc文件夹中建立类文件Sender

package l_3_ACL_cyc;

import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.*;
import jade.lang.acl.ACLMessage;

public class Sender extends Agent{
   
    public void setup() {
        addBehaviour(new Behaviour() {

            private boolean finished = false;

            @Override
            public void action() {
                // TODO 自动生成的方法存根
                doWait(5000);
                ACLMessage acl=new ACLMessage(ACLMessage.INFORM); //通知
                AID r=new AID();
                r.setLocalName("Rec");  //设置接收Agent的本地名
                acl.addReceiver(r);     //添加到ACL消息中
                acl.setSender(getAID());  //设置发送者本地名,这里可以省略
                acl.setContent("Hello,Rec"); //设置内容
                send(acl);   //向Rec发送消息
                System.out.println("local name is:" + getLocalName());
                System.out.println(getLocalName()+" send Hello to Rec");
                System.out.println("the content is : "+acl.getContent());
                System.out.println("send finished");
                doWait(5000);  
                finished=true;
                doDelete();
            }

            @Override
            public boolean done() {
                // TODO 自动生成的方法存根
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值