Example #1
0
        private void UpdateLearning(InterPlatformPlayedGameStateInfo state, DateTime endTime)
        {
            double stateValue = 1 + 100 * (1 - (endTime - state.Link.StartTime).TotalSeconds / _model.TimeLimit);

            if (stateValue > 1)
            {
                stateValue *= (state.PlayedTime - state.Link.StartTime).TotalMilliseconds;
            }

            if (stateValue > 0)
            {
                if (_interplatformLessonsLearnt.ContainsKey(state.State.GetStateId()))
                {
                    if (_interplatformLessonsLearnt[state.State.GetStateId()].ContainsKey(state.Move))
                    {
                        _interplatformLessonsLearnt[state.State.GetStateId()][state.Move] = 0.99 * _interplatformLessonsLearnt[state.State.GetStateId()][state.Move] + 0.01 * stateValue;
                    }
                    else
                    {
                        _interplatformLessonsLearnt[state.State.GetStateId()].Add(state.Move, stateValue);
                    }
                }
                else
                {
                    _interplatformLessonsLearnt.Add(state.State.GetStateId(), new Dictionary <Moves, double>());
                    _interplatformLessonsLearnt[state.State.GetStateId()].Add(state.Move, stateValue);
                }
            }
        }
Example #2
0
        private double CalculateCollectibleDistanceValue(InterPlatformPlayedGameStateInfo state)
        {
            double agentXPosition = state.State.xPos;
            double agentYPosition = state.State.yPos;

            switch (state.Move)
            {
            case Moves.ROLL_LEFT:
                agentXPosition -= 2 * CircleWorldModel.DEFAULT_RADIUS;
                break;

            case Moves.ROLL_RIGHT:
                agentXPosition += 2 * CircleWorldModel.DEFAULT_RADIUS;
                break;

            case Moves.JUMP:
                agentYPosition -= 2 * CircleWorldModel.DEFAULT_RADIUS;
                break;

            default:
                break;
            }

            return(10000 * 1 / Utils.Utils.CalculateL2(agentXPosition, agentYPosition, state.Link.FromXPos, state.Link.FromNode.Platform.Top));
        }