|
From: <jom...@us...> - 2008-05-25 13:45:16
|
Revision: 1306
http://jason.svn.sourceforge.net/jason/?rev=1306&view=rev
Author: jomifred
Date: 2008-05-25 06:45:14 -0700 (Sun, 25 May 2008)
Log Message:
-----------
jason team: remove cows not seen from BB
Modified Paths:
--------------
trunk/applications/jason-moise/src/jmoise/OrgAgent.java
trunk/applications/jason-moise/src/jmoise/OrgManager.java
trunk/applications/jason-team/src/java/agent/SelectEvent.java
trunk/applications/jason-team/src/java/agent/UniqueBelsBB.java
trunk/applications/jason-team/src/java/arch/ACArchitecture.java
trunk/applications/jason-team/src/java/arch/CowboyArch.java
trunk/applications/jason-team/src/java/arch/WriteStatusThread.java
trunk/src/jason/asSemantics/Agent.java
Added Paths:
-----------
trunk/applications/jason-team/src/java/test/TestUniqueBB.java
Modified: trunk/applications/jason-moise/src/jmoise/OrgAgent.java
===================================================================
--- trunk/applications/jason-moise/src/jmoise/OrgAgent.java 2008-05-25 11:33:07 UTC (rev 1305)
+++ trunk/applications/jason-moise/src/jmoise/OrgAgent.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -148,7 +148,6 @@
if (content.startsWith("scheme_group")) {
Term sch = cl.getTerm(0);
Term gr = cl.getTerm(1);
- logger.info("***** xxxx removing sch grp "+content);
removeObligationPermissionBeliefs(sch, gr, "obligation");
removeObligationPermissionBeliefs(sch, gr, "permission");
} else if (content.startsWith("scheme")) {
Modified: trunk/applications/jason-moise/src/jmoise/OrgManager.java
===================================================================
--- trunk/applications/jason-moise/src/jmoise/OrgManager.java 2008-05-25 11:33:07 UTC (rev 1305)
+++ trunk/applications/jason-moise/src/jmoise/OrgManager.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -232,7 +232,6 @@
updateMembersOE(sender, "play(" + rp.getPlayer().getId() + "," + rp.getRole().getId() + "," + gr.getId() + ")", false, false);
}
for (SchemeInstance sch : gr.getRespSchemes()) {
- logger.info("xxxx send remove sch grp "+sch.getId()+" to "+sender);
updateMembersOE(sender, "scheme_group(" + sch.getId() + "," + grId + ")", false, false);
}
}
@@ -364,8 +363,6 @@
// also send untell scheme_group (if it is the case)
for (SchemeInstance sch: gr.getRespSchemes()) {
- logger.info("xxxx send remove sch grp "+sch.getId()+" to "+gr.getPlayers());
-
updateMembersOE(gr.getPlayers(), "scheme_group(" + sch.getId() + "," + grId + ")", false, false);
}
// untell players
Modified: trunk/applications/jason-team/src/java/agent/SelectEvent.java
===================================================================
--- trunk/applications/jason-team/src/java/agent/SelectEvent.java 2008-05-25 11:33:07 UTC (rev 1305)
+++ trunk/applications/jason-team/src/java/agent/SelectEvent.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -4,9 +4,11 @@
import jason.asSemantics.Agent;
import jason.asSemantics.Event;
import jason.asSemantics.Unifier;
+import jason.asSyntax.Literal;
import jason.asSyntax.Trigger;
import java.util.Iterator;
+import java.util.List;
import java.util.Queue;
/**
@@ -18,7 +20,8 @@
private Trigger cow = Trigger.parseTrigger("+cow(_,_,_)");
private Unifier un = new Unifier();
-
+ private boolean cleanCows = false;
+
public Event selectEvent(Queue<Event> events) {
Iterator<Event> ie = events.iterator();
while (ie.hasNext()) {
@@ -31,4 +34,19 @@
}
return super.selectEvent(events);
}
+
+ public void cleanCows() {
+ cleanCows = true;
+ }
+
+ @Override
+ public void buf(List<Literal> percepts) {
+ super.buf(percepts);
+ if (cleanCows) {
+ // remove old cows from the memory
+
+ ((UniqueBelsBB)getTS().getAg().getBB()).remove_old_bels(Literal.parseLiteral("cow(x,x,x)"), "step", 6, getTS().getUserAgArch().getCycleNumber());
+ cleanCows = false;
+ }
+ }
}
Modified: trunk/applications/jason-team/src/java/agent/UniqueBelsBB.java
===================================================================
--- trunk/applications/jason-team/src/java/agent/UniqueBelsBB.java 2008-05-25 11:33:07 UTC (rev 1305)
+++ trunk/applications/jason-team/src/java/agent/UniqueBelsBB.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -3,11 +3,15 @@
import jason.asSemantics.Agent;
import jason.asSemantics.Unifier;
import jason.asSyntax.Literal;
+import jason.asSyntax.NumberTerm;
+import jason.asSyntax.Structure;
import jason.asSyntax.Term;
import jason.bb.DefaultBeliefBase;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
/**
@@ -27,8 +31,10 @@
Map<String,Literal> uniqueBels = new HashMap<String,Literal>();
Unifier u = new Unifier();
+ Agent myAgent;
public void init(Agent ag, String[] args) {
+ this.myAgent = ag;
for (int i=0; i<args.length; i++) {
Literal arg = Literal.parseLiteral(args[i]);
uniqueBels.put(arg.getFunctor(), arg);
@@ -76,5 +82,40 @@
}
return super.add(bel);
}
+
+ public void remove_old_bels(Literal bel, String timeAnnot, int maxAge, int curAge) {
+ Iterator<Literal> relevant = getCandidateBeliefs(bel, null);
+ if (relevant != null) {
+ List<Literal> toDel = new ArrayList<Literal>();
+ while (relevant.hasNext()) {
+ Literal linbb = relevant.next();
+ // find greatest timeAnnot
+ Structure bTime = null;
+ if (linbb.hasAnnot()) {
+ for (Term t: linbb.getAnnots()) {
+ if (t.isStructure()) {
+ Structure s = (Structure)t;
+ if (s.getFunctor().equals(timeAnnot)) {
+ if (bTime == null || bTime.compareTo(s) < 0)
+ bTime = s;
+ }
+ }
+ }
+
+ // if bTime was found
+ if (bTime != null) {
+ int age = (int)((NumberTerm)bTime.getTerm(0)).solve();
+ if (curAge - age > maxAge)
+ toDel.add(linbb);
+ }
+ }
+ }
+ for (Literal l: toDel) {
+ myAgent.getLogger().info("Removing "+l+" from BB because it is too old (current step is "+curAge+")");
+ remove(l);
+ }
+ }
+ }
+
}
Modified: trunk/applications/jason-team/src/java/arch/ACArchitecture.java
===================================================================
--- trunk/applications/jason-team/src/java/arch/ACArchitecture.java 2008-05-25 11:33:07 UTC (rev 1305)
+++ trunk/applications/jason-team/src/java/arch/ACArchitecture.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -82,7 +82,7 @@
percepts = p;
waitSleepThread.newCycle();
getTS().getUserAgArch().getArchInfraTier().wake();
- setCycle(step);
+ setSimStep(step);
}
/** all actions block its intention and succeed in the end of the cycle,
@@ -160,7 +160,7 @@
void newCycle() {
cycleCounter++;
- if (getCycle() == 1) cycleCounter = 1;
+ if (getSimStep() == 1) cycleCounter = 1;
StringBuilder notsent = new StringBuilder();
if (toExecute.size() > 1) {
@@ -192,7 +192,7 @@
}
timestartcycle = System.currentTimeMillis();
- logger.info(w+"Last sent action was "+lastActionInCurrentCycle+" for cycle "+getCycle()+ timetoact + notsent);
+ logger.info(w+"Last sent action was "+lastActionInCurrentCycle+" for cycle "+getSimStep()+ timetoact + notsent);
setLastAct(lastActionInCurrentCycle);
lastActionInCurrentCycle = null;
}
Modified: trunk/applications/jason-team/src/java/arch/CowboyArch.java
===================================================================
--- trunk/applications/jason-team/src/java/arch/CowboyArch.java 2008-05-25 11:33:07 UTC (rev 1305)
+++ trunk/applications/jason-team/src/java/arch/CowboyArch.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -18,6 +18,7 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import agent.SelectEvent;
import env.ACViewer;
import env.WorldModel;
import env.WorldView;
@@ -40,7 +41,7 @@
String massimBackDir = null;
ACViewer acView = null;
- int cycle = 0;
+ int simStep = 0;
WriteStatusThread writeStatusThread = null;
@@ -175,8 +176,8 @@
return lastAct;
}
- public int getCycle() {
- return cycle;
+ public int getSimStep() {
+ return simStep;
}
@@ -240,21 +241,6 @@
model.clearCows();
}
- //void cowPerceived(int x, int y) {
- // model.addCow(x,y);
- //}
-
- /*
- void sendCowsToTeam() {
- try {
- Message m = new Message("tell-cows", null, null, new ArrayList<Location>(model.getCows()));
- broadcast(m);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- */
-
void enemyPerceived(int x, int y) {
model.add(WorldModel.ENEMY, x, y);
}
@@ -266,10 +252,11 @@
if (view != null) view.dispose();
}
- void setCycle(int s) {
- cycle = s;
- super.setCycleNumber(cycle);
- if (view != null) view.setCycle(cycle);
+ void setSimStep(int s) {
+ ((SelectEvent)getTS().getAg()).cleanCows();
+ simStep = s;
+ super.setCycleNumber(simStep);
+ if (view != null) view.setCycle(simStep);
if (writeStatusThread != null) writeStatusThread.go();
}
@@ -361,7 +348,7 @@
}
}
}
-
+
public static int getAgId(String agName) {
return (Integer.parseInt(agName.substring(agName.length()-1))) - 1;
}
Modified: trunk/applications/jason-team/src/java/arch/WriteStatusThread.java
===================================================================
--- trunk/applications/jason-team/src/java/arch/WriteStatusThread.java 2008-05-25 11:33:07 UTC (rev 1305)
+++ trunk/applications/jason-team/src/java/arch/WriteStatusThread.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -67,7 +67,7 @@
while (true) {
try {
// write map
- map.println("\n\n** Agent "+owner.getAgName()+" in cycle "+owner.getCycle()+"\n");
+ map.println("\n\n** Agent "+owner.getAgName()+" in cycle "+owner.getSimStep()+"\n");
//for (int i=0; i<model.getNbOfAgs(); i++) {
// out.println("miner"+(i+1)+" is carrying "+model.getGoldsWithAg(i)+" gold(s), at "+model.getAgPos(i));
//}
@@ -79,7 +79,7 @@
waitNextCycle();
long cycletime = System.currentTimeMillis() - timebefore;
- StringBuilder s = new StringBuilder(String.format("Step %5d : ", owner.getCycle()-1));
+ StringBuilder s = new StringBuilder(String.format("Step %5d : ", owner.getSimStep()-1));
for (int agId=0; agId<WorldModel.agsByTeam; agId++) {
if (agents[agId] != null) {
Location agp = agents[agId].getLastLocation();
@@ -113,7 +113,7 @@
if (!dirmind.exists())
dirmind.mkdirs();
String agmind = transformer.transform(arch.getTS().getAg().getAgState());
- String filename = String.format("%5d.xml",arch.getCycle()).replaceAll(" ","0");
+ String filename = String.format("%5d.xml",arch.getSimStep()).replaceAll(" ","0");
FileWriter outmind = new FileWriter(new File(dirmind+"/"+filename));
outmind.write(agmind);
outmind.close();
Added: trunk/applications/jason-team/src/java/test/TestUniqueBB.java
===================================================================
--- trunk/applications/jason-team/src/java/test/TestUniqueBB.java (rev 0)
+++ trunk/applications/jason-team/src/java/test/TestUniqueBB.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -0,0 +1,28 @@
+package test;
+
+import static org.junit.Assert.assertEquals;
+import jason.asSyntax.Literal;
+
+import org.junit.Test;
+
+import agent.UniqueBelsBB;
+
+
+public class TestUniqueBB {
+
+ @Test
+ public void removeOldBB() {
+ UniqueBelsBB bb = new UniqueBelsBB();
+ bb.add(Literal.parseLiteral("cow(1,1,1)[step(3),step(1),step(6)]"));
+ bb.add(Literal.parseLiteral("cow(2,1,1)[step(10),step(1),step(6)]"));
+ bb.add(Literal.parseLiteral("cow(3,1,1)"));
+
+ bb.remove_old_bels(Literal.parseLiteral("cow(1,1,1)"), "step", 4, 11);
+
+ assertEquals(2, bb.size());
+
+ bb.remove_old_bels(Literal.parseLiteral("cow(1,1,1)"), "step", 4, 12);
+ bb.remove_old_bels(Literal.parseLiteral("cow(1,1,1)"), "step", 4, 15);
+ assertEquals(1, bb.size());
+ }
+}
Modified: trunk/src/jason/asSemantics/Agent.java
===================================================================
--- trunk/src/jason/asSemantics/Agent.java 2008-05-25 11:33:07 UTC (rev 1305)
+++ trunk/src/jason/asSemantics/Agent.java 2008-05-25 13:45:14 UTC (rev 1306)
@@ -457,7 +457,7 @@
// if perception t is already in BB
if (l.equalsAsStructure(t) && l.negated() == t.negated()) {
wasPerceived = true;
- ip.remove(); // remove in percepts, since it already is in BB
+ // ip.remove(); // remove in percepts, since it already is in BB [can not be removed, since annots in this percepts should be added in BB/Jason team for AC, for example, use annots in perceptions]
break;
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|