|
From: <jom...@us...> - 2008-04-26 11:54:33
|
Revision: 1263
http://jason.svn.sourceforge.net/jason/?rev=1263&view=rev
Author: jomifred
Date: 2008-04-26 04:54:31 -0700 (Sat, 26 Apr 2008)
Log Message:
-----------
fix bug in drop_desire
Modified Paths:
--------------
trunk/applications/jason-moise/lib/moise.jar
trunk/applications/jason-moise/src/asl/moise-common.asl
trunk/applications/jason-moise/src/jmoise/OrgAgent.java
trunk/applications/jason-moise/src/jmoise/link.java
trunk/applications/jason-team/src/java/jia/random.java
trunk/demos/tell-rule/rules/get_rules.java
trunk/examples/gold-miners-II/jia/random.java
trunk/examples/iterated-prisoners-dilemma/my/random.java
trunk/src/jason/asSemantics/Agent.java
trunk/src/jason/asSemantics/IntendedMeans.java
trunk/src/jason/asSemantics/Intention.java
trunk/src/jason/asSemantics/Unifier.java
trunk/src/jason/asSyntax/Literal.java
trunk/src/jason/asSyntax/Structure.java
trunk/src/jason/stdlib/drop_desire.java
trunk/src/jason/stdlib/drop_intention.java
Modified: trunk/applications/jason-moise/lib/moise.jar
===================================================================
(Binary files differ)
Modified: trunk/applications/jason-moise/src/asl/moise-common.asl
===================================================================
--- trunk/applications/jason-moise/src/asl/moise-common.asl 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/applications/jason-moise/src/asl/moise-common.asl 2008-04-26 11:54:31 UTC (rev 1263)
@@ -48,5 +48,9 @@
+goal_state(Sch, G[root], achieved)
: true | .print("achieved ",G) // just to avoid G as singleton var warning
<- jmoise.remove_mission(Sch).
-
-+error(M)[source(orgManager)] <- .print("Error in organisational action: ",M); -error(M).
+
+// if some scheme is finished, drop all intentions related to it.
+-scheme(_Spec,Id)
+ <- .drop_desire(X[scheme(Id)]).
+
++error(M)[source(orgManager)] <- .print("Error in organisational action: ",M); -error(M)[source(orgManager)].
Modified: trunk/applications/jason-moise/src/jmoise/OrgAgent.java
===================================================================
--- trunk/applications/jason-moise/src/jmoise/OrgAgent.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/applications/jason-moise/src/jmoise/OrgAgent.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -13,6 +13,7 @@
import jason.asSyntax.Literal;
import jason.asSyntax.Pred;
import jason.asSyntax.PredicateIndicator;
+import jason.asSyntax.Structure;
import jason.asSyntax.Term;
import jason.asSyntax.Trigger;
import jason.asSyntax.UnnamedVar;
@@ -34,6 +35,8 @@
import moise.oe.OEAgent;
import moise.oe.Permission;
import moise.oe.SchemeInstance;
+import moise.os.fs.Goal;
+import moise.os.fs.Goal.GoalType;
/**
* Organisational Architecture, binds Jason agent to
@@ -187,9 +190,19 @@
alreadyGeneratedEvents.add(gi);
Literal l = Literal.parseLiteral(gi.getAsProlog());
- Literal giID = new Literal("scheme");
+ // add annot with scheme id
+ Structure giID = new Structure("scheme", 1);
giID.addTerm(new Atom(gi.getScheme().getId()));
l.addAnnot(giID);
+
+ // add annot with type of goal
+ Structure type = new Structure("type", 1);
+ type.addTerm(getGoalTypeAtom(gi.getSpec()));
+ l.addAnnot(type);
+
+ // add source annot
+ l.addAnnot(managerSource);
+
// "role(notimplemented),group(notimplemented)"+
// TODO: add annots: role, group (percorrer as missoes do ag que
// em GI, procurar os papel com obrigacao para essa missao)
@@ -198,6 +211,17 @@
}
}
}
+
+ private static final Atom aAchievementGoal = new Atom(GoalType.achievement.toString());
+ private static final Atom aMaintenanceGoal = new Atom(GoalType.maintenance.toString());
+
+ public static Atom getGoalTypeAtom(Goal g) {
+ switch (g.getType()) {
+ case achievement: return aAchievementGoal;
+ case maintenance: return aMaintenanceGoal;
+ }
+ return null;
+ }
void removeAchieveEvents(String schId) {
Iterator<GoalInstance> i = alreadyGeneratedEvents.iterator();
Modified: trunk/applications/jason-moise/src/jmoise/link.java
===================================================================
--- trunk/applications/jason-moise/src/jmoise/link.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/applications/jason-moise/src/jmoise/link.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -75,7 +75,7 @@
gr = rp.getGroup();
}
for (OEAgent ag: currentOE.getAgents( gr, link.getTarget())) { // all agents of the target role
- Unifier c = (Unifier)un.clone();
+ Unifier c = un.copy();
// unifies the type and target
if (c.unifies(args[0], new Atom(link.getTypeStr())) &&
Modified: trunk/applications/jason-team/src/java/jia/random.java
===================================================================
--- trunk/applications/jason-team/src/java/jia/random.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/applications/jason-team/src/java/jia/random.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -38,7 +38,7 @@
public Unifier next() {
i++;
- Unifier c = (Unifier)un.clone();
+ Unifier c = un.copy();
c.unifies(args[0], new NumberTermImpl(random.nextInt(max)));
return c;
}
Modified: trunk/demos/tell-rule/rules/get_rules.java
===================================================================
--- trunk/demos/tell-rule/rules/get_rules.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/demos/tell-rule/rules/get_rules.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -27,8 +27,7 @@
while (i.hasNext()) {
Literal l = i.next();
if (l.isRule()) {
- Unifier unc = (Unifier)un.clone();
- if (unc.unifies(pattern, l)) {
+ if (un.copy().unifies(pattern, l)) {
l = (Literal)l.clone();
l.delSources();
result.add(new StringTermImpl(l.toString()));
Modified: trunk/examples/gold-miners-II/jia/random.java
===================================================================
--- trunk/examples/gold-miners-II/jia/random.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/examples/gold-miners-II/jia/random.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -38,7 +38,7 @@
public Unifier next() {
i++;
- Unifier c = (Unifier)un.clone();
+ Unifier c = un.copy();
c.unifies(args[0], new NumberTermImpl(random.nextInt(max)));
return c;
}
Modified: trunk/examples/iterated-prisoners-dilemma/my/random.java
===================================================================
--- trunk/examples/iterated-prisoners-dilemma/my/random.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/examples/iterated-prisoners-dilemma/my/random.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -35,7 +35,7 @@
}
public Unifier next() {
- Unifier c = (Unifier)un.clone();
+ Unifier c = un.copy();
c.unifies(args[0], new NumberTermImpl(random.nextInt(max)));
return c;
}
Modified: trunk/src/jason/asSemantics/Agent.java
===================================================================
--- trunk/src/jason/asSemantics/Agent.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/src/jason/asSemantics/Agent.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -649,7 +649,7 @@
Literal inBB = il.next();
if (!inBB.isRule()) {
// need to clone unifier since it is changed in previous iteration
- Unifier unC = (un == null ? new Unifier() : (Unifier)un.clone());
+ Unifier unC = (un == null ? new Unifier() : un.copy());
if (unC.unifiesNoUndo(bel, inBB)) {
toDel.add(inBB);
}
Modified: trunk/src/jason/asSemantics/IntendedMeans.java
===================================================================
--- trunk/src/jason/asSemantics/IntendedMeans.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/src/jason/asSemantics/IntendedMeans.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -126,7 +126,7 @@
public Object clone() {
IntendedMeans c = new IntendedMeans();
- c.unif = (Unifier)this.unif.clone();
+ c.unif = this.unif.copy();
c.plan = (Plan)this.plan.clone();
c.trigger = (Trigger)this.trigger.clone();
return c;
Modified: trunk/src/jason/asSemantics/Intention.java
===================================================================
--- trunk/src/jason/asSemantics/Intention.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/src/jason/asSemantics/Intention.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -130,6 +130,7 @@
/** returns the IntendedMeans with TE = g, returns null if there isn't one */
public IntendedMeans getIM(Trigger g, Unifier u) {
for (IntendedMeans im : intendedMeans) {
+ //System.out.println(g + " = "+ im.getTrigger()+" = "+u.unifies(g, im.getTrigger()));
if (u.unifies(g, im.getTrigger())) {
return im;
}
Modified: trunk/src/jason/asSemantics/Unifier.java
===================================================================
--- trunk/src/jason/asSemantics/Unifier.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/src/jason/asSemantics/Unifier.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -348,6 +348,11 @@
}
}
+ /** same as clone but with typed return */
+ public Unifier copy() {
+ return (Unifier)clone();
+ }
+
public boolean equals(Object o) {
if (o == null) return false;
if (o == this) return true;
Modified: trunk/src/jason/asSyntax/Literal.java
===================================================================
--- trunk/src/jason/asSyntax/Literal.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/src/jason/asSyntax/Literal.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -166,7 +166,7 @@
Literal rhead = rule.headClone();
rhead.apply(ruleUn);
- Unifier unC = (Unifier) un.clone();
+ Unifier unC = un.copy();
if (unC.unifiesNoUndo(Literal.this, rhead)) {
current = unC;
return;
Modified: trunk/src/jason/asSyntax/Structure.java
===================================================================
--- trunk/src/jason/asSyntax/Structure.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/src/jason/asSyntax/Structure.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -76,8 +76,12 @@
setSrc(t);
}
- /** to be used by list term and atom to not create the array list for terms */
- protected Structure(String functor, int termsSize) {
+ /**
+ * Create a structure with a defined number of terms.
+ *
+ * It is used by list term and atom to not create the array list for terms.
+ */
+ public Structure(String functor, int termsSize) {
//this.functor = (functor == null ? null : functor.intern());
if (functor == null)
logger.log(Level.WARNING, "A structure functor should not be null!", new Exception());
Modified: trunk/src/jason/stdlib/drop_desire.java
===================================================================
--- trunk/src/jason/stdlib/drop_desire.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/src/jason/stdlib/drop_desire.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -94,7 +94,7 @@
t = (Trigger) t.clone();
t.apply(ei.getIntention().peek().getUnif());
}
- if (un.unifies(t, te)) {
+ if (un.copy().unifiesNoUndo(t, te)) {
// old implementation: t.setTrigType(Trigger.TEDel); // Just changing "+!g" to "-!g"
ie.remove();
}
Modified: trunk/src/jason/stdlib/drop_intention.java
===================================================================
--- trunk/src/jason/stdlib/drop_intention.java 2008-04-26 08:07:38 UTC (rev 1262)
+++ trunk/src/jason/stdlib/drop_intention.java 2008-04-26 11:54:31 UTC (rev 1263)
@@ -84,7 +84,7 @@
Trigger g = new Trigger(TEOperator.add, TEType.achieve, l);
for (Intention i: C.getIntentions()) {
- if (i.hasTrigger(g, un)) {
+ if (i.hasTrigger(g, un.copy())) {
C.removeIntention(i);
}
}
@@ -92,7 +92,7 @@
// intention may be suspended in E
for (Event e: C.getEvents()) {
Intention i = e.getIntention();
- if (i != null && i.hasTrigger(g, un)) {
+ if (i != null && i.hasTrigger(g, un.copy())) {
C.removeEvent(e);
}
}
@@ -100,14 +100,14 @@
// intention may be suspended in PA! (in the new semantics)
for (ActionExec a: C.getPendingActions().values()) {
Intention i = a.getIntention();
- if (i.hasTrigger(g, un)) {
+ if (i.hasTrigger(g, un.copy())) {
C.dropPendingAction(i);
}
}
// intention may be suspended in PI! (in the new semantics)
for (Intention i: C.getPendingIntentions().values()) {
- if (i != null && i.hasTrigger(g, un)) {
+ if (i != null && i.hasTrigger(g, un.copy())) {
C.dropPendingIntention(i);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|