package jadex.bdi.examples.cleanerworld.cleaner;
import jadex.application.space.envsupport.math.IVector1;
import jadex.application.space.envsupport.math.IVector2;
import jadex.application.space.envsupport.math.Vector1Double;
import jadex.bdi.runtime.Plan;
/**
* Memorize the visited positions.
*/
public class MemorizePositionsPlan extends Plan
{
//-------- methods --------
/**
* The plan body.
*/
public void body()
{
double forget = 0.01;
while(true)
{
IVector2 my_location = (IVector2)getBeliefbase().getBelief("my_location").getFact();
MapPoint[] mps = (MapPoint[])getBeliefbase().getBeliefSet("visited_positions").getFacts();
double my_vision = ((Double)getBeliefbase().getBelief("my_vision").getFact()).doubleValue();
IVector1 dist = new Vector1Double(my_vision);
for(int i=0; i<mps.length; i++)
{
if(dist.greater(my_location.getDistance(mps[i].getLocation())))
{
mps[i].setQuantity(mps[i].getQuantity()+1);
mps[i].setSeen(1);
}
else
{
double oldseen = mps[i].getSeen();
double newseen = oldseen - oldseen*forget;
mps[i].setSeen(newseen);
}
}
//System.out.println("inc: "+SUtil.arrayToString(mps));
waitFor(300);
}
}
}