AAbstractTrainer
class AAbstractTrainer : public AController一个抽象类,用于表示使用强化学习训练 NPC 的控制器。
注意:此类旨在通过 C++ 或 Blueprint 进行子类化,以实现 NPC 的特定训练逻辑。
注意:此类旨在与 AbstractEnvironment 类结合使用。
依赖项
此类型依赖于
- FAction
- FTrainerConfiguration
- FTrainerDefinition
- FTrainerState
- UAbstractObserver
- UActuator
- UInteractionManager
继承自: public AController
公共接口
构造函数
AAbstractTrainer
AAbstractTrainer()构造一个新的 AAbstractTrainer 对象。
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 50 行, 第 1 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 55-58 行)
公共函数
PawnPendingDestroy
virtual void PawnPendingDestroy(APawn *inPawn) override参数
| 名称 | 类型 | 默认 |
|---|---|---|
inPawn | APawn * | “ |
属性: virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 45 行, 第 14 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 29-46 行)
Initialize
bool Initialize(int EnvId, int AgentId, APawn *TargetPawn)在游戏开始后初始化此代理。
参数
EnvId(int) – [输入] 此代理所属环境的 ID。AgentId(int) – [输入] 此代理在环境中的 ID。TargetPawn(APawn *) – [输入] 此 Trainer 将管理的 Class 的 Pawn。可以是 CDO 或场景中的 pawn。
返回: bool
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 84 行, 第 6 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 60-119 行)
ComputeReward
inline virtual float ComputeReward()从代理的直接环境中收集奖励。
返回:一个 float,表示代理的奖励
注意:此函数必须由子类实现。
返回值: float
属性: inline, virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 91 行, 第 15 列)
ComputeStatus
inline virtual EAgentTrainingStatus ComputeStatus()检查代理是否处于终止状态。
返回:代理的状态,用于指示它是否仍在运行,或停止的原因。
注意:此函数必须由子类实现。
返回: EAgentTrainingStatus
属性: inline, virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 97 行, 第 30 列)
GetInfo
inline virtual void GetInfo(TMap<FString, FString> &Info)获取代理的 Info 输出。
参数
Info(TMap<FString, FString> &) – [输出] 一个映射,表示关于环境的非观察细节。
属性: inline, virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 103 行, 第 14 列)
GetTrainingStatus
EAgentTrainingStatus GetTrainingStatus()获取最后计算的训练状态。
返回:最后计算的训练状态。
返回: EAgentTrainingStatus
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 109 行, 第 22 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 184-187 行)
GetTrainingMsgStatus
ETrainingMsgStatus GetTrainingMsgStatus()获取代理是否已完成,以及是否已发送了表明其已完成的最终状态更新。
返回:一个 enum,用于跟踪环境在结束时是否发送了最终状态更新。
返回: ETrainingMsgStatus
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 115 行, 第 20 列)
SetTrainingStatus
void SetTrainingStatus(EAgentTrainingStatus NewStatus)设置代理的训练状态。
参数
NewStatus(EAgentTrainingStatus) – [输入] 要设置的新状态
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 121 行, 第 6 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 178-182 行)
SetTrainingMsgStatus
void SetTrainingMsgStatus(ETrainingMsgStatus NewStatus)设置代理的训练消息状态。
参数
NewStatus(ETrainingMsgStatus) – [输入] 要设置的新状态
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 127 行, 第 6 列)
IsDone
bool IsDone() const const此代理是否需要重置(截断或完成)
返回:如果代理需要重置,则为 true
返回: bool
属性: const
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 134 行, 第 6 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 194-197 行)
Reset
void Reset()重置代理。
在重置过程中收集环境的初始观察。
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 140 行, 第 6 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 165-176 行)
ResetTrainer
inline virtual void ResetTrainer()重置此 Trainer 的任何每集属性。
注意:此函数必须由子类实现。
属性: inline, virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 146 行, 第 14 列)
IncrementStep
inline void IncrementStep()递增当前集的步数计数。
这用于确定何时从大脑请求新动作。
属性: inline
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 151 行, 第 6 列)
ResetStep
inline void ResetStep()将步数计数重置为 0。
这用于确定何时从大脑请求新动作。
属性: inline
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 156 行, 第 6 列)
GetStep
inline int GetStep() const const获取代理在当前集中的步数。
返回: int
属性: const, inline
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 162 行, 第 5 列)
SetStep
inline void SetStep(int InStep)参数
| 名称 | 类型 | 默认 |
|---|---|---|
InStep | int | “ |
属性: inline
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 165 行, 第 6 列)
IsDecisionStep
virtual bool IsDecisionStep(int StepToCheck)检查特定步数是否需要大脑决策。
返回:如果代理应该请求决策,则为 true
参数
StepToCheck(int) – 要检查的时间步
返回: bool
属性: virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 172 行, 第 14 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 204-207 行)
IsDecisionStep
virtual bool IsDecisionStep()如果当前步是决策步,由步频定义。
返回:如果当前步是决策步,则为 true
返回: bool
属性: virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 178 行, 第 14 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 209-212 行)
IsActionStep
virtual bool IsActionStep()检查大脑是否有动作,并且是动作步。
返回:如果代理在此步应采取行动,则为 true
返回: bool
属性: virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 184 行, 第 14 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 199-202 行)
Act
void Act(const FAction &Action)代理在采取动作之前从大脑检索动作。
参数
Action(const FAction &) – [输入] 要采取的动作
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 190 行, 第 6 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 158-163 行)
Think
FTrainerState * Think()更新代理的状态。
这会检查代理是否完成、其奖励应是多少,并在请求决策前收集任何观察。
返回:更新后的代理状态
返回: FTrainerState *
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 196 行, 第 15 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 121-156 行)
IsRunning
bool IsRunning()与大脑检查是否可以执行操作,并相应地设置代理状态。
返回:更新后的代理状态
返回: bool
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 202 行, 第 6 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 189-192 行)
OnCompletion
inline virtual void OnCompletion()代理完成其回合后的回调函数。
属性: inline, virtual
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 207 行, 第 14 列)
HasAgentClass
inline bool HasAgentClass() const const返回: bool
属性: const, inline
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 209 行, 第 6 列)
公共成员
FTrainerState State
FTrainerState State = = FTrainerState()代理的当前状态。
内存由 GymConnector 内部的 SharedState 管理
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 53 行, 第 15 列)
UInteractionManager * InteractionManager
UInteractionManager * InteractionManager = = CreateDefaultSubobject<UInteractionManager>(TEXT("InteractionManager"))用于管理代理和环境交互的对象。
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 57 行, 第 21 列)
TArray<UAbstractObserver *> Observers
TArray<UAbstractObserver *> Observers收集代理观察值的观察值列表。
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 61 行, 第 8 列)
TArray<UActuator *> Actuators
TArray<UActuator *> Actuators执行代理动作的执行器列表。
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 65 行, 第 8 列)
FTrainerConfiguration TrainerConfiguration
FTrainerConfiguration TrainerConfigurationTrainer 的配置。
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 69 行, 第 23 列)
FTrainerDefinition TrainerDefn
FTrainerDefinition TrainerDefn代理的定义。
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 73 行, 第 20 列)
TSubclassOf<APawn> AgentClass
TSubclassOf<APawn> AgentClass来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 76 行, 第 13 列)
Protected Interface
受保护函数
OnPossess
void OnPossess(APawn *InPawn) override参数
| 名称 | 类型 | 默认 |
|---|---|---|
InPawn | APawn * | “ |
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 39 行, 第 6 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 9-26 行)
OnUnPossess
void OnUnPossess() override来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 41 行, 第 6 列)
实现: Schola/Source/Schola/Private/Training/AbstractTrainer.cpp (第 48-53 行)
使用于
此类型由以下部分使用
- AAbstractScholaEnvironment
- ABlueprintTrainer
- FDynamicAgentStruct
- FSharedEnvironmentState
- FTrainerAgentPair
来源: Schola/Source/Schola/Public/Training/AbstractTrainer.h (第 32 行, 第 1 列)