How to get agents on all jade containers?

Hi, I am working on my thesis under jade

I use ams to detect all jade agents in the main container, but when I tried to create some agent containers, I could not find all the containers to get all the agents from them

please help me fix my code that only finds the ams agent of the current container

what is the code that I use to create an agent in containers.

Runtime rt= Runtime.instance(); Profile p=new ProfileImpl(); AgentContainer AgentContainere = rt.createMainContainer(p); AgentController[] tab=new AgentController[N]; try { int k=0; for (int i = 0; i < N; i++) { if (i % 100 == 0) { p=new ProfileImpl(); AgentContainere = rt.createMainContainer(p); } if ((i+1)%(N/NbrC)==0) { tab[i] = AgentContainere.createNewAgent(psoeudo+" - "+i, "Agents.KmeanAgent", new Object[]{K,NbrC,true,k}); k++; }else tab[i] = AgentContainere.createNewAgent(psoeudo+" - "+i, "Agents.KmeanAgent", new Object[]{K,NbrC,false,N}); } for (AgentController tab1 : tab) { tab1.start(); } 

what is my agent that should broadcast aclmessage:

  try { currentCluster = new Point(p.getX(), p.getY()); tableOfCenters[index] = currentCluster; AMSAgentDescription[] agents = null; boolean notstable = true; int found = 0; long sleeptime=7000; while (notstable) { try { sleep(sleeptime); SearchConstraints c = new SearchConstraints(); c.setMaxResults(new Long(-1)); agents = AMSService.search(this, new AMSAgentDescription(), c); if (agents.length > found) { found = agents.length; sleeptime+=5000; } else { notstable = false; } } catch (Exception e) { e.printStackTrace(); } } System.out.println(found + "the found agent"); AID myId = getAID(); ACLMessage msg = new ACLMessage(ACLMessage.INFORM); int sendloop=0; msg.setContent(getName() + currentCluster + " index = " + index); for (AMSAgentDescription agent : agents) { AID sendTo = agent.getName(); if (!sendTo.equals(myId) && !sendTo.getName().toLowerCase().contains("ams") && !sendTo.getName().toLowerCase().contains("df")) { msg.addReceiver(sendTo); sendloop++; if (sendloop%10==0) { send(msg); System.out.println(msg); msg.clearAllReceiver(); } } } if (sendloop%10!=0) { send(msg); System.out.println(msg); msg.clearAllReceiver(); } System.out.println("********************"); System.out.println(msg); System.out.println("********************"); } catch (Exception e) { e.printStackTrace(); } 
+6
source share
2 answers

you only need to send the request to the AMS agent, then print or do anything using the agent list (the current agent in the jade middleware):

step 1: send a request to AMS:

  // Required imports import jade.domain.AMSService; import jade.domain.FIPAAgentManagement.*; ... AMSAgentDescription [] agents = null; try { SearchConstraints c = new SearchConstraints(); c.setMaxResults ( new Long(-1) ); agents = AMSService.search( this, new AMSAgentDescription (), c ); } catch (Exception e) { ... } 

step 2: display the query result:

 for (int i=0; i<agents.length;i++){ AID agentID = agents[i].getName(); System.out.println(agentID.getLocalName()); } 
+6
source
 import jade.core.Agent; import jade.core.AID; import jade.domain.AMSService; import jade.domain.FIPAAgentManagement.*; public class SearchC extends Agent { protected void setup() { AMSAgentDescription [] agents = null; try { SearchConstraints c = new SearchConstraints();// object to searh //the container exist on the System c.setMaxResults (new Long(-1));//define infinity result to C agents = AMSService.search( this, new AMSAgentDescription (), c );//putt all agent found on the system to the agents list } catch (Exception e) { System.out.println( "Problem searching AMS: " + e ); e.printStackTrace(); } AID myID = getAID();// this methode to get the idesntification of //agents such as (Name , adress , host ....etc) for (int i=0; i<agents.length;i++) { AID agentID = agents[i].getName(); System.out.println( ( agentID.equals( myID ) ? "*** " : " ") + i + ": " + agentID.getName() ); } doDelete();// kill agent System.exit(0); // exit System } 
+3
source

Source: https://habr.com/ru/post/982832/


All Articles