使用Java JADE创建多个代理

时间:2016-01-14 12:25:01

标签: java eclipse agents-jade agents

我在eclipse中对JADE平台有点新意。我想创建多个代理,我已经放置了一个for循环并增加了计数器以创建代理,它曾经运行良好但是当我添加了ThiefAgent时,它没有工作。它只创建了一个PoliceAgent和一个ThiefAgent。 代码完美无缺,但它不会创建许多代理。

这是main.java代码:

 public class Main {

   public static void main(String[] args) {

    /*********************************************************************/
    Runtime rt=Runtime.instance();
    ProfileImpl p=new ProfileImpl();
    p.setParameter(Profile.MAIN_HOST, "localhost");
    p.setParameter(Profile.GUI, "true");


    ContainerController cc1=rt.createMainContainer(p);


    /**************creation of 5 police agents*****************/

    for(int i=1; i<6; i++)
    {

       AgentController ac1;
    try {



        ac1=cc1.createNewAgent("PoliceAgent"+i, "Agents.PoliceAgent", null);


        ac1.start();    

    } catch (StaleProxyException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }



         /**************creation of 3 thief agents*****************/

        for(int j=1; j<4; j++)
        {

       AgentController ac2;
    try {


        ac2=cc1.createNewAgent("ThiefAgent"+j, "Agents.ThiefAgent",    null);


        ac2.start();    

    } catch (StaleProxyException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
     }
     }

        }
      }

我尝试为两个代理程序设置一个For循环,但没有任何改变。 错误是什么?提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 创建PoliceAgent课程:

    public class PoliceAgent extends Agent{
        @Override
        public void setup()
        {
            System.out.println("Police agent name is: " +getAID().getName());
        }
    }       
    
  2. 创建ThiefAgent类:

    public class ThiefAgent extends Agent{
        @Override
        public void setup()
        {
            System.out.println("Thief agent name is: " +getAID().getName());
        }
    }
    
  3. 创建AgentWorker主类:

    public class PoliceAgent{
    
       public static void main(String... args){
           Runtime runtime = Runtime.instance();
           Profile profile = new ProfileImpl();
           profile.setParameter(Profile.MAIN_HOST, "localhost");
           profile.setParameter(Profile.GUI, "true");
           ContainerController containerController = runtime.createMainContainer(profile);
    
           for(int i=1; i<6; i++){
               AgentController policeAgentController;
               try {
                   policeAgentController = containerController.createNewAgent("PoliceAgent"+i, "ua.agent.PoliceAgent", null);
                   policeAgentController.start();    
               } catch (StaleProxyException e) {
                   e.printStackTrace();
               }
           }
    
           for(int i=1; i<4; i++){
               AgentController thiefAgentController;
               try {
                   thiefAgentController = containerController.createNewAgent("ThiefAgent"+i, "ua.agent.ThiefAgent", null);
                   thiefAgentController.start();    
               } catch (StaleProxyException e) {
                   e.printStackTrace();
               }
            }
       }
    
    }
    
  4. 我在这段代码中没有看到错误,但我写了3个他们工作的课程。由于我没有看到整体情况,所以我只能说问题可能出在代理人和Jade的问题上。