Skip to content

Latest commit

ย 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Snake-AI_Genetic

Run

python ga.py

Approach

์‹ ๊ฒฝ๋ง(Neural Network) + ์œ ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Genetic Algorithm)

  • ์‹ ๊ฒฝ๋ง: ์ฃผ์–ด์ง„ ์ƒํ™ฉ์—์„œ ๋ฑ€์˜ ์ด๋™ ๋ฐฉํ–ฅ์„ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• 
  • ์œ ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์‹ ๊ฒฝ๋ง์„ ํ•™์Šต์‹œํ‚ค๋Š” ์šฉ๋„(์ตœ์ ํ™”)

Neural Network

๋ฑ€์˜ ๋‘๋‡Œ์— ํ•ด๋‹นํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰. Input, Hidden, Output์œผ๋กœ ๊ตฌ์„ฑ

  • Input: 9๊ฐœ์˜ ๋‰ด๋Ÿฐ์œผ๋กœ ๊ตฌ์„ฑ
  • Hidden: 3๊ฐœ์˜ ์ธต์œผ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ 20, 20, 10๊ฐœ์˜ ๋‰ด๋Ÿฐ์œผ๋กœ ๊ตฌ์„ฑ
  • Output: 3๊ฐœ์˜ ๋‰ด๋Ÿฐ์œผ๋กœ ๊ตฌ์„ฑ

Input & Output

Input์˜ ๊ฒฝ์šฐ, ๋ฑ€์˜ ๋จธ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 3๋ฐฉํ–ฅ(์ „๋ฐฉ, ์šฐ์ธก, ์ขŒ์ธก)์— ๋Œ€ํ•œ ๋‹ค์Œ์˜ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ œ๊ณต

  • (๊ฑฐ๋ฆฌ 5์ด๋‚ด์—) ๋ฒฝ ๋˜๋Š” ์ž์‹ ์˜ ๋ชธ ์œ ๋ฌด
  • (๊ฑฐ๋ฆฌ 5์ด๋‚ด์—) ๋จน์ด ์œ ๋ฌด
  • ๋Œ€๋žต์ ์ธ ๋จน์ด ๋ฐฉํ–ฅ

Output์˜ ๊ฒฝ์šฐ, 3๊ฐœ์˜ ๋‰ด๋Ÿฐ์œผ๋กœ ๊ฐ๊ฐ์ด ํ˜„์žฌ ์ง„ํ–‰๋ฐฉํ–ฅ ๊ณ ์ˆ˜, ์šฐ์ธก ๋ฐฉํ–ฅ ์ „ํ™˜, ์ขŒ์ธก ๋ฐฉํ–ฅ ์ „ํ™˜์„ ์˜๋ฏธํ•œ๋‹ค.

Genetic Algorithm

์ƒ๋ฌผ์˜ ์ง„ํ™” ๊ณผ์ •์„ ๋ณธ๋œฌ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ Selection, Crossover, Mutation ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • Population: 100
  • Selection: ์—˜๋ฆฌํŠธ ๋ณด์กด + ์—˜๋ฆฌํŠธ๋กœ ์„ ์ •๋œ ๋ฑ€์„ ๋™์ผํ•œ ํ™•๋ฅ ๋กœ ๋žœ๋คํ•œ ์„ ํƒ
  • Crossover: ์‹ ๊ฒฝ๋ง์˜ ๊ฐ ์ธต๋ณ„(input->hidden1, hidden1->hidden2, ...)๋กœ ์‹ฑ๊ธ€-ํฌ์ธํŠธ ๊ต๋ฐฐ๋ฅผ ์‹ค์‹œ
  • Mutation: ๋ชจ๋“  ๊ฐ€์ค‘์น˜๊ฐ’์„ ๋Œ€์ƒ์œผ๋กœ 0.05์˜ ํ™•๋ฅ ๋กœ ๋Œ์—ฐ๋ณ€์ด ๋ฐœ์ƒ

Fitness์˜ ๊ฒฝ์šฐ, ๋Œ€๋žต์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ํ†ตํ•ด ๊ณ„์‚ฐ๋˜์–ด ์ง„๋‹ค.

  • ๋ฑ€์ด ๋จน์ด๋ฅผ ๋จน๋Š” ๊ฒฝ์šฐ
    • ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ์ˆ˜ ์ ์ˆ˜: 10
    • ์ถ”๊ฐ€ ์ ์ˆ˜: ๊ธ์ •์ ์ธ ์ด๋™ ํšŸ์ˆ˜ / ์ด ์ด๋™ ํšŸ์ˆ˜
  • ๋ฑ€ ๋จธ๋ฆฌ์™€ ๋จน์ด์™€์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ด€์ฐฐ๋˜์—ˆ๋˜ ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ๋ฉ€์–ด์งˆ ๋•Œ: -0.2

์—ฌ๊ธฐ์„œ ๊ธ์ •์ ์ธ ์ด๋™ ํšŸ์ˆ˜๋ž€, ํ˜„์žฌ๊นŒ์ง€ ๊ด€์ฐฐ๋œ ๋จน์ด์™€ ๋จธ๋ฆฌ์˜ ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ๊ฐ€๊นŒ์›Œ์ง€๊ฒŒ ๋งŒ๋“œ๋Š” ์ด๋™์„ ์˜๋ฏธํ•œ๋‹ค.

Result

์œ„์˜ ๊ทธ๋ž˜ํ”„๋Š” ์œ ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•œ ์—ฌ๋Ÿฌ๋ฒˆ์˜ ํŠธ๋ ˆ์ด๋‹ ์ค‘ ๋งˆ์ง€๋ง‰ ์‹œ๋„์—์„œ ์–ป์€ ๋ฐ์ดํ„ฐ๋กœ, ๊ฐ ์„ธ๋Œ€์˜ ๋ฑ€์ด ์ตœ๊ณ  ๋งŽ์ด ๋จน์€ ๋จน์ด์— ๋Œ€ํ•œ ๊ทธ๋ž˜ํ”„์ด๋‹ค. ์šฐ์ƒํ–ฅ์„ ๊ทธ๋ฆฌ๊ณ  ์žˆ์œผ๋ฉฐ, 29์„ธ๋Œ€์—์„œ 95๊ฐœ์˜ ๋จน์ด๋ฅผ ๋จน์€ ๊ฒƒ์ด ์ตœ๊ณ ์ ์ด๋‹ค.

Reference

https://github.com/kairess/genetic_snake

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages