مارا دنبال کنید : 

الگوریتم Q-Learning(بخش سوم)
پیاده سازی الگوریتم Q-Learning در پایتون

مرحله 1: تعریف محیط (Define the Environment)

پارامترهای محیط را تنظیم کنید، از جمله تعداد حالات و اقدامات، Q-table را مقدار دهی اولیه کنید. در این دنیای شبکه‌ای، هر حالت نمایانگر یک موقعیت است و اقدامات عامل را در این محیط جابجا می‌کند.

				
					import numpy as np

# Define the environment
n_states = 16
n_actions = 4
goal_state = 15
# Initialize Q-table with zeros
Q_table = np.zeros((n_states, n_actions))
				
			

مرحله 2: تنظیم هایپرپارامترها (Set Hyperparameters)

پارامترهای الگوریتم Q-Learning را تعریف کنید، از جمله نرخ یادگیری، عامل تخفیف، احتمال کاوش، و تعداد دوره‌های آموزشی.

				
					# Define parameters
learning_rate = 0.8
discount_factor = 0.95
exploration_prob = 0.2
epochs = 1000
				
			

مرحله 3: پیاده‌سازی الگوریتم Q-Learning (Implement the Q-Learning Algorithm)

الگوریتم Q-Learning را در چندین دوره آموزشی اجرا کنید. هر دوره شامل انتخاب اقدامات بر اساس استراتژی ϵ-greedy، به‌روزرسانی مقادیر Q بر اساس پاداش‌های دریافتی، و انتقال به حالت بعدی است.

				
					# Q-learning algorithm
for epoch in range(epochs):
    current_state = np.random.randint(0, n_states)
    while current_state != goal_state:
        if np.random.rand() < exploration_prob:
            action = np.random.randint(0, n_actions)
        else:
            action = np.argmax(Q_table[current_state])
        next_state = (current_state + 1) % n_states
        reward = 1 if next_state == goal_state else 0
        Q_table[current_state, action] += learning_rate * \
            (reward + discount_factor *
             np.max(Q_table[next_state]) - Q_table[current_state, action])
        current_state = next_state
				
			

مرحله 4: خروجی Q-table (Output the Learned Q-Table)

پس از آموزش، Q-table را چاپ کنید تا مقادیر Q یادگرفته‌شده را بررسی کنید که نمایانگر پاداش‌های مورد انتظار برای انجام اقدامات خاص در هر حالت هستند.

				
					print("Learned Q-table:")
print(Q_table)
				
			

مرحله5: خرجی کد

				
					Learned Q-table:
[[0.48767498 0.48751892 0.46816798 0.        ]
 [0.51334208 0.49211897 0.51330921 0.51333551]
 [0.54036009 0.54035317 0.54036003 0.5403598 ]
 [0.56880004 0.56880008 0.56880003 0.56880009]
 [0.59873694 0.59873694 0.59873693 0.59873694]
 [0.63024941 0.63024941 0.63024941 0.63024941]
 [0.66342043 0.66342043 0.66342043 0.66342043]
 [0.6983373  0.6983373  0.6983373  0.6983373 ]
 [0.73509189 0.73509189 0.73509189 0.73509189]
 [0.77378094 0.77378094 0.77378094 0.77378094]
 [0.81450625 0.81450625 0.81450625 0.81450625]
 [0.857375   0.857375   0.857375   0.857375  ]
 [0.9025     0.9025     0.9025     0.9025    ]
 [0.95       0.95       0.95       0.95      ]
 [1.         1.         1.         1.        ]
 [0.         0.         0.         0.        ]]
				
			

الگوریتم Q-Learning شامل آموزش تکراری است که در آن عامل محیط را کاوش کرده و Q-table خود را به‌روزرسانی می‌کند. این فرایند از یک حالت تصادفی شروع می‌شود، اقدامات را از طریق استراتژی ϵ-greedy انتخاب می‌کند و حرکات را شبیه‌سازی می‌کند. یک تابع پاداش به‌ازای رسیدن به حالت هدف، مقدار ۱ را ارائه می‌دهد. مقادیر Q با استفاده از قاعده Q-Learning به‌روزرسانی می‌شوند و پاداش‌های دریافتی و مورد انتظار را ترکیب می‌کنند. این فرایند ادامه می‌یابد تا زمانی که عامل استراتژی‌های بهینه را یاد بگیرد. Q-Learning نهایی نمایانگر مقادیر حالت-عمل به‌دست‌آمده پس از آموزش است.