Skip to content

Commit 0f117e6

Browse files
Ruediger.LundeRuediger.Lunde
authored andcommitted
In maps: Distance value type changed from Integer to Double
Reason: This interface can now also be applied to real map data such as Open Street Map data, where node positions are sometimes really near and sometimes very far away from each other.
1 parent d6d54a2 commit 0f117e6

14 files changed

+179
-179
lines changed

src/aima/gui/applications/search/map/AbstractMapAgentController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void runAgent() {
6868
Agent agent = (Agent) agents.get(0);
6969
String status = (String) agent
7070
.getAttribute(DynAttributeNames.AGENT_STATUS);
71-
Integer travelDistance = (Integer) agent
71+
Double travelDistance = (Double) agent
7272
.getAttribute(DynAttributeNames.AGENT_TRAVEL_DISTANCE);
7373
StringBuffer statusMsg = new StringBuffer("Task ");
7474
if (status != null)

src/aima/search/map/Map.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public interface Map {
2020
* Returns the travel distance between the two specified locations if
2121
* they are linked by a connection and null otherwise.
2222
*/
23-
public Integer getDistance(String fromLocation, String toLocation);
23+
public Double getDistance(String fromLocation, String toLocation);
2424

2525
/**
2626
* Returns an array with two integers describing the the position of the

src/aima/search/map/MapEnvironment.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ public MapEnvironment(Map aMap) {
2828
public void addAgent(Agent a, String startLocation) {
2929
super.addAgent(a);
3030
a.setAttribute(DynAttributeNames.AGENT_LOCATION, startLocation);
31-
a.setAttribute(DynAttributeNames.AGENT_TRAVEL_DISTANCE, 0);
31+
a.setAttribute(DynAttributeNames.AGENT_TRAVEL_DISTANCE, 0.0);
3232
}
3333

3434
@Override
3535
public void executeAction(Agent a, String act) {
3636
String currLoc = (String) a
3737
.getAttribute(DynAttributeNames.AGENT_LOCATION);
38-
Integer distance = aMap.getDistance(currLoc, act);
38+
Double distance = aMap.getDistance(currLoc, act);
3939
if (distance != null) {
40-
int currTD = (Integer) a
40+
double currTD = (Double) a
4141
.getAttribute(DynAttributeNames.AGENT_TRAVEL_DISTANCE);
4242
a.setAttribute(DynAttributeNames.AGENT_TRAVEL_DISTANCE, currTD
4343
+ distance);
@@ -52,7 +52,7 @@ public Percept getPerceptSeenBy(Agent anAgent) {
5252
List<Object> possibleActions = new ArrayList<Object>();
5353
for (String a : aMap.getLocationsLinkedTo(currLoc)) {
5454
possibleActions.add(a);
55-
possibleActions.add(new Integer(aMap.getDistance(currLoc, a)));
55+
possibleActions.add(new Double(aMap.getDistance(currLoc, a)));
5656
}
5757
return new Percept(DynAttributeNames.PERCEPT_IN, currLoc,
5858
DynAttributeNames.PERCEPT_POSSIBLE_ACTIONS, possibleActions);

src/aima/search/map/MapStepCostFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public Double calculateStepCost(Object fromCurrentState,
3838
.getAttribute(DynAttributeNames.PERCEPT_IN);
3939
}
4040

41-
Integer distance = map.getDistance(fromLoc, toLoc);
41+
Double distance = map.getDistance(fromLoc, toLoc);
4242

4343
if (null == distance || distance < 0) {
4444
return constantCost;

src/aima/search/map/SimplifiedRoadMapOfAustralia.java

Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -64,61 +64,61 @@ public static void initMap(ExtendableMap map) {
6464
map.clear();
6565
// Add links
6666
// Distances from http://maps.google.com
67-
map.addBidirectionalLink(PERTH, ALBANY, 417);
68-
map.addBidirectionalLink(PERTH, KALGOORLIE, 593);
69-
map.addBidirectionalLink(PERTH, GERALDTON, 424);
70-
map.addBidirectionalLink(PERTH, PORT_HEDLAND, 1637);
71-
map.addBidirectionalLink(ALBANY, ESPERANCE, 478);
72-
map.addBidirectionalLink(KALGOORLIE, NORSEMAN, 187);
73-
map.addBidirectionalLink(ESPERANCE, NORSEMAN, 204);
74-
map.addBidirectionalLink(NORSEMAN, PORT_AUGUSTA, 1668);
75-
map.addBidirectionalLink(GERALDTON, CAMARVON, 479);
76-
map.addBidirectionalLink(CAMARVON, PORT_HEDLAND, 872);
77-
map.addBidirectionalLink(PORT_HEDLAND, BROOME, 589);
78-
map.addBidirectionalLink(BROOME, HALLS_CREEK, 685);
79-
map.addBidirectionalLink(HALLS_CREEK, WYNDHAM, 370);
80-
map.addBidirectionalLink(HALLS_CREEK, KATHERINE, 874);
81-
map.addBidirectionalLink(WYNDHAM, KATHERINE, 613);
82-
map.addBidirectionalLink(KATHERINE, DARWIN, 317);
83-
map.addBidirectionalLink(KATHERINE, TENNANT_CREEK, 673);
84-
map.addBidirectionalLink(TENNANT_CREEK, MT_ISA, 663);
85-
map.addBidirectionalLink(TENNANT_CREEK, ALICE_SPRINGS, 508);
86-
map.addBidirectionalLink(ALICE_SPRINGS, COOBER_PEDY, 688);
87-
map.addBidirectionalLink(COOBER_PEDY, PORT_AUGUSTA, 539);
88-
map.addBidirectionalLink(MT_ISA, TOWNSVILLE, 918);
89-
map.addBidirectionalLink(TOWNSVILLE, CAIRNS, 346);
90-
map.addBidirectionalLink(MT_ISA, LONGREACH, 647);
91-
map.addBidirectionalLink(TOWNSVILLE, MACKAY, 388);
92-
map.addBidirectionalLink(MACKAY, ROCKHAMPTON, 336);
93-
map.addBidirectionalLink(LONGREACH, ROCKHAMPTON, 687);
94-
map.addBidirectionalLink(ROCKHAMPTON, BRISBANE, 616);
95-
map.addBidirectionalLink(LONGREACH, CHARLEVILLE, 515);
96-
map.addBidirectionalLink(CHARLEVILLE, BRISBANE, 744);
97-
map.addBidirectionalLink(CHARLEVILLE, NYNGAN, 657);
98-
map.addBidirectionalLink(NYNGAN, BROKEN_HILL, 588);
99-
map.addBidirectionalLink(BROKEN_HILL, PORT_AUGUSTA, 415);
100-
map.addBidirectionalLink(NYNGAN, DUBBO, 166);
101-
map.addBidirectionalLink(DUBBO, BRISBANE, 860);
102-
map.addBidirectionalLink(DUBBO, SYDNEY, 466);
103-
map.addBidirectionalLink(BRISBANE, TAMWORTH, 576);
104-
map.addBidirectionalLink(BRISBANE, PORT_MACQUARIE, 555);
105-
map.addBidirectionalLink(PORT_MACQUARIE, NEWCASTLE, 245);
106-
map.addBidirectionalLink(TAMWORTH, NEWCASTLE, 284);
107-
map.addBidirectionalLink(NEWCASTLE, SYDNEY, 159);
108-
map.addBidirectionalLink(SYDNEY, CANBERRA, 287);
109-
map.addBidirectionalLink(CANBERRA, WAGGA_WAGGA, 243);
110-
map.addBidirectionalLink(DUBBO, WAGGA_WAGGA, 400);
111-
map.addBidirectionalLink(SYDNEY, LAKES_ENTRANCE, 706);
112-
map.addBidirectionalLink(LAKES_ENTRANCE, MELBOURNE, 317);
113-
map.addBidirectionalLink(WAGGA_WAGGA, MELBOURNE, 476);
114-
map.addBidirectionalLink(WAGGA_WAGGA, HAY, 269);
115-
map.addBidirectionalLink(MELBOURNE, WARNAMBOOL, 269);
116-
map.addBidirectionalLink(WARNAMBOOL, MOUNT_GAMBIER, 185);
117-
map.addBidirectionalLink(MOUNT_GAMBIER, ADELAIDE, 449);
118-
map.addBidirectionalLink(HAY, ADELAIDE, 655);
119-
map.addBidirectionalLink(PORT_AUGUSTA, ADELAIDE, 306);
120-
map.addBidirectionalLink(MELBOURNE, ADELAIDE, 728);
121-
map.addBidirectionalLink(PORT_AUGUSTA, PORT_LINCOLN, 341);
67+
map.addBidirectionalLink(PERTH, ALBANY, 417.0);
68+
map.addBidirectionalLink(PERTH, KALGOORLIE, 593.0);
69+
map.addBidirectionalLink(PERTH, GERALDTON, 424.0);
70+
map.addBidirectionalLink(PERTH, PORT_HEDLAND, 1637.0);
71+
map.addBidirectionalLink(ALBANY, ESPERANCE, 478.0);
72+
map.addBidirectionalLink(KALGOORLIE, NORSEMAN, 187.0);
73+
map.addBidirectionalLink(ESPERANCE, NORSEMAN, 204.0);
74+
map.addBidirectionalLink(NORSEMAN, PORT_AUGUSTA, 1668.0);
75+
map.addBidirectionalLink(GERALDTON, CAMARVON, 479.0);
76+
map.addBidirectionalLink(CAMARVON, PORT_HEDLAND, 872.0);
77+
map.addBidirectionalLink(PORT_HEDLAND, BROOME, 589.0);
78+
map.addBidirectionalLink(BROOME, HALLS_CREEK, 685.0);
79+
map.addBidirectionalLink(HALLS_CREEK, WYNDHAM, 370.0);
80+
map.addBidirectionalLink(HALLS_CREEK, KATHERINE, 874.0);
81+
map.addBidirectionalLink(WYNDHAM, KATHERINE, 613.0);
82+
map.addBidirectionalLink(KATHERINE, DARWIN, 317.0);
83+
map.addBidirectionalLink(KATHERINE, TENNANT_CREEK, 673.0);
84+
map.addBidirectionalLink(TENNANT_CREEK, MT_ISA, 663.0);
85+
map.addBidirectionalLink(TENNANT_CREEK, ALICE_SPRINGS, 508.0);
86+
map.addBidirectionalLink(ALICE_SPRINGS, COOBER_PEDY, 688.0);
87+
map.addBidirectionalLink(COOBER_PEDY, PORT_AUGUSTA, 539.0);
88+
map.addBidirectionalLink(MT_ISA, TOWNSVILLE, 918.0);
89+
map.addBidirectionalLink(TOWNSVILLE, CAIRNS, 346.0);
90+
map.addBidirectionalLink(MT_ISA, LONGREACH, 647.0);
91+
map.addBidirectionalLink(TOWNSVILLE, MACKAY, 388.0);
92+
map.addBidirectionalLink(MACKAY, ROCKHAMPTON, 336.0);
93+
map.addBidirectionalLink(LONGREACH, ROCKHAMPTON, 687.0);
94+
map.addBidirectionalLink(ROCKHAMPTON, BRISBANE, 616.0);
95+
map.addBidirectionalLink(LONGREACH, CHARLEVILLE, 515.0);
96+
map.addBidirectionalLink(CHARLEVILLE, BRISBANE, 744.0);
97+
map.addBidirectionalLink(CHARLEVILLE, NYNGAN, 657.0);
98+
map.addBidirectionalLink(NYNGAN, BROKEN_HILL, 588.0);
99+
map.addBidirectionalLink(BROKEN_HILL, PORT_AUGUSTA, 415.0);
100+
map.addBidirectionalLink(NYNGAN, DUBBO, 166.0);
101+
map.addBidirectionalLink(DUBBO, BRISBANE, 860.0);
102+
map.addBidirectionalLink(DUBBO, SYDNEY, 466.0);
103+
map.addBidirectionalLink(BRISBANE, TAMWORTH, 576.0);
104+
map.addBidirectionalLink(BRISBANE, PORT_MACQUARIE, 555.0);
105+
map.addBidirectionalLink(PORT_MACQUARIE, NEWCASTLE, 245.0);
106+
map.addBidirectionalLink(TAMWORTH, NEWCASTLE, 284.0);
107+
map.addBidirectionalLink(NEWCASTLE, SYDNEY, 159.0);
108+
map.addBidirectionalLink(SYDNEY, CANBERRA, 287.0);
109+
map.addBidirectionalLink(CANBERRA, WAGGA_WAGGA, 243.0);
110+
map.addBidirectionalLink(DUBBO, WAGGA_WAGGA, 400.0);
111+
map.addBidirectionalLink(SYDNEY, LAKES_ENTRANCE, 706.0);
112+
map.addBidirectionalLink(LAKES_ENTRANCE, MELBOURNE, 317.0);
113+
map.addBidirectionalLink(WAGGA_WAGGA, MELBOURNE, 476.0);
114+
map.addBidirectionalLink(WAGGA_WAGGA, HAY, 269.0);
115+
map.addBidirectionalLink(MELBOURNE, WARNAMBOOL, 269.0);
116+
map.addBidirectionalLink(WARNAMBOOL, MOUNT_GAMBIER, 185.0);
117+
map.addBidirectionalLink(MOUNT_GAMBIER, ADELAIDE, 449.0);
118+
map.addBidirectionalLink(HAY, ADELAIDE, 655.0);
119+
map.addBidirectionalLink(PORT_AUGUSTA, ADELAIDE, 306.0);
120+
map.addBidirectionalLink(MELBOURNE, ADELAIDE, 728.0);
121+
map.addBidirectionalLink(PORT_AUGUSTA, PORT_LINCOLN, 341.0);
122122

123123
// Locations coordinates
124124
// Alice Springs is taken as central point with coordinates (0|0)

src/aima/search/map/SimplifiedRoadMapOfPartOfRomania.java

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -45,30 +45,30 @@ public SimplifiedRoadMapOfPartOfRomania() {
4545
public static void initMap(ExtendableMap map) {
4646
// mapOfRomania
4747
map.clear();
48-
map.addBidirectionalLink(ORADEA, ZERIND, 71);
49-
map.addBidirectionalLink(ORADEA, SIBIU, 151);
50-
map.addBidirectionalLink(ZERIND, ARAD, 75);
51-
map.addBidirectionalLink(ARAD, TIMISOARA, 118);
52-
map.addBidirectionalLink(ARAD, SIBIU, 140);
53-
map.addBidirectionalLink(TIMISOARA, LUGOJ, 111);
54-
map.addBidirectionalLink(LUGOJ, MEHADIA, 70);
55-
map.addBidirectionalLink(MEHADIA, DOBRETA, 75);
56-
map.addBidirectionalLink(DOBRETA, CRAIOVA, 120);
57-
map.addBidirectionalLink(SIBIU, FAGARAS, 99);
58-
map.addBidirectionalLink(SIBIU, RIMNICU_VILCEA, 80);
59-
map.addBidirectionalLink(RIMNICU_VILCEA, PITESTI, 97);
60-
map.addBidirectionalLink(RIMNICU_VILCEA, CRAIOVA, 146);
61-
map.addBidirectionalLink(CRAIOVA, PITESTI, 138);
62-
map.addBidirectionalLink(FAGARAS, BUCHAREST, 211);
63-
map.addBidirectionalLink(PITESTI, BUCHAREST, 101);
64-
map.addBidirectionalLink(GIURGIU, BUCHAREST, 90);
65-
map.addBidirectionalLink(BUCHAREST, URZICENI, 85);
66-
map.addBidirectionalLink(NEAMT, IASI, 87);
67-
map.addBidirectionalLink(URZICENI, VASLUI, 142);
68-
map.addBidirectionalLink(URZICENI, HIRSOVA, 98);
69-
map.addBidirectionalLink(IASI, VASLUI, 92);
48+
map.addBidirectionalLink(ORADEA, ZERIND, 71.0);
49+
map.addBidirectionalLink(ORADEA, SIBIU, 151.0);
50+
map.addBidirectionalLink(ZERIND, ARAD, 75.0);
51+
map.addBidirectionalLink(ARAD, TIMISOARA, 118.0);
52+
map.addBidirectionalLink(ARAD, SIBIU, 140.0);
53+
map.addBidirectionalLink(TIMISOARA, LUGOJ, 111.0);
54+
map.addBidirectionalLink(LUGOJ, MEHADIA, 70.0);
55+
map.addBidirectionalLink(MEHADIA, DOBRETA, 75.0);
56+
map.addBidirectionalLink(DOBRETA, CRAIOVA, 120.0);
57+
map.addBidirectionalLink(SIBIU, FAGARAS, 99.0);
58+
map.addBidirectionalLink(SIBIU, RIMNICU_VILCEA, 80.0);
59+
map.addBidirectionalLink(RIMNICU_VILCEA, PITESTI, 97.0);
60+
map.addBidirectionalLink(RIMNICU_VILCEA, CRAIOVA, 146.0);
61+
map.addBidirectionalLink(CRAIOVA, PITESTI, 138.0);
62+
map.addBidirectionalLink(FAGARAS, BUCHAREST, 211.0);
63+
map.addBidirectionalLink(PITESTI, BUCHAREST, 101.0);
64+
map.addBidirectionalLink(GIURGIU, BUCHAREST, 90.0);
65+
map.addBidirectionalLink(BUCHAREST, URZICENI, 85.0);
66+
map.addBidirectionalLink(NEAMT, IASI, 87.0);
67+
map.addBidirectionalLink(URZICENI, VASLUI, 142.0);
68+
map.addBidirectionalLink(URZICENI, HIRSOVA, 98.0);
69+
map.addBidirectionalLink(IASI, VASLUI, 92.0);
7070
// addBidirectionalLink(VASLUI - already all linked
71-
map.addBidirectionalLink(HIRSOVA, EFORIE, 86);
71+
map.addBidirectionalLink(HIRSOVA, EFORIE, 86.0);
7272
// addBidirectionalLink(EFORIE - already all linked
7373

7474
// distances and directions

src/aima/test/search/map/MapAgentTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ public class MapAgentTest extends TestCase {
2222
@Override
2323
public void setUp() {
2424
aMap = new ExtendableMap();
25-
aMap.addBidirectionalLink("A", "B", 5);
26-
aMap.addBidirectionalLink("A", "C", 6);
27-
aMap.addBidirectionalLink("B", "C", 4);
28-
aMap.addBidirectionalLink("C", "D", 7);
29-
aMap.addUnidirectionalLink("B", "E", 14);
25+
aMap.addBidirectionalLink("A", "B", 5.0);
26+
aMap.addBidirectionalLink("A", "C", 6.0);
27+
aMap.addBidirectionalLink("B", "C", 4.0);
28+
aMap.addBidirectionalLink("C", "D", 7.0);
29+
aMap.addUnidirectionalLink("B", "E", 14.0);
3030

3131
envChanges = new StringBuffer();
3232
}

src/aima/test/search/map/MapEnvironmentTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ public class MapEnvironmentTest extends TestCase {
2121
@Override
2222
public void setUp() {
2323
ExtendableMap aMap = new ExtendableMap();
24-
aMap.addBidirectionalLink("A", "B", 5);
25-
aMap.addBidirectionalLink("A", "C", 6);
26-
aMap.addBidirectionalLink("B", "C", 4);
27-
aMap.addBidirectionalLink("C", "D", 7);
28-
aMap.addUnidirectionalLink("B", "E", 14);
24+
aMap.addBidirectionalLink("A", "B", 5.0);
25+
aMap.addBidirectionalLink("A", "C", 6.0);
26+
aMap.addBidirectionalLink("B", "C", 4.0);
27+
aMap.addBidirectionalLink("C", "D", 7.0);
28+
aMap.addUnidirectionalLink("B", "E", 14.0);
2929

3030
me = new MapEnvironment(aMap);
3131
ma = new MapAgent(me, new UniformCostSearch(new GraphSearch()),

src/aima/test/search/map/MapStepCostFunctionTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ public class MapStepCostFunctionTest extends TestCase {
1515
@Override
1616
public void setUp() {
1717
ExtendableMap aMap = new ExtendableMap();
18-
aMap.addBidirectionalLink("A", "B", 5);
19-
aMap.addBidirectionalLink("A", "C", 6);
20-
aMap.addBidirectionalLink("B", "C", 4);
21-
aMap.addBidirectionalLink("C", "D", 7);
22-
aMap.addUnidirectionalLink("B", "E", 14);
18+
aMap.addBidirectionalLink("A", "B", 5.0);
19+
aMap.addBidirectionalLink("A", "C", 6.0);
20+
aMap.addBidirectionalLink("B", "C", 4.0);
21+
aMap.addBidirectionalLink("C", "D", 7.0);
22+
aMap.addUnidirectionalLink("B", "E", 14.0);
2323

2424
mscf = new MapStepCostFunction(aMap);
2525
}

src/aima/test/search/map/MapSuccessorFunctionTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ public class MapSuccessorFunctionTest extends TestCase {
1818
@Override
1919
public void setUp() {
2020
ExtendableMap aMap = new ExtendableMap();
21-
aMap.addBidirectionalLink("A", "B", 5);
22-
aMap.addBidirectionalLink("A", "C", 6);
23-
aMap.addBidirectionalLink("B", "C", 4);
24-
aMap.addBidirectionalLink("C", "D", 7);
25-
aMap.addUnidirectionalLink("B", "E", 14);
21+
aMap.addBidirectionalLink("A", "B", 5.0);
22+
aMap.addBidirectionalLink("A", "C", 6.0);
23+
aMap.addBidirectionalLink("B", "C", 4.0);
24+
aMap.addBidirectionalLink("C", "D", 7.0);
25+
aMap.addUnidirectionalLink("B", "E", 14.0);
2626

2727
msf = new MapSuccessorFunction(aMap);
2828
}

0 commit comments

Comments
 (0)