Как создать контейнеры и добавить в них агентов в JADE?
Я просто новичок в JADE. Я хотел бы знать, как создавать контейнеры, кроме основного, и добавлять в него несколько агентов. Полный код создания будет принята с благодарностью.
Спасибо!
3 ответа
Как указано в ответе Tafadzwa Chikudo, обычный способ запустить контейнер - запустить jade.Boot из командной строки (или в сценарии оболочки).
Но это также возможно сделать в другой Java-программе, используя "внутрипроцессный интерфейс JADE" (пакет jade.wrapper, класс jade.core.Runtime).
Например, следующий код создает "периферийный" контейнер (подключающийся к основному контейнеру на локальном хосте) и запускает в нем один агент.
//Get the JADE runtime interface (singleton)
jade.core.Runtime runtime = jade.core.Runtime.instance();
//Create a Profile, where the launch arguments are stored
Profile profile = new ProfileImpl();
profile.setParameter(Profile.CONTAINER_NAME, "TestContainer");
profile.setParameter(Profile.MAIN_HOST, "localhost");
//create a non-main agent container
ContainerController container = runtime.createAgentContainer(profile);
try {
AgentController ag = container.createNewAgent("agentnick",
"my.agent.package.AgentClass",
new Object[] {});//arguments
ag.start();
} catch (StaleProxyException e) {
e.printStackTrace();
}
Периферийный контейнер можно запустить следующим образом: java jade.Boot -container -host xxxx -agents z:package.agent;y:package.agent, где xxxx - это ip основного контроллера, z - имя, которое вы даете первому агенту, y это имя, которое вы даете второму агенту, а package это пакет, который содержит агентов в jar-файле
Чтобы добавить к решению, предложенному Тафадзвой Чикудо, сначала вам нужно создать основной контейнер, вы можете сделать это с помощью следующей командыjava jade.boot -gui
, это просто создает основной контейнер с графическим интерфейсом. Вы можете узнать IP-адрес основного контейнера либо из графического пользовательского интерфейса, либо из вывода командной строки, который вы получаете при запуске начальных команд.
Чтобы добавить дополнительных агентов в их собственные контейнеры, вы можете запуститьjava jade.Boot -container -host IP -agents agent_name1:package.agent_classname;agent_name2:package.agent_classname
. «пакет» — это папка, в которой хранится класс.