分享
强化学习:COMP9814AssPartB代码如何测试?
输入“/”快速插入内容
强化学习:COMP9814AssPartB代码如何测试?
首先让我们来回顾一下文档对PartB的要求:
PART-B(16分)
在这部分内容中,你需要实现一个智能体,用于玩一款简单的基于文本的冒险游戏。游戏中,智能体被困在一小群岛屿上,岛上有一些树木和古代建筑的遗迹。智能体需要在一个矩形环境中四处移动,收集工具,并避开(或移除)沿途的障碍物。环境中的障碍物和工具表示如下:
障碍物
含义
工具
含义
T
树木
a
斧头
-
门
k
钥匙
\*
墙壁
d
炸药
˜
水
$
宝藏
智能体将由字符^、v、< 或 >中的一个表示,具体取决于它所指的方向。智能体能够执行以下指令:
•
L:向左转
•
R:向右转
•
F:(尝试)向前移动
•
U:(尝试)用钥匙打开门
•
C:(尝试)用斧头砍树
•
B:(尝试)用炸药炸毁墙壁、树木或门
当执行L或R指令时,智能体保持在同一位置,仅改变方向。当执行F指令时,智能体试图朝着它所指的方向前进一格。如果智能体正前方有墙壁或树木,F指令将失败(不起作用)。
当智能体移动到放置工具的位置时,它会自动捡起该工具。如果智能体携带了合适的工具,可以使用C、U或B指令移除其正前方的障碍物。持有斧头时,可以使用C(砍伐)指令移除树木;持有钥匙时,可以使用U(解锁)指令移除门;持有炸药时,可以使用B(炸毁)指令移除墙壁、树木或门。
每当砍倒一棵树,这棵树会自动变成一个木筏,智能体可以用它作为工具在水面上移动。如果智能体没有携带木筏而向前移动进入水中,它将会溺水。如果智能体携带了木筏,就可以安全地进入水中,并使用木筏在水面上继续移动。当智能体回到陆地时,它使用的木筏会下沉,无法再次使用。智能体需要砍倒另一棵树来获取新的木筏。
如果智能体试图移出环境边界,它将死亡。要赢得游戏,智能体必须捡起宝藏,然后返回其初始位置。
作为单个进程运行
从以下目录下载src.zip文件:
https://www.cse.unsw.edu.au/~cs3411/25T1/hw1raft
(也可从此处下载)。将压缩包复制到你自己的文件空间中,解压,然后输入:
代码块
Bash
javac *.java
cd src
java Raft -i s0.in
之后你应该会看到类似这样的内容:
代码块
Plain Text
~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~
~~ d * T a ~~
~~ *-* *** ~~
~~**** v ****~~
~~TTT** **TTT~~
~~ $ ** k ** ~~
~~ ** ** ~~
~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~
代码块
Plain Text
NN
Enter Action(s):
这允许你通过在键盘上输入命令(然后按<Enter>键)来扮演智能体的角色。注意:
•
一把钥匙可以打开任何门;一旦门被打开,它就相当于从环境中移除了,再也无法“关闭”。
•
斧头或钥匙可以多次使用,但每根炸药只能使用一次。
•
如果没有携带合适的工具,或者智能体正前方的位置没有合适的障碍物,C、U或B指令将失败(不起作用)。
以网络模式运行
按照以下说明了解游戏在网络模式下的运行方式:
1.
打开两个窗口,并在两个窗口中都进入src目录。
2.
选择一个介于1025和65535之间的端口号——假设你选择31415。
3.
在一个窗口中输入:java Raft -p 31415 -i s0.in
4.
在另一个窗口中输入:java Agent -p 31415