package jadex.bdi.examples.cleanerworld_classic.cleaner; import jadex.bdi.examples.cleanerworld_classic.Location; import jadex.bdi.examples.cleanerworld_classic.MapPoint; import jadex.bdi.runtime.Plan; /** * Memorize the visited positions. */ public class MemorizePositionsPlan extends Plan { //-------- attributes -------- /** The forget factor. */ protected double forget; //-------- constructors -------- /** * Create a new plan. */ public MemorizePositionsPlan() { // getLogger().info("Created: "+this); this.forget = 0.01; } //-------- methods -------- /** * The plan body. */ public void body() { while(true) { Location my_location = (Location)getBeliefbase().getBelief("my_location").getFact(); double my_vision = ((Double)getBeliefbase().getBelief("my_vision").getFact()).doubleValue(); MapPoint[] mps = (MapPoint[])getBeliefbase().getBeliefSet("visited_positions").getFacts(); for(int i=0; i<mps.length; i++) { if(my_location.isNear(mps[i].getLocation(), my_vision)) { 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); } } }