private WinningNeuronModel winningNeuron(Position iteration, int counter, bool isDisabler, int IterationDisable, int CycleQty)
        {
            WinningNeuronModel winningNeuron = new WinningNeuronModel()
            {
                Value = null, Id = 0
            };

            neurons.ForEach(n =>
            {
                if (isDisabler && (CycleQty == 0 || counter < CycleQty) && n.StopCount <= IterationDisable && n.StopCount > 0)
                {
                    n.StopCount++;
                }
                else
                {
                    n.StopCount = 0;
                    var d       = SimiliarityCalc(n.Position, iteration) + n.Balance;


                    if (winningNeuron.Value == null || d < winningNeuron.Value)
                    {
                        winningNeuron.Value = d;
                        winningNeuron.Id    = n.Id;
                    }
                }
            });
            return(winningNeuron);
        }
        public void Calc(double LearnRation, int balance = 0, bool isDisabler = false, int IterationDisable = 0, int CycleQty = 0)
        {
            int counter = 0;

            dataList.ForEach(it => {
                WinningNeuronModel winningNeuron = this.winningNeuron(it, counter, isDisabler, IterationDisable, CycleQty);
                GetNewWeight(winningNeuron, it, LearnRation, balance);
                counter++;
            });
        }
        private void GetNewWeight(WinningNeuronModel winningNeuron, Position iteration, double LearnRation, int balance)
        {
            var position = neurons.Find(p => p.Id == winningNeuron.Id).Position;

            position.X = (int)Math.Round(position.X + (LearnRation * (iteration.X - position.X)), 3);
            position.Y = (int)Math.Round(position.Y + (LearnRation * (iteration.Y - position.Y)), 3);

            neurons.Find(p => p.Id == winningNeuron.Id).Position = new Position()
            {
                X = position.X, Y = position.Y
            };
            neurons.Find(p => p.Id == winningNeuron.Id).Balance  += balance;
            neurons.Find(p => p.Id == winningNeuron.Id).StopCount = 1;
        }