Exemple #1
0
        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;
        }
Exemple #2
0
        /// <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);
            }
        }