【问题标题】:JADE agent data communicationJADE代理数据通讯
【发布时间】:2014-09-25 16:02:49
【问题描述】:

在我的代理程序(使用玉)中,我有 5 个代理,其中一个代理是协调器,其他代理是设备代理。所有 4 个设备代理都向协调器发送一个数组。

我希望协调器接收所有 4 个数组并将它们存储为单个数组。我该怎么做?

我通过 ACLmessage(strings) 发送消息

【问题讨论】:

  • 协调器中收到的消息是如何处理的?

标签: java agent agents-jade


【解决方案1】:
  1. 您应该在 4 条消息中使用msg.setContentObject((Serializable)yourObject) 发送您的数组
  2. 在接待处:
    1. 做演员:yourLocalObject=(yourObjectType) msg.getContentObject();
    2. 然后globalarray.merge(yourLocalObject)

【讨论】:

    【解决方案2】:

    我建议使用协调器的 jam.proto.AchieveREInitiator 行为。这允许与多个响应者进行简单的对话。

    响应者,您的 4 个设备代理将响应 jam.proto.AchieveREResponder 行为。

    代码在协调器端应该看起来像这样

    class CoordinatorRequestService extends AchieveREInitiator
    {
    
        String agentName;
                String Service;
    
        public CoordinatorRequestService (Agent a, ACLMessage msg,String Service ,String agentLocalID) {
            super(a, msg);
            // TODO Auto-generated constructor stub
            this.agentName=agentLocalID;
                        this.Service=Service;
        }
    
        protected Vector prepareRequests(ACLMessage predefinedRequest)
        {
    
    
                    ACLMessage requestmsg=new ACLMessage(ACLMessage.REQUEST);
                    requestmsg.addreciever(//add your agents here)
                    requestMsgVector.add(requestmsg);
                    return requestMsgVector;
        }
    
    protected void handleInform(ACLMessage inform)
                {
                   recieveData=inform.extractDataRecieved();
                   globalarray.append(recieveData)
    
                }
    

    谷歌寻找更多Contract net的例子,实现交流。

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      相关资源
      最近更新 更多