예제 #1
0
        public void Load(int inputCount, int outputCount, IBitInput logic)
        {
            InputCount  = inputCount;
            OutputCount = outputCount;

            neurons = new List <INeuron>(outputCount);
            int neuronLogicLength = logic.Length / outputCount;

            for (int i = 0; i < outputCount; i++)
            {
                DigitalNeuron neuron      = new DigitalNeuron();
                IBitInput     neuronLogic = logic.Copy(i * neuronLogicLength, neuronLogicLength);
                neuron.Load(inputCount, neuronLogic);
                neurons.Add(neuron);
            }
        }
예제 #2
0
        public void Load(int inputCount, IBitInput logic)
        {
            InputCount  = inputCount;
            OutputCount = 1;

            logicOperations = new LogicOperation[inputCount];

            // Load neuron state
            InitValue = logic[0];
            Negative  = logic[1];

            for (int inputNr = 0; inputNr < inputCount; inputNr++)
            {
                IBitInput operationBits = logic.Copy(Settings.NeuronStateBitCount + inputNr * Settings.LogicOperationBitCount, Settings.LogicOperationBitCount);
                logicOperations[inputNr] = Settings.GetLogicOperation(operationBits);
            }
        }