Ml-агенты кооперативного push-блока не возвращают вознаграждения

#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, должны быть здесь. Мы приносим извинения за то, что коллаборация не указывает на это прямо, и я внесу в нее изменения.

https://github.com/Unity-Technologies/ml-agents/issues/5567