/// <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); }
/// <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); } }
/// <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); }