我试图通过遵循here提供的程序在两个代理之间实现并行性
我得到的输出(如下所示)与预期完全不同。
程序在执行操作期间打印代理的名称和当前系统时间。我尝试在两个代理中执行并行操作,其中每个代理程序应该打印自己的名称和当前时间,但只有后两个代理程序正在执行其操作。
javac test.java
java jade.Boot -agents aaa:test ccc:test
....
代理容器Main-Container@192.168.122.1准备就绪。100:ccc
200:ccc
300:ccc
400:ccc
500:ccc
这是我实施的代码
import jade.core.Agent;
import jade.core.behaviours.*;
public class test extends Agent{
protected void setup(){
addBehaviour(new Looper(this,100));
}
}
class Looper extends SimpleBehaviour
{
static String offset = "";
static long t0 = System.currentTimeMillis();
String tab = "" ;
int n = 1;
long dt;
public Looper( Agent a, long dt) {
super(a);
this.dt = dt;
offset += " " ;
tab = new String(offset) ;
}
public void action()
{
System.out.println( tab +
(System.currentTimeMillis()-t0)/10*10 + ": " +
myAgent.getLocalName() );
block( dt );
n++;
}
public boolean done() { return n>6; }
}
预期产量:
java jade.Boot aa:Agent1 zzzzz:Agent1
0:zzzzz
0:aa
10:zzzzz
10:aa
300:zzzzz
310:aa
510:zzzzz
510:aa
610:zzzzz
610:aa
910:zzzzz
920:aa
1020:zzzzz
1020:aa
1220:zzzzz
1220:aa
1520:zzzzz
1520:aa
1520:zzzzz
1530:aa
2030:zzzzz
2030:aa
2530:zzzzz
2530:aa
答案 0 :(得分:1)
关于" -agents"选项,它是以分号分隔的代理程序说明符列表。您可以替换为:
java -cp jade.Boot -agents "aaa:test;ccc:test"
或指定classpath:
java -cp /home/myusername/jadelibpath/libjade-4.3.jar:. jade.Boot -agents "aaa:test;ccc:test"