Quoridor Pseudo Code - SeoulTechTCPGame/block-it GitHub Wiki
- ์์ ์ ์์ค ์ค๊ฐ์ ๋ง์ ๋๋๋ค.
-
$n$ ๋ฒ์งธ ํ๋ ์ด์ด๊ฐ ๋ง์ ์์ง์ด๊ฑฐ๋ ๋ฒฝ์ ์ธ์ด๋ค. -
$turnNum + 1$ ์ ํ๋ค. - 2~3๋ฒ ๊ณผ์ ์ ๊ฒ์์ด ๋๋ ๋ ๊น์ง ๋ฐ๋ณตํ๋ค.
๊ฒ์์ ์์์ ๋ง์ด ๋ฐ๋ํธ ์ฒซ์ค์ ๋์ฐฉํ๋ฉด ์ข ๋ฃ๋๋ค.
ํต์ฌ ๊ท์น์ ์๋๋ฐฉ์ด ๋ชป์์ง์ด๊ฒ ๊ฐ๋๋ฉด ์๋๋ค๋ ๊ฒ์ด๋ค. -> ์ฅ์ ๋ฌผ์ ๋์ ๋ ์ต์ 1์นธ์ ์์ง์ผ์ ์๋ ๊ณต๊ฐ์ ๋จ๊ฒจ์ผ ํ๋ค. ๋ด ๊ฒ์๋ง ๋ค์ ์ฅ์ ๋ฌผ์ ๋๋ค๋ฉด ๋ด ๊ฒฝ๋ก์๋ ์ง์ฅ์ ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋ฆฌํ๋ค.
์ค๋ฌ ์คํ๋: ์๋๋ฐฉ๊ณผ ๋ด๊ฐ ๋ชจ๋ 3์นธ์ ์ ์งํ๋ค๋ฉด, ๋ด ๊ฒ์ ๋ง์ ๋ค์ ์ธ๋ก๋ก ์ฅ์ ๋ฌผ์ ์ธ์ฐ๋ ๊ฒ์ด๋ค. ๊ฒ์๋ง์ ์์ง์: ๋ฌดํํ ์ฌ์ฉํ ์ ์๋ ์์์ด๋ค. ์ฅ์ ๋ฌผ: ๊ฐ์๊ฐ ํ์ ๋์ด ์๋ ์์์ด๋ค.
์ฟผ๋ฆฌ๋์ ์น๋ฆฌ ์ ๋ต์ ๋ด๊ฐ ์์ง์ฌ์ผํ๋ ๊ฑฐ๋ฆฌ๋ ์ต์ํ์ผ๋ก ๋ง๋ค๊ณ ์๋๋ฐฉ์ด ์์ง์ฌ์ผ ํ๋ ๊ฑฐ๋ฆฌ๋ ๋๋ฆฌ๋ ๊ฒ์ด๋ค.
์ฅ์ ๋ฌผ์ด ๋ด ์์ ๋ง์์ ๊ฒฝ์ฐ์๋ ๋จ์ ์นธ์๊ฐ ํ์์ธ ์นธ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. ํ์์ธ ์นธ์ ๋ง๊ธฐ ์ํด์๋ ๋ ๋ง์ ์ฅ์ ๋ฌผ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ๊ฒ์ํ์ ๊ฐ๋ก ์ธ๋ก 9์นธ์ฉ ์กด์ฌํ์ง๋ง ์ฅ์ ๋ฌผ์ด ๋ง์์ ์๋ ์นธ ์๋ 2์นธ์ด๊ธฐ์ ํญ์ ํ์นธ์ด ๋จ๊ฒ ๋๊ธฐ์ ๋จ์ ์นธ์ด ํ์์ธ ๊ณณ์ผ๋ก ์์ง์ด๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. ๋ ํ์นธ์ธ ์นธ์ ๋ง๊ธฐ ์ํด์๋ ์ฅ์ ๋ฌผ์ด 1๊ฐ ์ด์ ํ์ํ๊ธฐ ๋๋ฌธ์ ์๋๋ฐฉ์ ์ฅ์ ๋ฌผ ์ฌ์ฉ๋ํ ์๋ฐ ํ ์ ์๋ค.
๋ฐ๋ผ์ ์ ์๋ฅผ ์ก์์ ๊ฒฝ์ฐ ์ค๋ฌ ์คํ๋์ผ๋ก ์์ํ์ฌ ์๋์ ์ผ์ชฝ ๊ธธ์ ์ฐจ๋จํํ ์ค๋ฅธ์ชฝ ๊ธธ์ ์๋ฐํ๋ฉด ์ฝ๊ฒ ์ด๊ธธ์ ์๋ค.
Initialize turnNum 0
FOR
Set Player n%2
Execute Player Action
Add 1 to turnNum
END FOR
๋ชฉ์ ๋ณด์์ ๊ทน๋ํํ๊ธฐ ์ํ action์ ์์ธกํ๋ค.
์ด๋
์ด๋
์ด๋
DQN์๊ณ ๋ฆฌ์ฆ์ ๊ด์ธก ์ํ์ค์ ๋ฐ๋ฅธ ์๊ด๊ด๊ณ๋ฅผ ์์ ๊ธฐ ์ํด replay ๋ฐฉ์์ ํ์ต์ ์งํํ๋ฉฐ
์ด๋ ๊ฐ ๊ด์ธก๊ฒฝํ experience๋ฅผ
์ด ๊ฒฝํ์ ๋ํ ๋ฐ์ดํฐ๋ค์
์ด ์์ด์ ํธ๋ฅผ ํ์ต ์ํค๊ธฐ ์ํด์๋ ์์คํฉ์(=๋น์ฉํจ์)๊ฐ ํ์ํ๋ฐ ์ด ๋น์ฉํจ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด ์์์์
๋ํ
Algorithm: DQN with experience replay.
Initialize replay memory D to capacity N
Initialize target action-value function
Initialize action-value function
For
Initailize sequence
For
With probability
otherwise select
Execute action
Set
Store transition
Sample random minibatch of transitions
If episode terminates at step j+1: Set
Else: Set
Perform a gradient descent step on
Every
End For
End For