Ejemplo n.º 1
0
        /// <summary>
        /// Atomización
        /// </summary>
        /// <param name="idSequence">id=id1&id2&...&idn</param>
        public void Atomice(string idSequence)
        {
            var ids = idSequence.Split('&');

            if (ids.Count() >= HyperParameters.W)
            {
                var newXCellAND = ((ANDLayer)Layer).CreateAnXCellANDGivenItsIDInTemporalList(idSequence);
                var outputChannelFornewXCeldaANDConnectedToInputOfOldXCellAND = new Channel();
                outputChannelFornewXCeldaANDConnectedToInputOfOldXCellAND.XCellDestiny = this;
                outputChannelFornewXCeldaANDConnectedToInputOfOldXCellAND.XCellOrigin  = newXCellAND;
                newXCellAND.ListOfOutputChannels.Add(outputChannelFornewXCeldaANDConnectedToInputOfOldXCellAND);
                foreach (var id in ids)
                {
                    var inputChannel = ListOfInputChannels.FirstOrDefault(channel => channel.XCellOrigin.Id == id);
                    if (inputChannel != null)
                    {
                        inputChannel.XCellDestiny = newXCellAND;
                        newXCellAND.ListOfInputChannels.Add(inputChannel);
                        ListOfInputChannels.Remove(inputChannel); //Al eliminar este inputChannel de la lista, se elimina tb el inputChannel???
                    }
                }

                newXCellAND.AssignLevel();
                ListOfInputChannels.Add(newXCellAND.ListOfOutputChannels[0]);
            }
        }
        public void AssignPinToInputChannelsOfTheXCell(Pin pin)
        {
            var channel = new Channel(pin);

            channel.XCellDestiny = this;
            ListOfInputChannels.Add(channel);
        }
 public void AssignChannelsToInputChannelsOfTheXCell(List <Channel> listOfChannels)
 {
     foreach (var channel in listOfChannels)
     {
         channel.XCellDestiny = this;
         ListOfInputChannels.Add(channel);
     }
 }
 public void AssignPinsToInputChannelsOfTheXCell(List <Pin> listOfPins)
 {
     foreach (var pin in listOfPins)
     {
         var channel = new Channel(pin);
         channel.XCellDestiny = this;
         ListOfInputChannels.Add(channel);
     }
 }
        public XCellORExplode(string id, Layer layer) : base(id, layer)
        {
            var newInputChannel = new Channel();

            newInputChannel.XCellDestiny = this;
            var channelForInputFoundInLayerAsInputChannel = layer.ListOfInputChannels.FirstOrDefault(channel => channel.XCellOrigin.Id == id);

            if (channelForInputFoundInLayerAsInputChannel != null)
            {
                newInputChannel.XCellOrigin = channelForInputFoundInLayerAsInputChannel.XCellOrigin;
            }
            ListOfInputChannels.Add(newInputChannel);

            var newOutputChannel = new Channel();

            newOutputChannel.XCellOrigin = this;
            ListOfOutputChannels.Add(newOutputChannel);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="XCellInput"/> class.
        /// </summary>
        /// <param name="id">id=id1</param>
        /// <param name="layer">The layer.</param>
        public XCellInput(string id, Layer layer) : base(id, layer)
        {
            var minMaxRValues = ((INPUTLayer)Layer).MinAndMaxValuesForInputHeaderID[id];

            MaxInputValue   = minMaxRValues.maxValue;
            MinInputValue   = minMaxRValues.minValue;
            R               = minMaxRValues.R;
            CounterOfValues = new uint[R];
            if (!layer.ListOfInputChannels.Any(channel => channel.XCellOrigin?.Id == id))
            {
                var newInputChannel = new Channel();
                newInputChannel.XCellDestiny = this;
                ListOfInputChannels.Add(newInputChannel);

                var newOutputChannel = new Channel();
                newOutputChannel.XCellOrigin = this;
                ListOfOutputChannels.Add(newOutputChannel);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="XCellOR"/> class.
        /// </summary>
        /// <param name="idSequence">id=id1|id2|...|idn</param>
        /// <param name="layer">The layer.</param>
        public XCellOR(string idSequence, Layer layer) : base(idSequence, layer)
        {
            var ids = idSequence.Split('|');

            foreach (var id in ids)
            {
                var newInputChannel = new Channel();
                newInputChannel.XCellDestiny = this;
                var channelForInputFoundInLayerAsInputChannel = layer.ListOfInputChannels.FirstOrDefault(channel => channel.XCellOrigin.Id == id);
                if (channelForInputFoundInLayerAsInputChannel != null)
                {
                    newInputChannel.XCellOrigin = channelForInputFoundInLayerAsInputChannel.XCellOrigin;
                }
                ListOfInputChannels.Add(newInputChannel);
            }

            var newOutputChannel = new Channel();

            newOutputChannel.XCellOrigin = this;
            ListOfOutputChannels.Add(newOutputChannel);
        }
 public void AssignChannelToInputChannelsOfTheXCell(Channel channel)
 {
     channel.XCellDestiny = this;
     ListOfInputChannels.Add(channel);
 }