【发布时间】:2018-09-28 11:51:17
【问题描述】:
您好,我正在尝试为 8 个数字实现树排序。我创建了 15 个树节点代理和一个管理代理。我想要实现的是同步树中的叶子并将它们生成的数字发送到管理器节点。我的问题是,在我的 for 周期中,叶子没有同步,所以经理正在等待下一个叶子,但那个叶子可能已经发送了它的号码。有没有办法同步这些叶子,以便经理等待每个叶子,然后打印出接收到的数字?
这里是代理:
treeSort.mas2j
MAS treeSort {
infrastructure: Centralised
agents:
manager;
agent#15;
}
manager.asl:
!start.
+!start : true <-
for ( .range(I,8,15) ) {
.concat("agent",I,TempAgent);
.print("waiting from ",TempAgent);
.wait(recievedNum(Y,X) & Y=TempAgent);
.print("from ",Y," recvd ",X);
};
.println(" done").
agent.asl
!start.
@p1 +!start : .my_name(agent8) | .my_name(agent9)| .my_name(agent10)|.my_name(agent11)
| .my_name(agent12) | .my_name(agent13) | .my_name(agent14) |my_name(agent15) <- +myNum(math.round(math.random(100)));
?myNum(X);
+iam(leaf);
.my_name(Y);
.send(manager, tell, recievedNum(Y,X)).
@p2 +!start : .my_name(agent7) | .my_name(agent6)| .my_name(agent5) |.my_name(agent4)
| .my_name(agent3) | .my_name(agent2) <- +iam(node).
@p3 +!start : .my_name(agent1) <- +iam(root).
【问题讨论】:
-
嗨,您确定经理在某些情况下一直在等待吗? .wait(
) 等待条件为真,但是,如果它已经为真,则不等待。
标签: artificial-intelligence agent