Skip to content

Commit 17bf826

Browse files
committed
Some more UML diagrams added.
1 parent 06f0355 commit 17bf826

File tree

7 files changed

+178
-178
lines changed

7 files changed

+178
-178
lines changed
Lines changed: 175 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -1,176 +1,176 @@
1-
package aima.core.agent.impl;
2-
3-
import java.util.ArrayList;
4-
import java.util.LinkedHashMap;
5-
import java.util.LinkedHashSet;
6-
import java.util.List;
7-
import java.util.Map;
8-
import java.util.Set;
9-
10-
import aima.core.agent.Action;
11-
import aima.core.agent.Agent;
12-
import aima.core.agent.Environment;
13-
import aima.core.agent.EnvironmentObject;
14-
import aima.core.agent.EnvironmentView;
15-
import aima.core.agent.EnvironmentViewNotifier;
16-
import aima.core.agent.Percept;
17-
18-
/**
19-
* @author Ravi Mohan
20-
* @author Ciaran O'Reilly
21-
*/
22-
public abstract class AbstractEnvironment implements Environment,
23-
EnvironmentViewNotifier {
24-
25-
// Note: Use LinkedHashSet's in order to ensure order is respected as
26-
// provide
27-
// access to these elements via List interface.
28-
protected Set<EnvironmentObject> envObjects = new LinkedHashSet<EnvironmentObject>();
29-
30-
protected Set<Agent> agents = new LinkedHashSet<Agent>();
31-
32-
protected Set<EnvironmentView> views = new LinkedHashSet<EnvironmentView>();
33-
34-
protected Map<Agent, Double> performanceMeasures = new LinkedHashMap<Agent, Double>();
35-
36-
//
37-
// PRUBLIC METHODS
38-
//
39-
40-
//
41-
// Methods to be implemented by subclasses.
42-
43-
public abstract void executeAction(Agent agent, Action action);
44-
45-
public abstract Percept getPerceptSeenBy(Agent anAgent);
46-
47-
/**
48-
* Method for implementing dynamic environments in which not all changes are
49-
* directly caused by agent action execution. The default implementation
50-
* does nothing.
51-
*/
52-
public void createExogenousChange() {
53-
}
54-
55-
//
56-
// START-Environment
57-
public List<Agent> getAgents() {
58-
// Return as a List but also ensures the caller cannot modify
59-
return new ArrayList<Agent>(agents);
60-
}
61-
62-
public void addAgent(Agent a) {
63-
addEnvironmentObject(a);
64-
}
65-
66-
public void removeAgent(Agent a) {
67-
removeEnvironmentObject(a);
68-
}
69-
70-
public List<EnvironmentObject> getEnvironmentObjects() {
71-
// Return as a List but also ensures the caller cannot modify
72-
return new ArrayList<EnvironmentObject>(envObjects);
73-
}
74-
75-
public void addEnvironmentObject(EnvironmentObject eo) {
76-
envObjects.add(eo);
77-
if (eo instanceof Agent) {
78-
Agent a = (Agent) eo;
79-
if (!agents.contains(a)) {
80-
agents.add(a);
81-
this.updateEnvironmentViewsAgentAdded(a);
82-
}
83-
}
84-
}
85-
86-
public void removeEnvironmentObject(EnvironmentObject eo) {
87-
envObjects.remove(eo);
88-
agents.remove(eo);
89-
}
90-
91-
/**
92-
* Central template method for controlling agent simulation. The concrete
93-
* behavior is determined by the primitive operations
94-
* {@link #getPerceptSeenBy(Agent)}, {@link #executeAction(Agent, Action)},
95-
* and {@link #createExogenousChange()}.
96-
*/
97-
public void step() {
98-
for (Agent agent : agents) {
99-
if (agent.isAlive()) {
100-
Action anAction = agent.execute(getPerceptSeenBy(agent));
101-
executeAction(agent, anAction);
102-
updateEnvironmentViewsAgentActed(agent, anAction);
103-
}
104-
}
105-
createExogenousChange();
106-
}
107-
108-
public void step(int n) {
109-
for (int i = 0; i < n; i++) {
110-
step();
111-
}
112-
}
113-
114-
public void stepUntilDone() {
115-
while (!isDone()) {
116-
step();
117-
}
118-
}
119-
120-
public boolean isDone() {
121-
for (Agent agent : agents) {
122-
if (agent.isAlive()) {
123-
return false;
124-
}
125-
}
126-
return true;
127-
}
128-
129-
public double getPerformanceMeasure(Agent forAgent) {
130-
Double pm = performanceMeasures.get(forAgent);
131-
if (null == pm) {
132-
pm = new Double(0);
133-
performanceMeasures.put(forAgent, pm);
134-
}
135-
136-
return pm;
137-
}
138-
139-
public void addEnvironmentView(EnvironmentView ev) {
140-
views.add(ev);
141-
}
142-
143-
public void removeEnvironmentView(EnvironmentView ev) {
144-
views.remove(ev);
145-
}
146-
147-
public void notifyViews(String msg) {
148-
for (EnvironmentView ev : views) {
149-
ev.notify(msg);
150-
}
151-
}
152-
153-
// END-Environment
154-
//
155-
156-
//
157-
// PROTECTED METHODS
158-
//
159-
160-
protected void updatePerformanceMeasure(Agent forAgent, double addTo) {
161-
performanceMeasures.put(forAgent, getPerformanceMeasure(forAgent)
162-
+ addTo);
163-
}
164-
165-
protected void updateEnvironmentViewsAgentAdded(Agent agent) {
166-
for (EnvironmentView view : views) {
167-
view.agentAdded(agent, this);
168-
}
169-
}
170-
171-
protected void updateEnvironmentViewsAgentActed(Agent agent, Action action) {
172-
for (EnvironmentView view : views) {
173-
view.agentActed(agent, action, this);
174-
}
175-
}
1+
package aima.core.agent.impl;
2+
3+
import java.util.ArrayList;
4+
import java.util.LinkedHashMap;
5+
import java.util.LinkedHashSet;
6+
import java.util.List;
7+
import java.util.Map;
8+
import java.util.Set;
9+
10+
import aima.core.agent.Action;
11+
import aima.core.agent.Agent;
12+
import aima.core.agent.Environment;
13+
import aima.core.agent.EnvironmentObject;
14+
import aima.core.agent.EnvironmentView;
15+
import aima.core.agent.EnvironmentViewNotifier;
16+
import aima.core.agent.Percept;
17+
18+
/**
19+
* @author Ravi Mohan
20+
* @author Ciaran O'Reilly
21+
*/
22+
public abstract class AbstractEnvironment implements Environment,
23+
EnvironmentViewNotifier {
24+
25+
// Note: Use LinkedHashSet's in order to ensure order is respected as
26+
// provide
27+
// access to these elements via List interface.
28+
protected Set<EnvironmentObject> envObjects = new LinkedHashSet<EnvironmentObject>();
29+
30+
protected Set<Agent> agents = new LinkedHashSet<Agent>();
31+
32+
protected Set<EnvironmentView> views = new LinkedHashSet<EnvironmentView>();
33+
34+
protected Map<Agent, Double> performanceMeasures = new LinkedHashMap<Agent, Double>();
35+
36+
//
37+
// PRUBLIC METHODS
38+
//
39+
40+
//
41+
// Methods to be implemented by subclasses.
42+
43+
public abstract void executeAction(Agent agent, Action action);
44+
45+
public abstract Percept getPerceptSeenBy(Agent anAgent);
46+
47+
/**
48+
* Method for implementing dynamic environments in which not all changes are
49+
* directly caused by agent action execution. The default implementation
50+
* does nothing.
51+
*/
52+
public void createExogenousChange() {
53+
}
54+
55+
//
56+
// START-Environment
57+
public List<Agent> getAgents() {
58+
// Return as a List but also ensures the caller cannot modify
59+
return new ArrayList<Agent>(agents);
60+
}
61+
62+
public void addAgent(Agent a) {
63+
addEnvironmentObject(a);
64+
}
65+
66+
public void removeAgent(Agent a) {
67+
removeEnvironmentObject(a);
68+
}
69+
70+
public List<EnvironmentObject> getEnvironmentObjects() {
71+
// Return as a List but also ensures the caller cannot modify
72+
return new ArrayList<EnvironmentObject>(envObjects);
73+
}
74+
75+
public void addEnvironmentObject(EnvironmentObject eo) {
76+
envObjects.add(eo);
77+
if (eo instanceof Agent) {
78+
Agent a = (Agent) eo;
79+
if (!agents.contains(a)) {
80+
agents.add(a);
81+
this.notifyEnvironmentViews(a);
82+
}
83+
}
84+
}
85+
86+
public void removeEnvironmentObject(EnvironmentObject eo) {
87+
envObjects.remove(eo);
88+
agents.remove(eo);
89+
}
90+
91+
/**
92+
* Central template method for controlling agent simulation. The concrete
93+
* behavior is determined by the primitive operations
94+
* {@link #getPerceptSeenBy(Agent)}, {@link #executeAction(Agent, Action)},
95+
* and {@link #createExogenousChange()}.
96+
*/
97+
public void step() {
98+
for (Agent agent : agents) {
99+
if (agent.isAlive()) {
100+
Action anAction = agent.execute(getPerceptSeenBy(agent));
101+
executeAction(agent, anAction);
102+
notifyEnvironmentViews(agent, anAction);
103+
}
104+
}
105+
createExogenousChange();
106+
}
107+
108+
public void step(int n) {
109+
for (int i = 0; i < n; i++) {
110+
step();
111+
}
112+
}
113+
114+
public void stepUntilDone() {
115+
while (!isDone()) {
116+
step();
117+
}
118+
}
119+
120+
public boolean isDone() {
121+
for (Agent agent : agents) {
122+
if (agent.isAlive()) {
123+
return false;
124+
}
125+
}
126+
return true;
127+
}
128+
129+
public double getPerformanceMeasure(Agent forAgent) {
130+
Double pm = performanceMeasures.get(forAgent);
131+
if (null == pm) {
132+
pm = new Double(0);
133+
performanceMeasures.put(forAgent, pm);
134+
}
135+
136+
return pm;
137+
}
138+
139+
public void addEnvironmentView(EnvironmentView ev) {
140+
views.add(ev);
141+
}
142+
143+
public void removeEnvironmentView(EnvironmentView ev) {
144+
views.remove(ev);
145+
}
146+
147+
public void notifyViews(String msg) {
148+
for (EnvironmentView ev : views) {
149+
ev.notify(msg);
150+
}
151+
}
152+
153+
// END-Environment
154+
//
155+
156+
//
157+
// PROTECTED METHODS
158+
//
159+
160+
protected void updatePerformanceMeasure(Agent forAgent, double addTo) {
161+
performanceMeasures.put(forAgent, getPerformanceMeasure(forAgent)
162+
+ addTo);
163+
}
164+
165+
protected void notifyEnvironmentViews(Agent agent) {
166+
for (EnvironmentView view : views) {
167+
view.agentAdded(agent, this);
168+
}
169+
}
170+
171+
protected void notifyEnvironmentViews(Agent agent, Action action) {
172+
for (EnvironmentView view : views) {
173+
view.agentActed(agent, action, this);
174+
}
175+
}
176176
}
6.07 KB
Loading
48.4 KB
Loading
61.8 KB
Loading

aima-gui/src/main/java/aima/gui/swing/applications/search/csp/CSPEnvironment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void executeAction(Agent agent, Action action) {
3939
if (a.updateAssignment())
4040
assignment = a.getAssignment();
4141
if (agent == null)
42-
updateEnvironmentViewsAgentActed(agent, action);
42+
notifyEnvironmentViews(agent, action);
4343
}
4444
}
4545

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ else if (action == EightPuzzleBoard.LEFT)
372372
else if (action == EightPuzzleBoard.RIGHT)
373373
board.moveGapRight();
374374
if (agent == null)
375-
updateEnvironmentViewsAgentActed(agent, action);
375+
notifyEnvironmentViews(agent, action);
376376
}
377377

378378
/** Returns null. */

aima-gui/src/main/java/aima/gui/swing/applications/search/games/NQueensApp.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ else if (act.getName() == QueenAction.REMOVE_QUEEN)
383383
else if (act.getName() == QueenAction.MOVE_QUEEN)
384384
board.moveQueenTo(loc);
385385
if (agent == null)
386-
updateEnvironmentViewsAgentActed(agent, action);
386+
notifyEnvironmentViews(agent, action);
387387
}
388388
}
389389

0 commit comments

Comments
 (0)