/// <summary>
        /// erstellt die Liste aller Verbindungen, anhand aller Einträge
        /// in der CTSPPointList
        /// </summary>
        public void generateFromPointList(CTSPLibFileParser.E_EDGE_WEIGHT_TYPE edgeWeightType)
        {
            if (edgeWeightType == CTSPLibFileParser.E_EDGE_WEIGHT_TYPE.E_EXPLICIT)
            {
                throw new Exception("Unbekannter Fehler in der Verarbeitung.");
            }

            // jetzt kann die Liste neu gefüllt werden
            CTSPPointList pointList = CTSPPointList.getInstance();

            // die Liste neu initialiseren
            initList(pointList.length());

            for (int originCityIndex = 0; originCityIndex < pointList.length(); originCityIndex++)
            {
                for (int destinationCityIndex = originCityIndex + 1; destinationCityIndex < pointList.length(); destinationCityIndex++)
                {
                    addConnection(new CConnection(pointList.getPoint(originCityIndex), pointList.getPoint(destinationCityIndex), edgeWeightType));

                    Debug.WriteLineIf(length() % 100000 == 0, length());
                }
                // Zeit für die GC lassen
                // Sonst gibt es Fehler, weil diese nicht genug Zeit bekommt ihr Ding zu machen
                System.Threading.Thread.Sleep(1);
            }

            Debug.WriteLine("Verbindungen erstellt: " + length());
        }
示例#2
0
        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name="tspPoint1">Punkt 1 der Verbindung</param>
        /// <param name="tspPoint2">Punkt 2 der Verbindung</param>
        /// <param name="distanceCalculation">Gibt an auf welche Art die Entfernung zwischen den Punkten berechnet werden soll</param>
        /// <param name="initialPheromone">Pheromon das die Verbindung von Beginn an haben soll</param>
        public CConnection(CTSPPoint tspPoint1, CTSPPoint tspPoint2, CTSPLibFileParser.E_EDGE_WEIGHT_TYPE distanceCalculation, float initialPheromone = 0)
        {
            mTSPPoint1           = tspPoint1;
            mTSPPoint2           = tspPoint2;
            mDistanceCalculation = distanceCalculation;

            if (initialPheromone <= 0)
            {
                mPheromone = MIN_PHEROMONE;
            }
            else
            {
                mPheromone = initialPheromone;
            }

            calculateDistance();

            // es wurde eine Verbindung erzeugt .. also ein Schritt erfolgreich abgearbeteitet
            CProgressManager.stepDone();
        }