/// <summary> /// Reads in normalized distances of the rays. /// Each distance is reversed and normalized. /// </summary> void UpdateInputs() { float lenght = ConstHolder.UNIT_LINE_OF_SIGHT; _distances[(int)Raycast.Direction.Left] = Normalise(_raycast.GetDistance(Raycast.Direction.Left), lenght); _distances[(int)Raycast.Direction.FrontFrontLeft] = Normalise(_raycast.GetDistance(Raycast.Direction.FrontFrontRight), lenght); _distances[(int)Raycast.Direction.FrontLeft] = Normalise(_raycast.GetDistance(Raycast.Direction.FrontLeft), lenght); _distances[(int)Raycast.Direction.Front] = Normalise(_raycast.GetDistance(Raycast.Direction.Front), lenght); _distances[(int)Raycast.Direction.FrontRight] = Normalise(_raycast.GetDistance(Raycast.Direction.FrontRight), lenght); _distances[(int)Raycast.Direction.FrontFrontRight] = Normalise(_raycast.GetDistance(Raycast.Direction.FrontFrontRight), lenght); _distances[(int)Raycast.Direction.Right] = Normalise(_raycast.GetDistance(Raycast.Direction.Right), lenght); }
/// <summary> /// Updates inputs for the network from the sensors. /// </summary> void UpdateInputs() { List <float> inputs = new List <float>(_neuralNetwork.inputs.Count); float lenght = ConstHolder.UNIT_LINE_OF_SIGHT; inputs.Add(Normalise(_raycast.GetDistance(Raycast.Direction.Left), lenght)); inputs.Add(Normalise(_raycast.GetDistance(Raycast.Direction.FrontFrontLeft), lenght)); inputs.Add(Normalise(_raycast.GetDistance(Raycast.Direction.FrontLeft), lenght)); inputs.Add(Normalise(_raycast.GetDistance(Raycast.Direction.Front), lenght)); inputs.Add(Normalise(_raycast.GetDistance(Raycast.Direction.FrontRight), lenght)); inputs.Add(Normalise(_raycast.GetDistance(Raycast.Direction.FrontFrontRight), lenght)); inputs.Add(Normalise(_raycast.GetDistance(Raycast.Direction.Right), lenght)); _neuralNetwork.inputs = inputs; _neuralNetwork.Evaluate(); }