コード例 #1
0
        public NetworkContainer CloneNetwork(float errorChance)
        {
            IInput[]   newInputs            = new IInput[Inputs.Length];
            IOutput[]  newOutputs           = new IOutput[Outputs.Length];
            NodeData[] newHiddenLayer       = new NodeData[HiddenLayer.Length];
            NodeData[] newHiddenOutputLayer = new NodeData[HiddenOutputLayer.Length];

            for (int i = 0; i < Inputs.Length; i++)
            {
                newInputs[i] = ((CreatureSensor)Inputs[i]).ImperfectCopy(null, errorChance, -0.2f, 0.2f);
            }
            for (int i = 0; i < Outputs.Length; i++)
            {
                newOutputs[i] = ((CreatureAction)Outputs[i]).ImperfectCopy(null, errorChance, -0.2f, 0.2f);
            }
            for (int i = 0; i < HiddenLayer.Length; i++)
            {
                newHiddenLayer[i] = HiddenLayer[i];
            }
            for (int i = 0; i < HiddenOutputLayer.Length; i++)
            {
                newHiddenOutputLayer[i] = HiddenOutputLayer[i];
            }

            var newNetwork = new NetworkContainer(Inputs, HiddenLayer, HiddenOutputLayer, Outputs);

            //newNetwork.ModifyInputs();
            //newNetwork.ModifyOutputs();
            //newNetwork.ModifyHiddenLayers();

            return(newNetwork);
        }
コード例 #2
0
    public float GetNetworkEnergy(NeuralNetwork.NetworkContainer network)
    {
        var numSensors     = network.Inputs.Length;
        var numActions     = network.HiddenLayer.Length;
        var numHiddenNodes = network.Outputs.Length;

        return(GetNetworkEnergy(numSensors, numActions, numHiddenNodes));
    }
コード例 #3
0
 public int AddNetwork(NetworkContainer network)
 {
     return(AddNetwork(network.Inputs, network.Outputs, network.HiddenLayer, network.HiddenOutputLayer));
 }