हाय im जेड के तहत मेरे शोध करे पर काम करसभी कंटेनर जेड पर एजेंट कैसे प्राप्त करें?
मैं एम्स का उपयोग मुख्य कंटेनर पर सभी जेड एजेंटों को खोजने के लिए, लेकिन जब मैं कुछ एजेंट कंटेनर करने की कोशिश की मैं सभी कंटेनर खोज करने के लिए उन पर सभी एजेंटों प्राप्त करने में विफल
कृपया मुझे मेरे कोड है जो केवल मौजूदा कंटेनर
कि कोड मैं का उपयोग कंटेनरों के तहत एजेंट बनाने के लिए की एम्स के एजेंट की खोज फिक्सिंग मदद करते हैं।
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();
}
कि मेरे एजेंट, जो एक 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();
}
मैं पहले से ही मेरे कोड पर यह किया लेकिन जब मैं कई कंटेनर शुरू कि काम नहीं करते। –
अच्छी तरह से, यह कोड हाल ही में परीक्षण किया गया है, यह कई कंटेनरों के साथ भी बहुत अच्छा काम करता है, इसे फिर से जांचें – steevn
यह कुछ समय यादृच्छिक रूप से लटकता है !! –