Как обойти кунг -фу, бросающий нож, вражеский NES с Vision Transformer, MLPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как обойти кунг -фу, бросающий нож, вражеский NES с Vision Transformer, ML

Сообщение Anonymous »

Я играю вокруг машинного обучения, обучая модель, которая надеется обойти 1 -й этап в Кунг -фу Нес. Репо < /p>
atm, я застрял на уровне 1 с вражеским ножом. (Закрытие боя в порядке до сих пор, расстояние - это проблема) Он предлагает сначала поездка на простую вознаграждение, прежде чем перейти к более сложным функциям вознаграждения. < /P>
def step(self, action):
obs, _, done, info = super().step(action)
ram = self.env.get_ram()

# Extract game state information
current_score = ram[self.ram_positions['score']] * 100
current_scroll = ram[self.ram_positions['scroll']]
current_hp = ram[self.ram_positions['hero_hp']]
current_pos_x = ram[self.ram_positions['hero_pos_x']]
current_stage = ram[self.ram_positions['stage']]

# Calculate deltas
score_delta = current_score - self.last_score
scroll_delta = current_scroll - self.last_scroll if current_scroll >= self.last_scroll else (current_scroll + 256 - self.last_scroll)
hp_loss = max(0, int(self.last_hp) - int(current_hp)) if self.last_hp is not None else 0
pos_delta = current_pos_x - self.last_pos_x

# Calculate reward components
reward = 0
reward += score_delta * 5 # Points gained
reward += scroll_delta * 10 # Progress through level
reward += pos_delta * 0.1 # Movement (small reward for moving)
reward -= hp_loss * 50 # Penalty for losing health

# Update tracking variables
self.last_score = current_score
self.last_scroll = current_scroll
self.last_hp = current_hp
self.last_pos_x = current_pos_x

# Calculate survival time
survival_time = time.time() - self.episode_start_time if self.episode_start_time else 0

# Add detailed info to the info dict
info['score'] = current_score
info['hp'] = current_hp
info['scroll'] = current_scroll
info['pos_x'] = current_pos_x
info['stage'] = current_stage
info['survival_time'] = survival_time
info['score_delta'] = score_delta
info['scroll_delta'] = scroll_delta
info['hp_loss'] = hp_loss
info['episode'] = {
'r': reward,
'l': 1, # Episode length (steps)
't': survival_time,
'score': current_score,
'scroll': current_scroll,
'hp': current_hp
}

return obs, reward, done, info
< /code>
Ранее я тренировался с более сложными функциями вознаграждения в течение всей ночи с 5_000_000, но все еще не в состоянии пройти. Я буду использовать награду, чтобы тренироваться больше, но я обеспокоен этой пустой тратой времени. Мне нужны некоторые предложения о том, как преодолеть это.

Подробнее здесь: https://stackoverflow.com/questions/795 ... sformer-ml
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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