private void UpdateProgressBar(IterationArgument e)
 {
     this.Invoke((MethodInvoker) delegate
     {
         progressBar.Value = e.Value;
     });
 }
Exemple #2
0
        public MathMatrix <decimal> Compute()
        {
            var progressVal = new IterationArgument();

            progressVal.Value = iterations;
            resetProgressBar?.Invoke(progressVal);
            StartWriter();
            for (int i = 0; i < iterations; i++)
            {
                Ants.ForEach(ant =>
                {
                    var t = new Thread(new ThreadStart(() => ant.Move(this)));
                    t.Start();
                    t.Join();
                });
                //Ants.ForEach(ant => ant.Move(this));
                Ants.ForEach(ant => ant.LeaveSense(this));
                DecreaseSenseOnNodes();
                ReportIterationStatusToFile();

                progressVal.Value = i;
                WriteData(i, signals.Multiply(FindBestSolution().Matrix.ConvertResultToVelociti()).AverageStatisticError(times));
                updateProgressBar?.Invoke(progressVal);
            }

            var bestNode = FindBestSolution();

            writer.Close();
            return(bestNode.Matrix);
        }
 private void ResetProgressBar(IterationArgument e)
 {
     this.Invoke((MethodInvoker) delegate
     {
         progressBar.Maximum = e.Value;
         progressBar.Step    = 1;
         progressBar.Value   = 0;
     });
 }
        private void Compute()
        {
            var progressVal = new IterationArgument();

            start();
            progressVal.Value = iterations;
            resetProgressBar?.Invoke(progressVal);
            result = new MathMatrix <decimal>(1, signals.Width);
            if (!randomStart)
            {
                decimal averageVelocity = 0;

                for (int i = 0; i < times.Height; i++)
                {
                    averageVelocity += signals.RowSum(i) / times[i, 0];
                }

                averageVelocity = averageVelocity / times.Height;

                averageVelocity -= averageVelocity - (int)averageVelocity;
                averageVelocity -= averageVelocity % 100;
                for (int i = 0; i < result.Height; i++)
                {
                    result[i, 0] = averageVelocity;
                }
            }
            else
            {
                result.PutRandomValuesIntoMatrix(300, 2000, 2);
            }

            result = result.ConvertResultToVelociti();

            var AT = signals.Transpose();

            var C = new MathMatrix <decimal>(signals.Width, signals.Width);

            for (int i = 0; i < C.Width; i++)
            {
                C[i, i] = signals.ColumnSum(i) == 0 ? 0 : 1 / signals.ColumnSum(i);
            }

            var R = new MathMatrix <decimal>(signals.Height, signals.Height);

            for (int i = 0; i < R.Width; i++)
            {
                R[i, i] = signals.RowSum(i) == 0 ? 0 : 1 / signals.RowSum(i);
            }

            var CATR = C.Multiply(AT).Multiply(R);

            StartWriter();
            for (iter = 0; iter < iterations; iter++)
            {
                var m1 = signals.Multiply(result);
                var m2 = times.Subtract(m1);
                var m3 = CATR.Multiply(m2);
                result = result.Add(m3);

                progressVal.Value = iter;
                WriteData(iter, signals.Multiply(result).AverageStatisticError(times));
                updateProgressBar?.Invoke(progressVal);
            }

            ConvertResultToVelociti();
            writer.Close();
            stop();
            var tmp      = DateTime.Now;
            var filename = ("\\" + "Sirt_Result" + tmp.ToShortDateString() + tmp.ToShortTimeString()).Replace('.', '_').Replace(':', '_') + ".txt";

            result.PrinttoFile(filename);
        }