deep rts
1.0.0
DeepRTS는 강화 학습 연구를 위한 고성능 실시간 전략 게임입니다. 성능을 위해 C++로 작성되었지만 기계 학습 툴킷과의 더 나은 인터페이스를 위해 Python 인터페이스를 제공합니다. Deep RTS는 초당 6,000,000 단계 이상, 그래픽 렌더링 시 2,000,000 단계로 게임을 처리할 수 있습니다. StarCraft와 같은 다른 솔루션과 비교할 때 이는 Nvidia RTX 2080 TI가 탑재된 Intel i7-8700k에서 실행되는 시뮬레이션 시간이 15,000% 이상 빠릅니다 .
Deep RTS의 목표는 계산 시간을 줄여 RTS AI 연구에 보다 저렴하고 지속 가능한 솔루션을 제공하는 것입니다.
최신(일반적으로 최상의) 버전의 환경에는 마스터 브랜치를 사용하는 것이 좋습니다. 환경 개선과 관련하여 어떤 의견이라도 보내주시면 감사하겠습니다.
업무에 활용시에는 아래 인용문을 활용해주세요!
@INPROCEEDINGS{8490409,
author={P. {Andersen} and M. {Goodwin} and O. {Granmo}},
booktitle={2018 IEEE Conference on Computational Intelligence and Games (CIG)},
title={Deep RTS: A Game Environment for Deep Reinforcement Learning in Real-Time Strategy Games},
year={2018},
volume={},
number={},
pages={1-8},
keywords={computer games;convolution;feedforward neural nets;learning (artificial intelligence);multi-agent systems;high-performance RTS game;artificial intelligence research;deep reinforcement learning;real-time strategy games;computer games;RTS AIs;Deep RTS game environment;StarCraft II;Deep Q-Network agent;cutting-edge artificial intelligence algorithms;Games;Learning (artificial intelligence);Machine learning;Planning;Ground penetrating radar;Geophysical measurement techniques;real-time strategy game;deep reinforcement learning;deep q-learning},
doi={10.1109/CIG.2018.8490409},
ISSN={2325-4270},
month={Aug},}
sudo pip3 install git+https://github.com/cair/DeepRTS.git
git clone https://github.com/cair/deep-rts.git
cd deep-rts
git submodule sync
git submodule update --init
sudo pip3 install .
10x10-2-FFA
15x15-2-FFA
21x21-2-FFA
31x31-2-FFA
31x31-4-FFA
31x31-6-FFA
Deep RTS는 사전 구축된 미니 게임인 시나리오를 제공합니다. 이러한 미니 게임은 특정 작업에 대해 에이전트를 교육하거나 다양한 문제 설정에서 알고리즘을 테스트하는 데 매우 적합합니다. 시나리오를 사용하면 작업 완료에 따라 각각 보상/처벌 신호를 출력하는 기준을 사용하여 보상 기능을 간단하게 설계할 수 있다는 이점이 있습니다. 작업의 예는 다음과 같습니다.
Deep RTS는 현재 다음 시나리오를 구현합니다.
GoldCollectFifteen
GeneralAIOneVersusOne
import random
from DeepRTS . python import Config
from DeepRTS . python import scenario
if __name__ == "__main__" :
random_play = True
episodes = 100
for i in range ( episodes ):
env = scenario . GeneralAI_1v1 ( Config . Map . THIRTYONE )
state = env . reset ()
done = False
while not done :
env . game . set_player ( env . game . players [ 0 ])
action = random . randrange ( 15 )
next_state , reward , done , _ = env . step ( action )
state = next_state
if ( done ):
break
env . game . set_player ( env . game . players [ 1 ])
action = random . randrange ( 15 )
next_state , reward , done , _ = env . step ( action )
state = next_state