JADE - 2 个代理之间的并行行为不起作用
JADE - Parallel behaviours amongst 2 agents does not work
我试图按照提供的程序 here.
在 2 个代理之间实现并行性
我得到的输出(如下所示)与预期的完全不同。
该程序在执行操作期间打印代理的名称和当前系统时间。我尝试在 2 个代理之间执行并行性,其中每个代理都应该打印自己的名称和当前时间,但只有 2 个代理中的后者正在执行其操作。
javac test.java
java jade.Boot -agents aaa:test ccc:test
....
Agent container Main-Container@192.168.122.1 is ready.
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
这是关于“-agents”选项的,它是一个以分号分隔的代理说明符列表。你可以用这个代替:
java -cp jade.Boot -agents "aaa:test;ccc:test"
或指定类路径:
java -cp /home/myusername/jadelibpath/libjade-4.3.jar:. jade.Boot -agents "aaa:test;ccc:test"
我试图按照提供的程序 here.
在 2 个代理之间实现并行性
我得到的输出(如下所示)与预期的完全不同。
该程序在执行操作期间打印代理的名称和当前系统时间。我尝试在 2 个代理之间执行并行性,其中每个代理都应该打印自己的名称和当前时间,但只有 2 个代理中的后者正在执行其操作。
javac test.java
java jade.Boot -agents aaa:test ccc:test
....
Agent container Main-Container@192.168.122.1 is ready.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
这是关于“-agents”选项的,它是一个以分号分隔的代理说明符列表。你可以用这个代替:
java -cp jade.Boot -agents "aaa:test;ccc:test"
或指定类路径:
java -cp /home/myusername/jadelibpath/libjade-4.3.jar:. jade.Boot -agents "aaa:test;ccc:test"