- 论坛徽章:
- 0
|
一个Agent如何以程序的方式声称另一个Agent:可以通过以下方式进行创建:
String name = "Alice" ;
AgentContainer c = getContainerController();
try {
AgentController a = c.createNewAgent( name,
"Pong", null );
a.start();
}
catch (Exception e){}
其中,createNewAgent方法的第一个参数是要创建的Agent的名称,第二个是Agent的类名,实际使用时要包括他所在的命名空间(包名),第三个参数是要传入的参数的名称。
例子:package jadePrime.acl;
/**
*
Program which creates another Agent and sends
------------ it some messages
comm2.java
*
*/
import
jade.core.Agent;
import
jade.core.behaviours.*;
import
jade.core.AID;
import
jade.wrapper.AgentContainer;
import
jade.wrapper.AgentController;//这两个是必须要引用的包
import
jade.lang.acl.*;
public class
Comm2 extends Agent {
String
name = "Alice"
;
AID
alice = new
AID( name, AID.ISLOCALNAME );
protected
void setup(){
AgentContainer
c=getContainerController();
System.out.println("find
container!");
try{
AgentController
a=c.createNewAgent(name,"jadePrime.acl.Pong",null);
a.start();
System.out.println("++++pong
has created:"+alice);
}
catch
(Exception e){
System.out.println("Create
Agent Error!");
addBehaviour(new
SimpleBehaviour(this){
int
n=0;
public
void action()
{
ACLMessage
msg = new ACLMessage(ACLMessage.INFORM);
msg.setContent("Message
#" + n );
msg.addReceiver(alice);
System.out.println("+++
Sending: " + n);
send(msg);
block(
1000 );
}
public
boolean done(){return ++n>3;}
});
}
}
}
当我们创建一个Comm2的Agent时,在控制台上会打印出创建alice成功的消息。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/17663/showart_197141.html |
|