Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1280178
  • 博文数量: 135
  • 博客积分: 10588
  • 博客等级: 上将
  • 技术积分: 1325
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-18 11:12
文章分类

全部博文(135)

文章存档

2013年(6)

2012年(3)

2011年(11)

2010年(7)

2009年(14)

2008年(6)

2007年(42)

2006年(46)

分类: Java

2006-11-08 09:35:29

一个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;}

                     });

              }

             

       }

}

当我们创建一个Comm2Agent时,在控制台上会打印出创建alice成功的消息。

阅读(4633) | 评论(10) | 转发(0) |
给主人留下些什么吧!~~