JADE代理数据通信

时间:2014-08-02 16:55:35

标签: java agent agents-jade

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

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

我通过ACLmessage(字符串)

发送消息

2 个答案:

答案 0 :(得分:0)

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

响应者,您的4个设备代理将以jade.proto.AchieveREResponder behiours回复。

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

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)

            }

谷歌找到更多合同网的例子并实现沟通。

古德勒克

答案 1 :(得分:0)

  1. 您应该使用private func configureAttributes(for attributes: UICollectionViewLayoutAttributes) { guard let collection = collectionView else { return } var visibleRect = CGRect() visibleRect.origin = collection.contentOffset visibleRect.size = collection.bounds.size let collectionLeft = itemSize.width / 2 let offset = collection.contentOffset.x let normalizedLeft = attributes.center.x - offset let maxDistance = self.itemSize.width let distance = min(abs(collectionLeft - normalizedLeft), maxDistance) let ratio = (maxDistance - distance)/maxDistance let scale = ratio * (1 - sideItemScale) + sideItemScale var t = CATransform3DIdentity t = CATransform3DScale(t, scale, scale, 1.0) attributes.zIndex = Int(scale * 10) attributes.transform3D = t }
  2. 在4条消息中发送数组
  3. 在接待处:
    1. 进行强制转换:msg.setContentObject((Serializable)yourObject)
    2. 然后yourLocalObject=(yourObjectType) msg.getContentObject();