Skip to content

Commit 120357f

Browse files
committed
Code polished.
1 parent 5385764 commit 120357f

File tree

4 files changed

+27
-20
lines changed

4 files changed

+27
-20
lines changed

aima-core/src/main/java/aima/core/search/csp/BacktrackingStrategy.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package aima.core.search.csp;
22

3+
import aima.core.util.CancelableThread;
4+
35
/**
46
* Artificial Intelligence A Modern Approach (3rd Ed.): Figure 6.5, Page 215.<br>
57
* <br>
@@ -51,7 +53,7 @@ public Assignment solve(CSP csp) {
5153
private Assignment recursiveBackTrackingSearch(CSP csp,
5254
Assignment assignment) {
5355
Assignment result = null;
54-
if (assignment.isComplete(csp.getVariables())) {
56+
if (assignment.isComplete(csp.getVariables()) || CancelableThread.currIsCanceled()) {
5557
result = assignment;
5658
} else {
5759
Variable var = selectUnassignedVariable(assignment, csp);

aima-gui/src/main/java/aima/gui/fx/applications/search/CspNQueensApp.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import aima.core.search.csp.SolutionStrategy;
1010
import aima.core.search.csp.Variable;
1111
import aima.core.search.csp.examples.NQueensCSP;
12+
import aima.core.search.framework.Metrics;
1213
import aima.core.util.datastructure.XYLocation;
1314
import aima.gui.fx.framework.IntegrableApplication;
1415
import aima.gui.fx.framework.Parameter;
@@ -125,7 +126,7 @@ public void simulate() {
125126
NQueensBoard board = getBoard(solution);
126127
stateViewCtrl.update(board);
127128
}
128-
simPaneCtrl.setStatus(progressAnalyzer.getResults());
129+
simPaneCtrl.setStatus(progressAnalyzer.getResults().toString());
129130
}
130131

131132
private NQueensBoard getBoard(Assignment assignment) {
@@ -166,13 +167,13 @@ public void reset() {
166167
assignmentCount = 0;
167168
domainCount = 0;
168169
}
169-
170-
public String getResults() {
171-
StringBuffer result = new StringBuffer();
172-
result.append("assignment changes: " + assignmentCount);
170+
171+
public Metrics getResults() {
172+
Metrics result = new Metrics();
173+
result.set("assignmentChanges", assignmentCount);
173174
if (domainCount != 0)
174-
result.append(", domain changes: " + domainCount);
175-
return result.toString();
175+
result.set("domainChanges", domainCount);
176+
return result;
176177
}
177178
}
178179

aima-gui/src/main/java/aima/gui/fx/applications/search/CspNQueensDemo.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import aima.core.search.csp.MinConflictsStrategy;
99
import aima.core.search.csp.SolutionStrategy;
1010
import aima.core.search.csp.examples.NQueensCSP;
11+
import aima.core.search.framework.Metrics;
1112

1213
public class CspNQueensDemo {
1314
public static void main(String[] args) {
@@ -62,12 +63,12 @@ public void reset() {
6263
domainCount = 0;
6364
}
6465

65-
public String getResults() {
66-
StringBuffer result = new StringBuffer();
67-
result.append("assignment changes: " + assignmentCount);
66+
public Metrics getResults() {
67+
Metrics result = new Metrics();
68+
result.set("assignmentChanges", assignmentCount);
6869
if (domainCount != 0)
69-
result.append(", domain changes: " + domainCount);
70-
return result.toString();
70+
result.set("domainChanges", domainCount);
71+
return result;
7172
}
7273
}
7374
}

aima-gui/src/main/java/aima/gui/fx/applications/search/games/EightPuzzleApp.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import aima.core.search.framework.qsearch.GraphSearch;
1717
import aima.core.search.informed.AStarSearch;
1818
import aima.core.search.informed.GreedyBestFirstSearch;
19+
import aima.core.search.local.Scheduler;
1920
import aima.core.search.local.SimulatedAnnealingSearch;
2021
import aima.core.search.uninformed.BreadthFirstSearch;
2122
import aima.core.search.uninformed.DepthLimitedSearch;
@@ -64,16 +65,16 @@ public static void addSearchAlgorithm(String name, SearchForActions algo) {
6465
new BreadthFirstSearch(new BidirectionalSearch()));
6566
addSearchAlgorithm("Depth Limited Search (9)", new DepthLimitedSearch(9));
6667
addSearchAlgorithm("Iterative Deepening Search", new IterativeDeepeningSearch());
67-
addSearchAlgorithm("Greedy Best First Search (MisplacedTileHeursitic)",
68+
addSearchAlgorithm("Greedy Best First Search (MisplacedTileHeuristic)",
6869
new GreedyBestFirstSearch(new GraphSearch(), new MisplacedTilleHeuristicFunction()));
69-
addSearchAlgorithm("Greedy Best First Search (ManhattanHeursitic)",
70+
addSearchAlgorithm("Greedy Best First Search (ManhattanHeuristic)",
7071
new GreedyBestFirstSearch(new GraphSearch(), new ManhattanHeuristicFunction()));
71-
addSearchAlgorithm("AStar Search (MisplacedTileHeursitic)",
72+
addSearchAlgorithm("AStar Search (MisplacedTileHeuristic)",
7273
new AStarSearch(new GraphSearch(), new MisplacedTilleHeuristicFunction()));
73-
addSearchAlgorithm("AStar Search (ManhattanHeursitic)",
74+
addSearchAlgorithm("AStar Search (ManhattanHeuristic)",
7475
new AStarSearch(new GraphSearch(), new ManhattanHeuristicFunction()));
75-
addSearchAlgorithm("Simulated Annealing Search",
76-
new SimulatedAnnealingSearch(new ManhattanHeuristicFunction()));
76+
addSearchAlgorithm("Simulated Annealing Search (ManhattanHeuristic)",
77+
new SimulatedAnnealingSearch(new ManhattanHeuristicFunction(), new Scheduler(20, 0.05, 200)));
7778
}
7879

7980

@@ -178,7 +179,9 @@ else if (action == EightPuzzleBoard.LEFT)
178179
board.moveGapLeft();
179180
else if (action == EightPuzzleBoard.RIGHT)
180181
board.moveGapRight();
181-
updateStateView(null);
182+
Metrics m = new Metrics();
183+
m.set("manhattanHeuristic", new ManhattanHeuristicFunction().h(board));
184+
updateStateView(m);
182185
if (CancelableThread.currIsCanceled())
183186
break;
184187
simPaneCtrl.waitAfterStep();

0 commit comments

Comments
 (0)