private void LoadColumnChartData()
        {
            Point[]       n1Points      = GenerateRandomData.GenerateRandomPoints(N1);
            List <double> n1Differences = new List <double>();

            for (int i = 0; i < n1Points.Length; i++)
            {
                List <List <Point> > n1Trajectories = GenerateRandomData.GenerateRandomTrajectoriesByStartPoint(Limit, n1Points[i], n1Points);
                double edgeValue1 = EdgeValue.GetEdgeValue(n1Points[i].Radius, n1Points[i].Angle);
                double difference = GetSolutionByTrajectories(n1Trajectories);
                n1Differences.Add(Math.Round(Math.Abs(difference - edgeValue1), 3));
            }
            double difference1 = GetAverageDifference(n1Differences);

            Point[]       n2Points      = GenerateRandomData.GenerateRandomPoints(N2);
            List <double> n2Differences = new List <double>();

            for (int i = 0; i < n2Points.Length; i++)
            {
                List <List <Point> > n2Trajectories = GenerateRandomData.GenerateRandomTrajectoriesByStartPoint(Limit, n2Points[i], n2Points);
                double edgeValue2 = EdgeValue.GetEdgeValue(n2Points[i].Radius, n2Points[i].Angle);
                double difference = GetSolutionByTrajectories(n2Trajectories);
                n2Differences.Add(Math.Abs(difference - edgeValue2));
            }
            double difference2 = GetAverageDifference(n2Differences);

            Point[]       n3Points      = GenerateRandomData.GenerateRandomPoints(N3);
            List <double> n3Differences = new List <double>();

            for (int i = 0; i < n3Points.Length; i++)
            {
                List <List <Point> > n3Trajectories = GenerateRandomData.GenerateRandomTrajectoriesByStartPoint(Limit, n3Points[i], n3Points);
                double edgeValue3 = EdgeValue.GetEdgeValue(n3Points[i].Radius, n3Points[i].Angle);
                double difference = GetSolutionByTrajectories(n3Trajectories);
                n3Differences.Add(Math.Abs(difference - edgeValue3));
            }
            double difference3 = GetAverageDifference(n3Differences);

            Point[]       n4Points      = GenerateRandomData.GenerateRandomPoints(N4);
            List <double> n4Differences = new List <double>();

            for (int i = 0; i < n4Points.Length; i++)
            {
                List <List <Point> > n4Trajectories = GenerateRandomData.GenerateRandomTrajectoriesByStartPoint(Limit, n4Points[i], n4Points);
                double edgeValue4 = EdgeValue.GetEdgeValue(n4Points[i].Radius, n4Points[i].Angle);
                double difference = GetSolutionByTrajectories(n4Trajectories);
                n4Differences.Add(Math.Abs(difference - edgeValue4));
            }
            double difference4 = GetAverageDifference(n4Differences);

            MessageBox.Show(difference1.ToString());
            ((ColumnSeries)dataChart.Series[0]).ItemsSource = new KeyValuePair <int, double>[]
            {
                new KeyValuePair <int, double> (N1, difference1),
                new KeyValuePair <int, double> (N2, difference2),
                new KeyValuePair <int, double> (N3, difference3),
                new KeyValuePair <int, double> (N4, difference4)
            };
        }
        private double GetSolutionByTrajectories(List <List <Point> > trajectories)
        {
            double solution = 0;

            foreach (var trajectory in trajectories)
            {
                Point lastPoint = trajectory.LastOrDefault();
                solution += EdgeValue.GetEdgeValue(lastPoint.Radius, lastPoint.Angle);
            }

            return(solution / trajectories.Count);
        }
        private void ShowResultsButton_Click(object sender, RoutedEventArgs e)
        {
            double solution = 0;

            foreach (var trajectory in AllTrajectories)
            {
                Point lastPoint = trajectory.LastOrDefault();

                solution += EdgeValue.GetEdgeValue(lastPoint.Radius, lastPoint.Angle);
            }

            Point  firstPoint    = AllTrajectories.FirstOrDefault().FirstOrDefault();
            double functionValue = EdgeValue.GetEdgeValue(firstPoint.Radius, firstPoint.Angle);

            MessageBox.Show(string.Format("Solution: {0} \nFunction: {1}", solution / AllTrajectories.Count, functionValue));
        }