【问题标题】:create array of agents in jade在jade中创建代理数组
【发布时间】:2014-11-15 10:21:48
【问题描述】:

早上好,我想创建一个包含多个代理实例(许多具有相同行为的代理)的数组,所以我首先使用 netbeans 创建了一个代理管理,该管理创建其他代理并画一个圆圈代表框架中的每个代理。这是主要代理的代码:

package jade;

/**
 *
 * @author walid
 */
import jade.core.Agent;
import jade.core.Runtime;
import jade.core.ProfileImpl;
import jade.wrapper.*;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Toolkit;

import java.util.logging.Level;
import java.util.logging.Logger;
import jade.Agent1;
public class AgentEnvironement extends Agent{
    private JFrame jFrame = null;
    private Agent1 []tab;       
    @Override
             protected void setup() {
        try {
            getJFrame().setVisible(true);
        } catch (StaleProxyException ex) {
            Logger.getLogger(AgentEnvironement.class.getName()).log(Level.SEVERE, null, ex);
        }
}           

public JFrame getJFrame() throws StaleProxyException {
        if (jFrame == null) {
        jFrame = new JFrame();
        jFrame.setSize(new java.awt.Dimension(500,350));
        Dimension tailleEcran =Toolkit.getDefaultToolkit().getScreenSize();
        int largeurEcran = tailleEcran.width;
        int hauteurEcran = tailleEcran.height;
        jFrame.setLocation((largeurEcran-500)/2,(hauteurEcran-350)/2);
        jFrame.setTitle("Environement des agents rumeurs.");
        jFrame.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);                  
        //jFrame.setContentPane(getJContentPane());
                Runtime rt = Runtime.instance();
        // Création du profil par défault
    ProfileImpl p = new ProfileImpl(false);
    AgentContainer container =rt.createMainContainer(p);
        // Agent controleur pour permettre la création des agents 
    AgentController Agent=null;
        Agent = container.createNewAgent("Agent1", "jade.Agent1", null);
    Agent.start();      
    }
    return jFrame;
}
}

这是代理类的代码,我想创建他的许多实例 包玉;

import jade.core.AID;
import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;


/**
 *
 * @author walid
 */
public class Agent1 extends Agent {

    /**
     */
    @Override
    public void setup() {
addBehaviour(new comportement());
}
class comportement extends CyclicBehaviour {
public void action() {
System.out.println ("ready");
}
}


    public static void main(String[] args) {

    }

}

老实说,我不擅长 java 编程,如果有人可以帮助我,我会很高兴。

【问题讨论】:

    标签: java agent agents-jade


    【解决方案1】:

    创建代理数组????我不确定这意味着什么,但如果您想创建多个代理,请使用 for 循环和计数器来增加名称。

     for (agentcounter=1;agentcounter++;agentcounter<agentmax)
     {
          Agent = container.createNewAgent("Agent"+agentcounter, "jade.Agent1", null);
     }
    

    这应该创建多个jade.Agent1 类型的代理 例如对于 agentmax=10

    Agent1(类型jade.Agent1)

    Agent2(类型jade.Agent1)

    Agent3(类型jade.Agent1)

    ....

    Agent10(类型jade.Agent1)

    注意在

    Agent = container.createNewAgent("Agent"+agentcounter, "jade.AgentClass", null);
    

    第一个字段是代理实例的名称 第二个字段是代理类

    【讨论】:

      【解决方案2】:

      您不能将您的代理称为“代理”,因为它是另一个类的名称,即您的代理所继承的根类。

          AgentController anotherName=null;
          anotherName = container.createNewAgent("Agent1", "jade.Agent1", null);
          anotherName.start();      
      

      应该没问题。

      另一条评论;代理不需要也没有 'main()' 方法,因为它们是以另一种方式创建的,如您所见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-25
        • 2016-04-19
        • 2014-04-18
        • 1970-01-01
        • 2011-12-16
        • 2023-03-23
        • 2014-09-25
        • 1970-01-01
        相关资源
        最近更新 更多