예제 #1
0
        /// <summary>
        /// Поиск кратчайшего маршрута. Помещает его в BestCombinationArray
        /// </summary>
        public void GetBestRoute()
        {
            int n = QpointsOfRoute;//this.CountPointsOfRoute()+1;

            if (t == n - 1)
            {
                ChangeToRoute();
                if (BestCombinationArray.Count == 0)//если еще не заполнен
                {
                    BestCombinationArray.Add(ArrayPointsTemp);
                    _bestCombinationArrayCount = this.BuildRouteByPoints(BestCombinationArray[0]).Count();
                }
                else
                {
                    CompareWithBestRoutes();
                }
                //Route1._bestCombinationArray.Add(combinationArr);
                //Route1.b.Add(b1);//проверка
            }
            else
            {
                for (int j = t; j < n - 1; ++j)
                {
                    int c = a[t];//обмен
                    a[t] = a[j];
                    a[j] = c;
                    t++;
                    this.GetBestRoute(); //Рекурсивный вызов
                    t--;
                    int d = a[t];
                    a[t] = a[j];
                    a[j] = d;
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Сравнение маршрутов и отбор минимального
        /// </summary>
        /// <param name="CompareArr"></param>
        private void CompareWithBestRoutes()
        {
            int newroute  = this.BuildRouteByPoints(ArrayPointsTemp).Count();
            int bestroute = _bestCombinationArrayCount;//this.BuildRouteByPoints(BestCombinationArray[0]).Count();

            if (newroute < bestroute)
            {//вставляем новое минимальное значение комбинации
                BestCombinationArray.Clear();
                BestCombinationArray.Add(ArrayPointsTemp);
                _bestCombinationArrayCount = this.BuildRouteByPoints(BestCombinationArray[0]).Count();
            }
            //           применить при оценке конкурентных маршрутов
            //           if (newroute == bestroute)
            //           {
            //               Route._bestCombinationArray.Add(ArrayPointsTemp);
            //           }
        }