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编程,如果有人可以帮助我,我将非常高兴。
答案 0 :(得分: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);
第一个字段是代理实例的名称 第二个字段是代理类
答案 1 :(得分:0)
您无法调用代理“代理”,因为是另一个类的名称,即您的代理继承的根类。
AgentController anotherName=null;
anotherName = container.createNewAgent("Agent1", "jade.Agent1", null);
anotherName.start();
这应该可以正常工作。
另一个评论;代理不需要也没有'main()'方法,因为它们是以你刚才看到的另一种方式创建的。