#python #unity3d #artificial-intelligence #ml-agent
Вопрос:
Я работаю с совместной средой push-блоков ( https://github.com/Unity-Technologi…nvironment-Examples.md#cooperative-push-block) (экспортируется для использования API Python) с использованием последней стабильной версии. Проблема в том, что я не получаю вознаграждения (положительного или отрицательного). Это всегда 0. Если я экспортирую среду с одним блоком push, я правильно получаю награды. Ниже у вас есть код, который я использую из примера collab https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Python-API.md
decision_steps, terminal_steps = env.get_steps(behavior_name)
if tracked_agent in decision_steps:
episode_rewards = decision_steps[tracked_agent].reward
print('REWARD', decision_steps.reward) # Always 0
# Each decision_steps[tracked_agent].reward also returns 0
Я должен получить отрицательный штраф (-0.000) или положительный сигнал 1, 2, 3 в соответствии с документами. Даже если они случайным образом нажмут на блок, я получу 0 в качестве награды.
В документах говорится, что награда дается как «Групповое вознаграждение«. Я не знаю, подразумевает ли это изменение в приведенном выше коде.
Ответ №1:
Я получил этот ответ из раздела проблем с Unity ml-агентами на GitHub:
На шаге принятия решения также есть поле group_reward, которое отделено от поля вознаграждения. Групповые награды, выданные агентам кооперативного Pushblock, должны быть здесь. Мы приносим извинения за то, что коллаборация не указывает на это прямо, и я внесу в нее изменения.