|
From: <jom...@us...> - 2008-04-27 18:05:27
|
Revision: 1273
http://jason.svn.sourceforge.net/jason/?rev=1273&view=rev
Author: jomifred
Date: 2008-04-27 11:05:25 -0700 (Sun, 27 Apr 2008)
Log Message:
-----------
jason team: add path_length.java
Modified Paths:
--------------
trunk/applications/jason-team/src/asl/exploration.asl
trunk/applications/jason-team/src/asl/herding.asl
Added Paths:
-----------
trunk/applications/jason-team/src/java/jia/path_length.java
Modified: trunk/applications/jason-team/src/asl/exploration.asl
===================================================================
--- trunk/applications/jason-team/src/asl/exploration.asl 2008-04-27 17:57:30 UTC (rev 1272)
+++ trunk/applications/jason-team/src/asl/exploration.asl 2008-04-27 18:05:25 UTC (rev 1273)
@@ -66,7 +66,7 @@
// find distance to even agents
.findall(ag_d(D,AgName),
- ally_pos(AgName,X,Y) & agent_id(AgName,Id) & Id mod 2 == 0 & jia.dist(MyX, MyY, X, Y, D),
+ ally_pos(AgName,X,Y) & agent_id(AgName,Id) & Id mod 2 == 0 & jia.path_length(MyX, MyY, X, Y, D),
LOdd);
.sort(LOdd, LSOdd);
Modified: trunk/applications/jason-team/src/asl/herding.asl
===================================================================
--- trunk/applications/jason-team/src/asl/herding.asl 2008-04-27 17:57:30 UTC (rev 1272)
+++ trunk/applications/jason-team/src/asl/herding.asl 2008-04-27 18:05:25 UTC (rev 1273)
@@ -36,7 +36,7 @@
// TODO: use min
+!closest([],S,S,P,D).
+!closest([pos(XH,YH)|T],Aux,S,pos(XP,YP),LD)
- : jia.dist(XH,YH,XP,YP,D) & D < LD // usar A*
+ : jia.path_length(XH,YH,XP,YP,D) & D < LD // usar A*
<- !closest(T,[pos(XH,YH)|Aux],S,pos(XP,YP),D).
+!closest([pos(XH,YH)|T],Aux,S,pos(XP,YP),LD)
<- .concat(Aux,[pos(XH,YH)],Aux2);
Added: trunk/applications/jason-team/src/java/jia/path_length.java
===================================================================
--- trunk/applications/jason-team/src/java/jia/path_length.java (rev 0)
+++ trunk/applications/jason-team/src/java/jia/path_length.java 2008-04-27 18:05:25 UTC (rev 1273)
@@ -0,0 +1,51 @@
+package jia;
+
+import jason.asSemantics.DefaultInternalAction;
+import jason.asSemantics.TransitionSystem;
+import jason.asSemantics.Unifier;
+import jason.asSyntax.NumberTerm;
+import jason.asSyntax.NumberTermImpl;
+import jason.asSyntax.Term;
+import jason.environment.grid.Location;
+
+import java.util.logging.Level;
+
+import arch.CowboyArch;
+import arch.LocalWorldModel;
+import busca.Nodo;
+
+public class path_length extends DefaultInternalAction {
+
+ @Override
+ public Object execute(TransitionSystem ts, Unifier un, Term[] terms) throws Exception {
+ try {
+ LocalWorldModel model = ((CowboyArch)ts.getUserAgArch()).getModel();
+
+ int iagx = (int)((NumberTerm)terms[0]).solve();
+ int iagy = (int)((NumberTerm)terms[1]).solve();
+ int itox = (int)((NumberTerm)terms[2]).solve();
+ int itoy = (int)((NumberTerm)terms[3]).solve();
+
+ if (model.inGrid(itox,itoy)) {
+
+ // destination should be a free place
+ while (!model.isFreeOfObstacle(itox,itoy) && itox > 0) itox--;
+ while (!model.isFreeOfObstacle(itox,itoy) && itox < model.getWidth()) itox++;
+
+ Location from = new Location(iagx, iagy);
+ Location to = new Location(itox, itoy);
+
+ Nodo solution = new Search(model, from, to, ts.getUserAgArch()).search();
+ if (solution != null) {
+ int length = solution.getProfundidade();
+ return un.unifies(terms[4], new NumberTermImpl(length));
+ } else {
+ ts.getLogger().info("No route from "+from+" to "+to+"!"+"\n"+model);
+ }
+ }
+ } catch (Throwable e) {
+ ts.getLogger().log(Level.SEVERE, "jia.path_length error: "+e, e);
+ }
+ return false;
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|