public override void AssignLevel() { var Lj = double.MaxValue; var Lh = 0.0; if (ListOfInputChannels.Count() == 0) { Lh = Layer.LayerDown.LayerNumber; } else { foreach (var inputChannel in ListOfInputChannels) { var LhTemp = 0.0; if (inputChannel.XCellOrigin == null) { LhTemp = Layer.LayerNumber - 1; } else { LhTemp = inputChannel.XCellOrigin.Li; } if (LhTemp > Lh) { Lh = LhTemp; } } } if (ListOfOutputChannels.Count == 0) { Lj = Layer.LayerUp.LayerNumber; } else { foreach (var outputChannel in ListOfOutputChannels) { var LjTemp = 0.0; if (outputChannel.XCellDestiny == null) { LjTemp = Layer.LayerNumber + 1; } else { LjTemp = outputChannel.XCellDestiny.Li; } if (LjTemp < Lj) { Lj = LjTemp; } } } Li = (Lj + Lh) / 2; }
/// <summary> /// Hacer la atomización o la autogénesis al leer los datos de entrada para generar la estructura que se usará para hacer SendOutputData /// </summary> public override void GetInputData() //Diastole { var splittedIds = Id.Split('&'); var concatenatedRestingIDs = string.Empty; var idsOfActiveChannels = string.Empty; var listOfActiveChannels = ListOfInputChannels.Where(inputChannel => inputChannel.IsActive).ToList(); foreach (var inputChannel in listOfActiveChannels) { var patternToSendToAnXCell = inputChannel.PatternToSendToAnXCell; foreach (var splittedId in splittedIds) { inputChannel.PatternToSendToAnXCell = inputChannel.PatternToSendToAnXCell.Trim(splittedId.ToCharArray()).Replace("&&", string.Empty); } if (!string.IsNullOrEmpty(inputChannel.PatternToSendToAnXCell) && !string.IsNullOrEmpty(concatenatedRestingIDs)) { concatenatedRestingIDs = $"{concatenatedRestingIDs}{inputChannel.PatternToSendToAnXCell}&"; } if (inputChannel.IsActive && !string.IsNullOrEmpty(inputChannel.XCellOrigin.Id) && !string.IsNullOrEmpty(idsOfActiveChannels)) { idsOfActiveChannels = $"{idsOfActiveChannels}{inputChannel.XCellOrigin.Id}&"; } } concatenatedRestingIDs = concatenatedRestingIDs.TrimEnd('&'); idsOfActiveChannels = idsOfActiveChannels.TrimEnd('&'); if (listOfActiveChannels.Count() == ListOfInputChannels.Count()) //Han llegado patrones por todos los canales { if (concatenatedRestingIDs.Length == 0) //Se han eliminado todos los IDs en los InP { var kk = 0; //AuxPattern = string.Empty; //AuxIsActive = false; //double minValue = double.MaxValue; //foreach (var inputChannel in ListOfInputChannels) //{ // if (inputChannel.IsActive) // { // AuxIsActive = true; // if (inputChannel.Aij < minValue) // { // minValue = inputChannel.Aij; // } // if (!string.IsNullOrEmpty(inputChannel.PatternToSendToAnXCell)) // { // AuxPattern = $"{AuxPattern}{inputChannel.PatternToSendToAnXCell}|"; // } // } //} //AuxPattern = AuxPattern.TrimEnd('|'); //IN = minValue; } else //Quedan IDs en los InP { var splittedConcatenatedRestingIDs = concatenatedRestingIDs.Split('&'); var messageWasSent = false; foreach (var outputChannel in ListOfOutputChannels) { foreach (var restingID in splittedConcatenatedRestingIDs) { if (outputChannel.XCellDestiny.Id.Contains(restingID)) { //calcular la AND de los valores de entrada y dejar el valor preparado //IN= //foreach messageWasSent = true; } } } if (!messageWasSent) { var kk = 0; //Autogenesis(concatenatedRestingIDs); } } } else //Han llegado patrones sólo por algunos canales { var kk = 0; //Atomice(idsOfActiveChannels); } }