您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
55 行
1.6 KiB
55 行
1.6 KiB
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
/// CoreBrain which decides actions via communication with an external system such as Python.
|
|
public class CoreBrainExternal : ScriptableObject, CoreBrain
|
|
{
|
|
/**< Reference to the brain that uses this CoreBrainExternal */
|
|
public Brain brain;
|
|
|
|
MLAgents.Batcher brainBatcher;
|
|
|
|
/// Creates the reference to the brain
|
|
public void SetBrain(Brain b)
|
|
{
|
|
brain = b;
|
|
}
|
|
|
|
/// Generates the communicator for the Academy if none was present and
|
|
/// subscribe to ExternalCommunicator if it was present.
|
|
public void InitializeCoreBrain(MLAgents.Batcher brainBatcher)
|
|
{
|
|
if (brainBatcher == null)
|
|
{
|
|
brainBatcher = null;
|
|
throw new UnityAgentsException(string.Format("The brain {0} was set to" +
|
|
" External mode" +
|
|
" but Unity was unable to read the" +
|
|
" arguments passed at launch.", brain.gameObject.name));
|
|
}
|
|
else
|
|
{
|
|
this.brainBatcher = brainBatcher;
|
|
this.brainBatcher.SubscribeBrain(brain.gameObject.name);
|
|
}
|
|
|
|
}
|
|
|
|
/// Uses the communicator to retrieve the actions, memories and values and
|
|
/// sends them to the agents
|
|
public void DecideAction(Dictionary<Agent, AgentInfo> agentInfo)
|
|
{
|
|
if (brainBatcher != null)
|
|
{
|
|
brainBatcher.SendBrainInfo(brain.gameObject.name, agentInfo);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/// Nothing needs to appear in the inspector
|
|
public void OnInspector()
|
|
{
|
|
|
|
}
|
|
}
|