jadex.bdi.examples.cleanerworld.cleaner.CleanUpWastePlan Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jadex-applications-bdi Show documentation
Show all versions of jadex-applications-bdi Show documentation
The Jadex BDI applications package contain
several example applications, benchmarks and
testcases using BDI agents.
package jadex.bdi.examples.cleanerworld.cleaner;
import jadex.application.space.envsupport.environment.ISpaceObject;
import jadex.bdi.runtime.IGoal;
import jadex.bdi.runtime.Plan;
/**
* Clean-up some waste.
*/
public class CleanUpWastePlan extends Plan
{
//-------- methods --------
/**
* The plan body.
*/
public void body()
{
// System.out.println("Clean-up waste plan started: "+getParameter("waste").getValue()+" "+getReason());
ISpaceObject waste = (ISpaceObject)getParameter("waste").getValue();
// Pickup waste if not already held.
if(!waste.equals(((ISpaceObject)getBeliefbase().getBelief("myself").getFact()).getProperty("waste")))
{
IGoal pickup = createGoal("achievepickupwaste");
pickup.getParameter("waste").setValue(waste);
dispatchSubgoalAndWait(pickup);
}
boolean dropped = false;
while(!dropped)
{
// Move to a not full waste-bin
IGoal findbin = createGoal("querywastebin");
dispatchSubgoalAndWait(findbin);
ISpaceObject wastebin = (ISpaceObject)findbin.getParameter("result").getValue();
// Retry, when wastebin is full in meantime.
try
{
IGoal drop = createGoal("achievedropwaste");
drop.getParameter("waste").setValue(waste);
drop.getParameter("wastebin").setValue(wastebin);
dispatchSubgoalAndWait(drop);
dropped = true;
}
catch(Exception e)
{
}
}
}
// public void passed()
// {
// System.err.println("passed: "+this+", "+getParameter("waste").getValue());
// }
//
// public void failed()
// {
// System.err.println("failed: "+this+", "+getParameter("waste").getValue());
// getException().printStackTrace();
// }
//
// public void aborted()
// {
// System.err.println("aborted: "+this+", "+getParameter("waste").getValue());
// }
}