-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathesforco.py
More file actions
43 lines (32 loc) · 1.45 KB
/
Copy pathesforco.py
File metadata and controls
43 lines (32 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import tensorflow as tf
import gym
import numpy as np
# Ambiente CartPole do Gym
env = gym.make('CartPole-v1')
# Modelo Simples para Aprendizado por Reforço
model_reinforcement = tf.keras.Sequential([
tf.keras.layers.Dense(24, activation='relu', input_shape=(env.observation_space.shape[0],)),
tf.keras.layers.Dense(env.action_space.n, activation='linear')
])
model_reinforcement.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), loss='mse')
# Treinamento por Reforço (exemplo fictício)
max_episodes = 1000 # Defina o número máximo de episódios
for episode in range(max_episodes):
state = env.reset()
done = False
while not done:
action = env.action_space.sample()
next_state, reward, done, _ = env.step(action)
target = reward + 0.95 * tf.reduce_max(model_reinforcement.predict(next_state.reshape(1, -1)))
target_f = model_reinforcement.predict(state.reshape(1, -1))
target_f[0][action] = target
model_reinforcement.fit(state.reshape(1, -1), target_f, epochs=1, verbose=0)
state = next_state
# Condição de parada
if episode % 10 == 0:
average_reward = sum(reward for _ in range(10)) / 10.0
print(f'Episode {episode}, Average Reward: {average_reward}')
# Adicionando uma condição de parada
if average_reward == 1: # Pode ajustar esse valor conforme necessário
print(f'Solved after {episode} episodes!')
break