Skip to content

NightMachinery/ai_401_fall_rl_practical

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Tic-Tac-Toe Q-Learning

بازی ایکس او و الگوریتم Q-Learning برای حل آن در اختیار شما قرار گرفته است.

Install Dependencies

pip install -U numpy open_spiel

TD-Learning on State-Action Pairs (Q-Learning)

قسمت هایی که با fillMe مشخص شده اند را تکمیل کنید. سپس با دستور زیر برنامه را اجرا کنید:

python tic_tac_toe_qlearner.py --interactive_play=true

نتایج برد و باخت شما در خطوطی مشابه زیر خروجی داده می‌شوند:

I0106 01:25:38.127532 8466184832 tic_tac_toe_qlearner.py:164] Starting episode 39999, win_rates [0.988 0.791], lose_rates [0.    0.092] against random_agents
I0106 01:25:38.583564 8466184832 tic_tac_toe_qlearner.py:164] Starting episode 39999, win_rates [0. 0.], lose_rates [0. 0.] against qlearning_agents

باید نرخ باخت شما کمتر از ۰.۲ باشد. در پایان، می‌توانید با هوش‌مصنوعی به بازی بپردازید. با زدن کنترل و c میتوانید برنامه را ببندید.

درنهایت وقتی به خروجی مطلوب رسیدید، نتیجه اجرای برنامه را در یک فایل متنی به نام result_1.txt کپی کنید. این کار در bash بصورت زیر نیز قابل انجام است:

python tic_tac_toe_qlearner.py --interactive_play=false >& result_1.txt

با دادن تغییرات مناسب در فایل های داده شده، پاداش مدل را به نحوی تغییر دهید که الگوی زیر برایش پاداش بالایی (در اوردر هزار) داشته باشد:

reward_mask = np.array([[0, 1, 0],
                        [1, 0, 1],
                        [0, 0, 0]])

توجه کنید که رسیدن به این الگو برای بازیکن پاداش مثبت زیادی دارد، ولی رسیدن حریف به این الگو تاثیری در پاداش بازیکن ندارد.

دوباره اجرا بگیرید و آن را در result_2.txt قرار دهید. چه اتفاقی افتاده است؟ تحلیل خود را در فایل result_2_analysis.txt بنویسید. اگر رسیدن حریف به این الگو پاداش منفی داشته باشد چه اتفاقی خواهد افتاد؟

TD-Learning on States

این سوال حذف شده است و نیازی به تحویل آن نیست.

الگوریتم TD-Learning بر روی state ها (و نه state-action ها مثل Q-Learning) را در فایل tabular_tdlearner.py پیاده سازی کنید. برای اجرای این الگوریتم نیاز به تغییراتی در فایل tic_tac_toe_qlearner.py هم می باشید؛ این فایل را به نام tic_tac_toe_tdlearner.py کپی کنید و تغییرات لازم را در آن بدهید. از پاداش تغییریافته مرحله قبل استفاده نکنید.

درنهایت وقتی به خروجی مناسب رسیدید، آن را در فایل result_3.txt قرار دهید:

python tic_tac_toe_tdlearner.py --interactive_play=false >& result_3.txt

برای پیاده سازی این الگوریتم، دیدن تکه کد های زیر شاید برایتان مفید باشد:

game = pyspiel.load_game("tic_tac_toe")
state_start = game.new_initial_state()
state_start
...
...
...
state = state_start.clone()
print(state)
print("#############")

for a in [4, 2, 8, 7, 0, 1]:
    state.apply_action(a)
    print(state)
    print(f"rewards: player_0={state.player_reward(0)} player_1={state.player_reward(1)}")
    print("#############")
    if state.is_terminal():
        break
...
...
...
#############
...
.x.
...
rewards: player_0=0.0 player_1=0.0
#############
..o
.x.
...
rewards: player_0=0.0 player_1=0.0
#############
..o
.x.
..x
rewards: player_0=0.0 player_1=0.0
#############
..o
.x.
.ox
rewards: player_0=0.0 player_1=0.0
#############
x.o
.x.
.ox
rewards: player_0=1.0 player_1=-1.0
#############

About

ai_401_fall_rl_practical

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages