示例#1
0
    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);
        }
    }
示例#2
0
    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());
    }
示例#3
0
    // 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);
    }