From 592db0c6f06dd00164d009b9395ebe14b2605c94 Mon Sep 17 00:00:00 2001 From: JohnJim0816 Date: Tue, 22 Sep 2020 23:38:44 +0800 Subject: [PATCH 1/2] add project 1 --- docs/chapter3/img/image-20200901202636603.png | Bin 0 -> 32780 bytes docs/chapter3/porject1.md | 42 ++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 docs/chapter3/img/image-20200901202636603.png create mode 100644 docs/chapter3/porject1.md diff --git a/docs/chapter3/img/image-20200901202636603.png b/docs/chapter3/img/image-20200901202636603.png new file mode 100644 index 0000000000000000000000000000000000000000..3f7dff622df404928dbe76c8eb01f7f9f97c1181 GIT binary patch literal 32780 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 literal 0 HcmV?d00001 diff --git a/docs/chapter3/porject1.md b/docs/chapter3/porject1.md new file mode 100644 index 0000000..3658564 --- /dev/null +++ b/docs/chapter3/porject1.md @@ -0,0 +1,42 @@ +# 贪吃蛇 + +贪吃蛇是一个起源于1976年的街机游戏 Blockade,玩家控制蛇上下左右吃到食物并将身体增长,吃到食物后移动速度逐渐加快,直到碰到墙体或者蛇的身体算游戏结束。 + +![image-20200901202636603](img/image-20200901202636603.png) + +如图,本次任务整个游戏版面大小为560X560,绿色部分就是我们的智能体贪吃蛇,红色方块就是食物,墙位于四周,一旦食物被吃掉,会在下一个随机位置刷出新的食物。蛇的每一节以及食物的大小为40X40,除开墙体(厚度也为40),蛇可以活动的范围为480X480,也就是12X12的栅格。环境的状态等信息如下: + +* state:为一个元组,包含(adjoining_wall_x, adjoining_wall_y, food_dir_x, food_dir_y, adjoining_body_top, adjoining_body_bottom, adjoining_body_left, adjoining_body_right). + + * [adjoining_wall_x, adjoining_wall_y]:提供蛇头是否与墙体相邻的信息,具体包含9个状态 + + adjoining_wall_x:0表示x轴方向蛇头无墙体相邻,1表示有墙在蛇头左边,2表示有墙在右边adjoining_wall_y:0表示y轴方向蛇头无墙体相邻,1表示有墙在蛇头上边,2表示有墙在下边 + + 注意[0,0]也包括蛇跑出480X480范围的情况 + + * [food_dir_x, food_dir_y]:表示食物与蛇头的位置关系 + + food_dir_x:0表示食物与蛇头同在x轴上,1表示食物在蛇头左侧(不一定相邻),2表示在右边 + + food_dir_y:0表示食物与蛇头同在y轴上,1表示食物在蛇头上面,2表示在下面 + + * [adjoining_body_top, adjoining_body_bottom, adjoining_body_left, adjoining_body_right]:用以检查蛇的身体是否在蛇头的附近 + + adjoining_body_top:1表示蛇头上边有蛇的身体,0表示没有 + + adjoining_body_bottom:1表示蛇头下边有蛇的身体,0表示没有 + + adjoining_body_left:1表示蛇头左边有蛇的身体,0表示没有 + + adjoining_body_right:1表示蛇头右边有蛇的身体,0表示没有 + +* action:即上下左右 + +* reward:如果吃到食物给一个+1的reward,如果蛇没了就-1,其他情况给-0.1的reward + +## 任务要求 + +设计一个Q网络用于学习snake游戏,并绘制reward以及滑动平均后的reward随epiosde的变化曲线图并记录超参数写成报告。 + + + From 8226d986cb677a94900195fd0c3d8e0b7f65766b Mon Sep 17 00:00:00 2001 From: JohnJim0816 Date: Tue, 22 Sep 2020 23:39:52 +0800 Subject: [PATCH 2/2] update --- docs/chapter3/porject1.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/chapter3/porject1.md b/docs/chapter3/porject1.md index 3658564..ba6911e 100644 --- a/docs/chapter3/porject1.md +++ b/docs/chapter3/porject1.md @@ -40,3 +40,4 @@ +[参考代码](https://github.com/datawhalechina/leedeeprl-notes/tree/master/codes/snake) \ No newline at end of file