python ga.py
์ ๊ฒฝ๋ง(Neural Network) + ์ ์ ์๊ณ ๋ฆฌ์ฆ(Genetic Algorithm)
- ์ ๊ฒฝ๋ง: ์ฃผ์ด์ง ์ํฉ์์ ๋ฑ์ ์ด๋ ๋ฐฉํฅ์ ๊ฒฐ์ ํ๋ ์ญํ
- ์ ์ ์๊ณ ๋ฆฌ์ฆ: ์ ๊ฒฝ๋ง์ ํ์ต์ํค๋ ์ฉ๋(์ต์ ํ)
๋ฑ์ ๋๋์ ํด๋นํ๋ ์ญํ ์ ์ํ. Input, Hidden, Output์ผ๋ก ๊ตฌ์ฑ
- Input: 9๊ฐ์ ๋ด๋ฐ์ผ๋ก ๊ตฌ์ฑ
- Hidden: 3๊ฐ์ ์ธต์ผ๋ก ๋์ด ์์ผ๋ฉฐ ๊ฐ๊ฐ 20, 20, 10๊ฐ์ ๋ด๋ฐ์ผ๋ก ๊ตฌ์ฑ
- Output: 3๊ฐ์ ๋ด๋ฐ์ผ๋ก ๊ตฌ์ฑ
Input์ ๊ฒฝ์ฐ, ๋ฑ์ ๋จธ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก 3๋ฐฉํฅ(์ ๋ฐฉ, ์ฐ์ธก, ์ข์ธก)์ ๋ํ ๋ค์์ ์ ๋ณด๋ฅผ ์์งํ์ฌ ์ ๊ณต
- (๊ฑฐ๋ฆฌ 5์ด๋ด์) ๋ฒฝ ๋๋ ์์ ์ ๋ชธ ์ ๋ฌด
- (๊ฑฐ๋ฆฌ 5์ด๋ด์) ๋จน์ด ์ ๋ฌด
- ๋๋ต์ ์ธ ๋จน์ด ๋ฐฉํฅ
Output์ ๊ฒฝ์ฐ, 3๊ฐ์ ๋ด๋ฐ์ผ๋ก ๊ฐ๊ฐ์ด ํ์ฌ ์งํ๋ฐฉํฅ ๊ณ ์, ์ฐ์ธก ๋ฐฉํฅ ์ ํ, ์ข์ธก ๋ฐฉํฅ ์ ํ์ ์๋ฏธํ๋ค.
์๋ฌผ์ ์งํ ๊ณผ์ ์ ๋ณธ๋ฌ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก Selection, Crossover, Mutation ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉฐ ์ต์ ํ๋ฅผ ์ํํ๋ค.
- Population: 100
- Selection: ์๋ฆฌํธ ๋ณด์กด + ์๋ฆฌํธ๋ก ์ ์ ๋ ๋ฑ์ ๋์ผํ ํ๋ฅ ๋ก ๋๋คํ ์ ํ
- Crossover: ์ ๊ฒฝ๋ง์ ๊ฐ ์ธต๋ณ(input->hidden1, hidden1->hidden2, ...)๋ก ์ฑ๊ธ-ํฌ์ธํธ ๊ต๋ฐฐ๋ฅผ ์ค์
- Mutation: ๋ชจ๋ ๊ฐ์ค์น๊ฐ์ ๋์์ผ๋ก 0.05์ ํ๋ฅ ๋ก ๋์ฐ๋ณ์ด ๋ฐ์
Fitness์ ๊ฒฝ์ฐ, ๋๋ต์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ํตํด ๊ณ์ฐ๋์ด ์ง๋ค.
- ๋ฑ์ด ๋จน์ด๋ฅผ ๋จน๋ ๊ฒฝ์ฐ
- ๊ธฐ๋ณธ ํ๋ฌ์ ์ ์: 10
- ์ถ๊ฐ ์ ์: ๊ธ์ ์ ์ธ ์ด๋ ํ์ / ์ด ์ด๋ ํ์
- ๋ฑ ๋จธ๋ฆฌ์ ๋จน์ด์์ ๊ฑฐ๋ฆฌ๊ฐ ๊ด์ฐฐ๋์๋ ์ต์ ๊ฑฐ๋ฆฌ๋ณด๋ค ๋ฉ์ด์ง ๋: -0.2
์ฌ๊ธฐ์ ๊ธ์ ์ ์ธ ์ด๋ ํ์๋, ํ์ฌ๊น์ง ๊ด์ฐฐ๋ ๋จน์ด์ ๋จธ๋ฆฌ์ ์ต์ ๊ฑฐ๋ฆฌ๋ณด๋ค ๊ฐ๊น์์ง๊ฒ ๋ง๋๋ ์ด๋์ ์๋ฏธํ๋ค.
์์ ๊ทธ๋ํ๋ ์ ์ ์๊ณ ๋ฆฌ์ฆ์ ํตํ ์ฌ๋ฌ๋ฒ์ ํธ๋ ์ด๋ ์ค ๋ง์ง๋ง ์๋์์ ์ป์ ๋ฐ์ดํฐ๋ก, ๊ฐ ์ธ๋์ ๋ฑ์ด ์ต๊ณ ๋ง์ด ๋จน์ ๋จน์ด์ ๋ํ ๊ทธ๋ํ์ด๋ค. ์ฐ์ํฅ์ ๊ทธ๋ฆฌ๊ณ ์์ผ๋ฉฐ, 29์ธ๋์์ 95๊ฐ์ ๋จน์ด๋ฅผ ๋จน์ ๊ฒ์ด ์ต๊ณ ์ ์ด๋ค.

