## 实验题目
本次实验有2个部分,分别是Search和Multiagent。具体而言,Search的目标是吃豆人仅仅是寻找食物;Multiagent的目标是吃完所有食物,同时避开鬼。抽象而言,Search实现的静态查找算法,Multiagent的问题是在有对手的情况下做出下一步决策使自己的利益最大化。
Search部分需要你实现BFS算法和A*算法。Multiagent部分需要你实现minimax算法和alpha-beta剪枝。**你只需要修改并向助教提交myImpl.py文件**,阅读其他代码对完成实验没有任何意义。请不要在myImpl.py文件中import其他模块,否则会造成测试失败。实验代码量大约为100行。
实验需要使用Python 3.6版本,建议使用anaconda来管理Python环境。本实验推荐使用Linux,测试只需要在命令行中运行 ./test.sh。正确代码应该PASS所有的测试。如果你实现的代码有误,请善用报错信息和print()函数。
![1](pic/test.png)
如果你想更好的了解游戏规则,体验一下实验的乐趣,可以先完一局吃豆人。在命令行中输入以下命令即可。
```bash
cd search
python pacman.py
```
![2](pic/play.png)
附:Conda 环境创建
```bash
conda create --name ustc-ai python=3.6
source activate ustc-ai
```
## Search
你需要实现BFS算法和A*算法。你只需要**填写myBreadthFirstSearch和myAStarSearch两个函数**。函数的返回值为从初始状态到目标状态所经过的所有状态的列表。实现时请删去util.raiseNotDefined()。
```python
def myBreadthFirstSearch(problem):
# YOUR CODE HERE
util.raiseNotDefined()
return []
def myAStarSearch(problem, heuristic):
# YOUR CODE HERE
util.raiseNotDefined()
return []
```
函数的参数problem可以调用3个函数。
函数getStartState可以获得该problem的初始状态。
```Python
start_state = problem.getStartState()
```
函数isGoalState可以判断当前状态state是否为目标状态。
```Python
problem.isGoalState(state) == True
```
函数getChildren可以获得state后可以到达的一系列状态。返回值是由二元组(next_state, step_cost)组成的列表。next_state是下一状态,step_cost是从state到next_state需要的代价。
```
children = problem.getChildren(state)
```
参数heuristic本身就是一个函数,可以获得当前状态到目标状态的启发式估计值。
```python
h_n = heuristic(state)
```
我们已经给出了DFS函数的参考代码,请仔细阅读并参考。
```Python
def myDepthFirstSearch(problem):
```
你可能还需要使用我们提供的栈、队列和优先队列这些数据结构。
大家在学习数据结构时可能都已经熟悉了栈和队列。它们的特点可以分别简单概括为先进后出和先进先出。
```python
stack = util.Stack()
stack.push('eat')
stack.push('study')
stack.push('sleep')
stack.pop() == 'sleep'
queue = util.Queue()
queue.push('eat')
queue.push('study')
queue.push('sleep')
queue.pop() == 'eat'
```
优先队列的使用则需要赋予一个表示优先性的值,值越小就会越先出队。
```python
pq = util.PriorityQueue()
pq.update('eat', 2)
pq.update('study', 1)
pq.update('sleep', 3)
pq.pop() == 'study'
```
3个数据结构都有isEmpty函数来判断数据结构内部是否有数据。
最终测试时,会动画显示3种搜索方法选择的路径以及搜索过的状态(红色表示),请比较一下三者的区别。
<img src="pic/search.png" alt="3" style="zoom:67%;" />
## MultiAgent
Multiagent的问题是在有对手的情况下做出下一步决策使自己的利益最大化。游戏中目标agent为吃豆人,其他agent为鬼。
我们已经实现了一个只基于当前状态做出反应的吃豆人,你可以输入以下命令查看它的表现。目录multiagent/layouts中有不同的游戏场景,你可以更改-l后的选项。你可以更改-p后的选项为MinimaxAgent或AlphaBetaAgent来测试你实现的算法。
```bash
cd multiagent
python pacman.py -p ReflexAgent -l originalClassic --frameTime 0
```
<img src="pic/multiagent.png" alt="4" style="zoom:50%;" />
你需要实现minimax算法和alpha-beta剪枝则会提前预估几步,在最坏的打算下最优化自己的效用。你只需要**填写MyMinimaxAgent和MyAlphaBetaAgent两个类**。其中函数getNextState会被外部程序调用,获得当前状态下最优的下一个状态。你可能需要添加一些辅助函数来进行递归调用。
参数state可以调用4个函数。
函数isTerminate将返回当前状态state是否已经停止。停止状态意味着不会有下一个状态,游戏中指已经赢了或输了。
```python
state.isTerminated() == True
```
函数isMe将返回是否为目标agent在进行操作。在游戏中,True表示轮到吃豆人采取移动操作,False表示轮到某个鬼在采取移动操作。你可以用来判断当前应该最大化还是最小化效用。
```python
state.isMe() == True
```
函数getChildren将返回当前状态state接下来所有可能的状态。请使用for来遍历。注意:alpha-beta剪枝的目的是缩小搜索空间,如果在遍历getChildren()中,MyAlphaBetaAgent发现可以剪枝,请停止遍历。
```python
for child in state.getChildren():
```
函数evaluateScore将返回当前状态对于目标agent的效用。
```
score = state.evaluateScore()
```
值得注意的是算法搜索的深度depth,它指的是每个agent所走的步数。例如depth=2,有1个pacman和2个ghost,则从搜索树的最顶层到最底层应该经过pacman->ghost1->ghost2->pacman->ghost1->ghost2,操作应该为max->min->min->max->min->min。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
人工智能(Artificial Intelligence,简称AI)是一种前沿的计算机科学技术,其核心目标是通过模拟、延伸和拓展人类智能来构建智能机器与系统。它融合了计算机科学、数学、统计学、心理学、神经科学等多个学科的知识,并利用深度学习、机器学习等算法,使计算机能够从数据中学习、理解和推断。 在实际应用中,人工智能体现在诸多领域:如机器人技术,其中机器人不仅能执行预设任务,还能通过感知环境自主决策;语言识别和语音助手技术,如Siri或小爱同学,它们能理解并回应用户的语音指令;图像识别技术,在安防监控、自动驾驶等领域实现对视觉信息的精准分析;自然语言处理技术,应用于搜索引擎、智能客服及社交媒体的情感分析等。 此外,专家系统能够在特定领域提供专业级建议,物联网中的智能设备借助AI优化资源分配与操作效率。人工智能的发展不断改变着我们的生活方式,从工作场景到日常生活,智能化正以前所未有的方式提升生产力、便捷性和生活质量,同时也在挑战伦理边界与社会规则,促使我们重新审视人与技术的关系及其长远影响。
资源推荐
资源详情
资源评论
收起资源包目录
2021 年春季学期人工智能实验.zip (458个子文件)
CONFIG 62B
CONFIG 60B
CONFIG 59B
CONFIG 47B
CONFIG 47B
CONFIG 47B
CONFIG 46B
CONFIG 46B
CONFIG 46B
CONFIG 46B
CONFIG 46B
CONFIG 45B
CONFIG 45B
CONFIG 29B
CONFIG 24B
bigCorners.lay 1KB
bigMaze.lay 1KB
openMaze.lay 873B
originalClassic.lay 783B
originalClassic.lay 783B
mediumScaryMaze.lay 702B
mediumMaze.lay 666B
mediumDottedMaze.lay 666B
bigSearch.lay 480B
mediumCorners.lay 433B
trickyClassic.lay 273B
trickyClassic.lay 273B
mediumSearch.lay 256B
bigSafeSearch.lay 256B
contoursMaze.lay 241B
openClassic.lay 234B
openClassic.lay 234B
mediumClassic.lay 231B
mediumClassic.lay 231B
smallMaze.lay 229B
boxSearch.lay 210B
mediumSafeSearch.lay 192B
contestClassic.lay 189B
contestClassic.lay 189B
smallSafeSearch.lay 150B
powerClassic.lay 147B
trickySearch.lay 147B
openSearch.lay 147B
oddSearch.lay 147B
smallClassic.lay 147B
powerClassic.lay 147B
smallClassic.lay 147B
capsuleClassic.lay 141B
capsuleClassic.lay 141B
smallSearch.lay 105B
tinyCorners.lay 72B
tinySearch.lay 70B
tinySafeSearch.lay 70B
testClassic.lay 60B
testClassic.lay 60B
tinyMaze.lay 56B
greedySearch.lay 55B
minimaxClassic.lay 54B
minimaxClassic.lay 54B
trappedClassic.lay 45B
trappedClassic.lay 45B
testMaze.lay 33B
testSearch.lay 30B
readme.md 6KB
README.md 57B
PB18111707_吕瑞_LAB2.pdf 1.14MB
report.pdf 445KB
test.png 188KB
multiagent.png 38KB
search.PNG 31KB
play.png 19KB
searchTestClasses.py 32KB
graphicsDisplay.py 29KB
graphicsDisplay.py 27KB
util.py 27KB
pacman.py 26KB
pacman.py 26KB
game.py 26KB
util.py 25KB
game.py 25KB
multiagentTestClasses.py 24KB
searchAgents.py 23KB
autograder.py 14KB
autograder.py 14KB
graphicsUtils.py 12KB
graphicsUtils.py 12KB
grading.py 11KB
grading.py 10KB
eightpuzzle.py 9KB
submission_autograder.py 9KB
submission_autograder.py 9KB
multiAgents.py 8KB
myImpl.py 7KB
MLP_manual.py 7KB
testClasses.py 7KB
testClasses.py 7KB
MLP_Mixer.py 7KB
layout.py 6KB
layout.py 6KB
SVM.py 5KB
共 458 条
- 1
- 2
- 3
- 4
- 5
资源评论
JJJ69
- 粉丝: 6216
- 资源: 5783
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STC15单片机串口2使用程序例子
- 读取日志的excel生成周报 用python3开发weekplan-master.zip
- python 读取excel数据导入dbimport-data-master.zip
- K折交叉验证BP神经网络,多输入多输出BP神经网络(代码完整,数据齐全)
- B07训练原图.zip
- python-对Excel数据处理做可视化分析.zip
- 人工智能大作业-无人机图像目标检测的python源代码+文档说明.zip
- 基于GoogLeNet实现Cifar-10图像分类项目python源码(高分项目).zip
- 数据库 sql 面试题目及答案解析.docx
- 汽车常见 10 种传感器故障后的表现与解决措施.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功