public void Setup(EvaluatedActionWithScore action) { actionText.text = action.action.GetType().Name; totalScore.text = action.score.ToString(); foreach (EvaluatedScorerWithScore scorer in action.scorers) { GameObject scorerUI = Instantiate(scorerPrefab, scorerContainer); scorerUI.GetComponent <ScorerUIElement>().Setup(scorer); } }
public EvaluatedActionWithScore[] EvaluateActions(Agent agent, World world, string lastAction) { List <EvaluatedActionWithScore> result = new List <EvaluatedActionWithScore>(); foreach (ActionAndScorers action in actions) { EvaluatedActionWithScore evaled = action.Evaluate(agent, world); if (evaled.action.GetType().Name == lastAction) { evaled.score += oscilliationScore; } result.Add(evaled); } result = result.OrderByDescending(o => o.score).ToList(); return(result.ToArray()); }
// Evaluates and averages all the score results after they're transformed public EvaluatedActionWithScore Evaluate(Agent agent, World world) { float sum = 0; List <EvaluatedScorerWithScore> evaledScorers = new List <EvaluatedScorerWithScore>(); foreach (ScorerAndTransformer scorer in scorers) { EvaluatedScorerWithScore scorerResult = new EvaluatedScorerWithScore(); scorerResult.scorer = scorer; scorerResult.score = scorer.EvaluateAndTransform(agent, world); sum += scorerResult.score; evaledScorers.Add(scorerResult); } EvaluatedActionWithScore result = new EvaluatedActionWithScore(); result.action = action; result.score = sum;// / scorers.Count; result.scorers = evaledScorers.ToArray(); return(result); }