10 namespace droid.Runtime.Prototyping.Evaluation {
22 protected float _solved_reward = 1.0f;
27 float _failed_reward = -1.0f;
32 protected float _default_reward = -0.001f;
42 public override String PrototypingTypeName {
get {
return ""; } }
47 get {
return this._environment; }
48 set { this._environment = value; }
103 public float SolvedThreshold {
104 get {
return this._solved_threshold; }
105 set { this._solved_threshold = value; }
114 signal += this.InternalEvaluate();
119 if (this.EpisodeLength > 0 && this._environment.CurrentFrameNumber >=
this.EpisodeLength) {
121 if (this.Debugging) {
122 Debug.Log($
"Maximum episode length reached, Length {this._environment.CurrentFrameNumber}");
126 signal = this._failed_reward;
128 this._environment.Terminate(
"Maximum episode length reached");
132 if (this.Debugging) {
137 this._last_signal = signal;
139 this._Episode_Return += signal;
148 this._last_signal = 0;
149 this._Episode_Return = 0;
150 this.InternalReset();
166 protected sealed
override void Setup() {
170 if (this.ParentEnvironment == null) {
171 this.ParentEnvironment = FindObjectOfType<AbstractPrototypingEnvironment>();
185 recipient.
PollData($
"{this._last_signal.ToString(CultureInfo.InvariantCulture)}, {this._Episode_Return}");
201 public abstract float InternalEvaluate();
205 public abstract void InternalReset();
244 [Header(
"References", order = 100)]
255 [Header(
"General", order = 101)]
257 float _solved_threshold = 0f;
259 [SerializeField]
float _last_signal = 0f;
264 int _episode_length = 1000;
269 public int EpisodeLength {
get {
return this._episode_length; }
set { this._episode_length = value; } }
abstract void PollData(dynamic data)
sealed override void Setup()
override void RegisterComponent()
void SignalString(DataPoller recipient)
override void UnRegisterComponent()