- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经编写了一个程序,一切看起来都很好..但在运行时代理会混淆消息。例如我有这个代码:
ACLMessage msg = new ACLMessages (ACLMessage.INFORM);
msg.setContent = ("G" + groupID);
for(int i =0 ; i<50 ; i++){
msg.addReceiver(new AID("MyClass" + i, AID.ISLOCALNAME));
}
send (msg);
假设我收到的是这样的:
ACLMessage rcv = myAgent.receive();
并假设我在程序的另一部分定义了另一个 ACLMessage,例如在另一个 block 中名为 msg2..,内容 =“T”+ temp。
当我收到下一条消息时,我意识到这些消息很困惑......它们没有被正确接收。我的意思是运行下面的代码有两个不同的结果:
System.out.println("rcv Content is: " + rcv.getContent());
结果将是:G1有时是:T34
这个错误的消息使我的程序无法正确运行...我更改了消息格式,例如:“T”+ groupID +“T”或其他形式...但它不起作用..
////////////////////////////////////////////////////////////////////////////////////////////当我学会使用消息模板后:
case 17:{// in this case deligates send the avg to the supervisor
if(!deligateFlag){
state++;
break;
}
ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.setConversationId("A");
msg.setContent("V" + avg);
//System.err.println("Content of rcv is: " + msg.getContent());
msg.addReceiver(mySupervisor);
send(msg);
System.out.println(myAgent.getLocalName()
+ " Says: I am deligate of group "
+ group
+ " And I sent the average temp of my followers "
+ "to the supervisor which is: "
+ mySupervisor.getLocalName());
state++;
break;
}
case 18:{/* in this case supervisor receives the avg temp of
each group and calculates the avg of averages and then
decides what to do*/
if(!supervisorFlag){
n=1;
state++;
break;
}
//System.err.println("This is Beginning of case 18");
if(supervisorFlag){
MessageTemplate mt = MessageTemplate.MatchConversationId("A");
ACLMessage msg = myAgent.receive(mt);
if (msg != null) { System.err.println("TContent is: " + msg.getContent());
dAvg += Character.getNumericValue(msg.getContent().charAt(1));
if(msg.getContent().charAt(0) == 'V'){
n++;
System.err.println("N is: " + n);
}
}
if(n > 4){
dAvg /= 4;
totalAvg = dAvg;
System.out.println("Supervisor "
+ myAgent.getLocalName()
+ "Says: The total average of whole system is: "
+ totalAvg);
}
state++;
break;
问题是,在最好的情况下,程序运行直到 if (n>4)
.. 一切都停止了 .. 没有错误,没有警告 .. 它只是停止了 .. 即使 n 转到5 但没有任何反应...我不知道确切的问题是什么..无论是 ACL 消息还是我不知道...一般我不知道为什么 90% 的程序不打印 TContent 。消息会发生什么..
最佳答案
如果您想接收特定的 aclMessages,您可以使用 myAgent.receive(MessageTemplate t)。
例如,您要发送消息
代理1:
ACLMessage request = new ACLMessage(ACLMessage.REQUEST);
...
request.setConversationId("G");
myAgent.send(request)
并且您希望 Agent2 仅接收 ConversationId =“G”的消息
代理2:
MessageTemplate mt = MessageTemplate.MatchConversationId("G");;
ACLMessage msg = myAgent.receive(mt);
if (msg != null) {
// Process it
...
} else {
block();
}
关于java - JADE 中的 ACLMessages 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52817520/
我从一个代理向另一个代理发送消息 msg.setContent("价格:30,数量:1"); 之后我需要手动解析它。有没有更方便的方式传递参数而不用转成字符串?例如,发送一些容器.. 最佳答案 你最好
我使用JADE创建一个代理系统。我创建了两个程序:服务器和客户端。 服务器: Runtime runtime = Runtime.instance(true); Profile profile = n
我已经编写了一个程序,一切看起来都很好..但在运行时代理会混淆消息。例如我有这个代码: ACLMessage msg = new ACLMessages (ACLMessage.INFORM); ms
我正在尝试创建 JADE 消息 ACLMessage reqMsg = new ACLMessage(ACLMessage.REQUEST); 基本上,我可以使用一些
我目前正在使用 JADE 使用基于主题的通信。我可以使用 jade.core.messaging.TopicManagementFEService 注册一个 JADE 代理,从而连接到同一平台中的主容
我是一名优秀的程序员,十分优秀!