Агент не научится, что бы я ни пыталсяPython

Программы на Python
Anonymous
Агент не научится, что бы я ни пытался

Сообщение Anonymous »

Я пытаюсь создать модель RL для обучения с подкреплением, и среда довольно проста и представляет собой сетку 10x10. На этапе обучения достигается цель. Но когда я пытаюсь это проверить, агент идет в одном направлении, идет прямо и врезается в стену или препятствие. Оно не изменит направление. И это происходит по кругу. Моя функция вознаграждения основана на расстоянии от текущей позиции до цели, и штрафы даются за отход от цели и попадание во что-либо. Ниже приведен мой модельный класс.
class DQNTrainer:
def __init__(self, states, actions, visualize=True, load_model=False):
self.states = states
self.actions = actions
self.model = self.create_model()
if load_model:
self.load_model()
self.agent = self.create_agent()
self.env = None
self.visualize = visualize

def create_model(self):
model = Sequential()
model.add(Flatten(input_shape=(1, self.states, self.states)))
model.add(Dense(128, activation="relu", kernel_regularizer=l1(0.01))) # Add L1 regularization
model.add(Dense(128, activation="relu", kernel_regularizer=l1(0.01)))
model.add(Dense(64, activation="relu", kernel_regularizer=l1(0.01)))
model.add(Dense(self.actions, activation="linear"))
return model

def create_agent(self):
policy = LinearAnnealedPolicy(EpsGreedyQPolicy(),
attr='eps',
value_max=1.0,
value_min=0.1,
value_test=0.01,
nb_steps=10000)
return DQNAgent(
model=self.model,
memory=SequentialMemory(limit=20000, window_length=1),
policy=policy,
#policy = EpsGreedyQPolicy(0.1),
nb_actions=self.actions,
nb_steps_warmup=500,
target_model_update=0.005,
gamma=0.99
)

def compile_agent(self):
self.agent.compile(optimizer=Adam(learning_rate=0.0005),
metrics=['mean_absolute_error'])

def fit(self, env, nb_steps):
self.env = env
self.agent.fit(self.env, nb_steps=nb_steps, visualize=self.visualize, verbose=1)

def train(self, env, nb_steps):
self.compile_agent()
self.fit(env, nb_steps)
return True

def save_model(self):
self.model.save_weights('pathplanner.h5', overwrite=True)

def load_model(self):
try:
self.model.load_weights('pathplanner.h5')
print("Model Loading Successful")
except Exception as e:
print(f"Error loading model: {e}")


Подробнее здесь: https://stackoverflow.com/questions/786 ... what-i-try

Вернуться в «Python»