[JADE] Problema output in console di eclipse

di il
5 risposte

[JADE] Problema output in console di eclipse

Salve a tutti,
ho da poco iniziato a lavorare con JADE e ho riscontrato questo problema: gli output che mi dovrebbero fornire i behaviour che richiamo non vengono stampati nella console di Eclipse.
Allego i due semplicissimi codici che ho fatto.
AGENTE:
package agenti;

import jade.core.Agent;

public class FirstAgent extends Agent{
	
	protected void setup() {
		
		addBehaviour(new Prova());
		
		doDelete();
		
	}
		
	protected void takeDown() {
		
		System.out.println(getAID().getName() + " è stato terminato");
		
	}
	
}
BEHAVIOUR:
package agenti;

import jade.core.behaviours.Behaviour;

public class Prova extends Behaviour {
	
	public void action() {
		
		System.out.println("Il behaviour è stato eseguito");
		
	}
	
	public boolean done() {
		
		return true;
		
	}

}
Io mi aspetto un output del tipo:
Il behaviour è stato eseguito
nomeAgente è stato terminato

Purtroppo l'output del behaviour non viene stampato.
Vi allego il risultato della console:

mar 19, 2019 1:27:01 PM jade.core.Runtime beginContainer
INFORMAZIONI: ----------------------------------
This is JADE 4.5.0 - revision 6825 of 23-05-2017 10:06:04
downloaded in Open Source, under LGPL restrictions,
at http://jade.tilab.com
----------------------------------------
mar 19, 2019 1:27:01 PM jade.imtp.leap.LEAPIMTPManager initialize
INFORMAZIONI: Listening for intra-platform commands on address:
- jicp://192.168.1.172:1099

mar 19, 2019 1:27:01 PM jade.core.BaseService init
INFORMAZIONI: Service jade.core.management.AgentManagement initialized
mar 19, 2019 1:27:01 PM jade.core.BaseService init
INFORMAZIONI: Service jade.core.messaging.Messaging initialized
mar 19, 2019 1:27:01 PM jade.core.BaseService init
INFORMAZIONI: Service jade.core.resource.ResourceManagement initialized
mar 19, 2019 1:27:01 PM jade.core.BaseService init
INFORMAZIONI: Service jade.core.mobility.AgentMobility initialized
mar 19, 2019 1:27:01 PM jade.core.BaseService init
INFORMAZIONI: Service jade.core.event.Notification initialized
mar 19, 2019 1:27:01 PM jade.mtp.http.HTTPServer <init>
INFORMAZIONI: HTTP-MTP Using XML parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
mar 19, 2019 1:27:01 PM jade.core.messaging.MessagingService boot
INFORMAZIONI: MTP addresses:
http://PC.home:7778/ac
mar 19, 2019 1:27:01 PM jade.core.AgentContainerImpl joinPlatform
INFORMAZIONI: --------------------------------------
Agent container Main-Container@192.168.1.172 is ready.
--------------------------------------------
PrimoAgente@192.168.1.172:1099/JADE è stato terminato

Qualcuno può spiegarmi perchè non viene visualizzato quello che dovrebbe stampare il behaviour?
Grazie in anticipo

5 Risposte

  • Re: [JADE] Problema output in console di eclipse

    little_lakes ha scritto:


    Qualcuno può spiegarmi perchè non viene visualizzato quello che dovrebbe stampare il behaviour?
    Premesso che non conosco assolutamente nulla di JADE. Ma una domanda mi viene spontanea (e dovresti saperla o verificarla tu che usi JADE): chi va a "pescare" quella tua classe FirstAgent? Cioè in virtù di cosa viene riconosciuta e gestita quella tua classe di "agente"?? Questo chiaramente è un concetto esclusivamente specifico di JADE.
  • Re: [JADE] Problema output in console di eclipse

    Lo si richiama configurando l'esecuzione da eclipse. Ma non è quello il problema, l'agente viene avviato e chiuso correttamente. É quello che succede al momento della chiamata del behaviour che non mi torna.
    Se può essere d'aiuto nella mia configurazione di esecuzione ad argument metto: -gui PrimoAgente:agenti.FirstAgent
  • Re: [JADE] Problema output in console di eclipse

    Credo di aver capito il problema. Il setup() come prima cosa credo analizzi tutto il codice presente dentro di esso. Se trova il comando doDelete() aggiorna un flag. A questo punto inizia ad eseguire effettivamente il codice ma, da quanto ho capito, se il flag di doDelete() è attivo, i behaviour non vengono proprio eseguiti. Quindi le uniche cose che vengono eseguite se è presente il comando doDelete() sono i comandi che non richiamano i behaviour (e.g. i println).
    Potete confermare?
  • Re: [JADE] Problema output in console di eclipse

    little_lakes ha scritto:


    Se trova il comando doDelete() aggiorna un flag. A questo punto inizia ad eseguire effettivamente il codice ma, da quanto ho capito, se il flag di doDelete() è attivo, i behaviour non vengono proprio eseguiti. Potete confermare?
    Beh, sì, stando alla documentazione di Agent sembrerebbe così (ma non so dirti di più). Ma la questione semmai sarebbe: perché nel setup dovresti mettere un doDelete() ? E' come dire: ok agente, parti. Poi appena l'agente è in fase di setup: no, allora cancellati e togliti.
    Potrebbe avere senso fare un doDelete() nel setup() se nella fase di setup si dovessero ottenere delle "risorse" (connection db, ecc...) ma una di queste fallisce e quindi devi, giustamente, terminare l'agente perché non avrebbe senso continuare.
    Ma fare un doDelete() indiscriminatamente così, non lo vedo molto sensato ...
  • Re: [JADE] Problema output in console di eclipse

    Grazie della risposta e dell'interessamento. Io chiamavo doDelete() perchè mi aspettavo che prima della sua chiamata venissero eseguiti i behaviour ma mi sbagliavo.
    Grazie mille
Devi accedere o registrarti per scrivere nel forum
5 risposte