package aima.core.environment.vacuum;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import aima.core.agent.Action;
import aima.core.agent.Percept;
import aima.core.agent.impl.AbstractAgent;
import aima.core.agent.impl.aprog.TableDrivenAgentProgram;
/**
* Artificial Intelligence A Modern Approach (3rd Edition): Figure 2.3, page 36.<br>
* <br>
* Figure 2.3 Partial tabulation of a simple agent function for the
* vacuum-cleaner world shown in Figure 2.2.
*
* @author Ciaran O'Reilly
*
*/
public class TableDrivenVacuumAgent extends AbstractAgent {
public TableDrivenVacuumAgent() {
super(new TableDrivenAgentProgram(getPerceptSequenceActions()));
}
//
// PRIVATE METHODS
//
private static Map<List<Percept>, Action> getPerceptSequenceActions() {
Map<List<Percept>, Action> perceptSequenceActions = new HashMap<List<Percept>, Action>();
// NOTE: While this particular table could be setup simply
// using a few loops, the intent is to show how quickly a table
// based approach grows and becomes unusable.
List<Percept> ps;
//
// Level 1: 4 states
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
//
// Level 2: 4x4 states
// 1
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
// 2
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
// 3
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
// 4
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
//
// Level 3: 4x4x4 states
// 1-1
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_RIGHT);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Dirty));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_SUCK);
ps = createPerceptSequence(new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_A,
VacuumEnvironment.LocationState.Clean), new VacuumEnvPercept(
VacuumEnvironment.LOCATION_B,
VacuumEnvironment.LocationState.Clean));
perceptSequenceActions.put(ps, VacuumEnvironment.ACTION_MOVE_LEFT);
ps = crea
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
跳棋 Minimax 搜索算法 (952个子文件)
Clause.class 19KB
FOLKnowledgeBase.class 18KB
Matrix.class 16KB
ProbabilityTable.class 15KB
FOLOTTERLikeTheoremProver.class 12KB
TableDrivenVacuumAgent.class 11KB
ImprovedBacktrackingStrategy.class 10KB
BidirectionalSearch.class 9KB
DPLL.class 9KB
FOLModelElimination.class 9KB
ProbUtil.class 8KB
NNDataSet.class 8KB
PLResolution.class 8KB
ClauseEqualityIdentityConstructor.class 8KB
Paramodulation.class 8KB
ForwardBackward.class 8KB
Util.class 8KB
StandardizeApart.class 7KB
FOLParser.class 7KB
EliminationAsk.class 7KB
IndexedFarParents.class 7KB
FOLModelElimination$AnswerHandler.class 7KB
AdaBoostLearner.class 7KB
IterativeDeepeningAlphaBetaSearch.class 7KB
Unifier.class 7KB
GeneticAlgorithm.class 7KB
FiniteBayesModel.class 7KB
CPT.class 7KB
NQueensBoard.class 7KB
ParticleFiltering.class 6KB
FOLTFMResolution.class 6KB
FOLBCAsk.class 6KB
Model.class 6KB
QLearningAgent.class 6KB
PassiveADPAgent.class 6KB
DataSet.class 6KB
FOLOTTERLikeTheoremProver$OTTERAnswerHandler.class 6KB
AbstractModulation$IdentifyCandidateMatchingTerm.class 6KB
VariableCollector.class 6KB
FOLTFMResolution$TFMAnswerHandler.class 6KB
EightPuzzleBoard.class 6KB
RemoveQuantifiers.class 6KB
HMM.class 5KB
Layer.class 5KB
ConnectFourState.class 5KB
DataSetFactory.class 5KB
StandardizeQuantiferVariables.class 5KB
AbstractEnvironment.class 5KB
HalmaGame.class 5KB
AbstractFOLVisitor.class 5KB
SimplifiedRoadMapOfAustralia.class 5KB
FullJointDistributionModel.class 5KB
Demodulation.class 5KB
FOLFCAsk.class 5KB
FeedForwardNeuralNetwork.class 5KB
DecisionTreeLearner.class 5KB
WalkSAT.class 5KB
RecursiveBestFirstSearch.class 5KB
DecisionTree.class 5KB
AbstractModulation$ReplaceMatchingTerm.class 5KB
LRTAStarAgent.class 5KB
QueueSearch.class 5KB
MapAgent.class 5KB
TicTacToeState.class 5KB
SubstVisitor.class 5KB
BackPropLearning.class 5KB
PEParser.class 5KB
PLFCEntails$HornClause.class 5KB
LikelihoodWeighting.class 5KB
OnlineDFSAgent.class 5KB
CSP.class 5KB
PLFCEntails.class 5KB
CellWorldEnvironment.class 5KB
FOLDomain.class 5KB
BayesNet.class 4KB
CNFConstructor.class 4KB
AC3Strategy.class 4KB
MinConflictsStrategy.class 4KB
FOLDataSetDomain.class 4KB
DynamicBayesNet.class 4KB
QuantifiedSentence.class 4KB
Assignment.class 4KB
DecisionListLearner.class 4KB
EnumerationAsk$ObservedEvidence.class 4KB
MixedRadixNumber.class 4KB
DepthLimitedSearch.class 4KB
CurrentBestLearner.class 4KB
NegationsIn.class 4KB
XYEnvironment.class 4KB
FOLKnowledgeBaseFactory.class 4KB
PolicyIteration.class 4KB
AbstractPLVisitor.class 4KB
FOLOTTERLikeTheoremProver$IndexedClauses.class 4KB
LUDecomposition.class 4KB
XYEnvironmentState.class 4KB
ExtendableMap.class 4KB
DataSetSpecification.class 4KB
SimulatedAnnealingSearch.class 4KB
ConnectFourAIPlayer.class 4KB
Interval.class 4KB
共 952 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
- zhp4754337522013-07-08代码挺好的,参考价值很大,学习了。谢谢!
colin1990324
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端vue框架,后端ssm+springboot框架,网站开发.zip
- 基于springboot的快速开发框架.zip
- 基于springboot的分布式权限管理系统,易读易懂、界面简洁美观.zip
- 基于SpringBoot Mybatis-Plus TypeScript的微服务多租户SaaS管理快速开发框架 .zip
- 论文复现:QA-GNN: Reasoning with Language Models and Knowledge
- ipp(intel-oneAPI)下载地址.txt
- 基于spring-boot dubbox搭建的java分布式系统的前端管理.zip
- VLC+Qt demoVLC+Qt demo
- 海彪&龙梅子 - 寂寞的人伤心的歌 (DJ版) [mqms2].ogg
- 530springboot + vue 旅游管理系统.zip(可运行源码+数据库文件+文档)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功