【问题标题】:Creata Jade Agent with another agent与另一个代理创建翡翠代理
【发布时间】:2016-06-09 15:35:52
【问题描述】:

拜托,我需要帮助。如何在另一个代理的主体中创建一个 JADE 代理?

    Profile p = new ProfileImpl();

    p.setParameter(Profile.MAIN_HOST, "localhost");

    p.setParameter(Profile.MAIN_PORT, "1099");

    AgentContainer ac = rt.createMainContainer(p);
    AgentController agent ac.createNewAgent ("agentBD", "agents.AgentBD");

     agent.start();

【问题讨论】:

    标签: agents-jade


    【解决方案1】:

    尝试这样的事情(“代理”是您创建其他代理的当前代理):

    private static Codec codec = new SLCodec();
    private static ContentManager cm = new ContentManager();
    static
    {
        cm.registerLanguage(codec, FIPANames.ContentLanguage.FIPA_SL0);
        cm.registerOntology(FIPAManagementOntology.getInstance());
        cm.registerOntology(JADEManagementOntology.getInstance());
    }
    
    public static AID createNewAgent(Agent agent, String name, String className)
    {
        CreateAgent ca = new CreateAgent();
        ca.setAgentName(name);
        ca.setClassName(className);
        ca.setContainer((ContainerID) agent.here());
    
        ACLMessage request = new ACLMessage(ACLMessage.REQUEST);
        request.addReceiver(agent.getAMS());
        request.setOntology(JADEManagementOntology.getInstance().getName());
        request.setLanguage(FIPANames.ContentLanguage.FIPA_SL0);
        request.setReplyWith("new-agent-" + agent.getName() + System.currentTimeMillis());
    
        try
        {
            cm.fillContent(request, new Action(agent.getAMS(), ca));
            agent.send(request);
    
            MessageTemplate mt = MessageTemplate.MatchInReplyTo(request.getReplyWith());
            ACLMessage reply = agent.blockingReceive(mt, 10000);
            if(reply == null)
                throw new RuntimeException("cannot create agent [" + name + "; " + className + "]");
    
            return new AID(name, AID.ISLOCALNAME);
        }
        catch (Codec.CodecException e)
        {
            throw new RuntimeException(e);
        }
        catch (OntologyException e)
        {
            throw new RuntimeException(e);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-05
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多