Пример #1
0
        private void RamSearch(string[] sourceFileLines)
        // Overloop alle lijnen maak hiervan RAM Objecten
        {
            for (int i = 0; i < sourceFileLines.Length; i++)
            // Alle regels uitlzen en
            {
                // Loop Line
                string line = sourceFileLines[i];

                if (line.IndexOf(".ram") >= 0)
                // ram staat in deze regel
                {
                    if (_ramStartPointer == -1)
                    // Eerste ram File
                    {
                        _ramStartPointer = i - 3;
                    }

                    // Laatste ram Pointer Instellen
                    _ramEndPointer = i;

                    // Ram Point aanmaken
                    RamPoint rp = new RamPoint(i - 2, sourceFileLines[i - 2], sourceFileLines[i - 1], sourceFileLines[i], sourceFileLines[i - 6], sourceFileLines[i - 5], sourceFileLines[i - 4]);

                    // VOeg punt toe aan lijst
                    OrgRampaPunten.Add(rp);
                }
                else
                // RAM staat niet in deze regel
                {
                }
            }
        }
Пример #2
0
        private void OptimizeTsp()
        // Optimaliseer volgorde van punten
        {
            if (OrgRampaPunten != null)
            {
                if (OrgRampaPunten.Count != 0)
                {
                    // Maak lijst aan met X/Y punten voor TSP optimizer
                    double[,] tspValues = new double[2, OrgRampaPunten.Count + 1];

                    // START PUNTEN
                    int pointCounter = 0;
                    foreach (RamPoint ram in OrgRampaPunten)
                    {
                        // Het HOMAG eerste punt blijft ook het eerste punt

                        // EIND PUNT
                        tspValues[0, pointCounter] = ram.X__P41; // X EINDE
                        tspValues[1, pointCounter] = ram.Y__P42; // Y EINDE

                        pointCounter++;
                    }

                    // EIND PUNT
                    tspValues[0, pointCounter] = 3050 * 1000; // X EINDE ==> Eindpunt voor de berekening ligt factor 1000 buiten het bereik van de X-As.
                    tspValues[1, pointCounter] = 1250 / 2;    // Y EINDE ==> Eindpunt ligt centraal in de Y richting

                    // Resultaat na optimalisatie
                    double[,] result = Tsp.do2opt(tspValues);


                    // Zoek naar punten in resultaat datebl en voeg deze toe

                    int joske = result.GetLength(1);

                    for (int i = 0; i < result.GetLength(1) - 1; i++)
                    // Eerste en laatste punt niet verwerken
                    // START op 1 ipv 0
                    // EINDE op lengte-1
                    {
                        double xValue = result[0, i];
                        double yValue = result[1, i];

                        // Zoek dit punt in lijst met originele punten
                        RamPoint ormp = OrgRampaPunten.Where(x => x.X__P41 == xValue && x.Y__P42 == yValue).FirstOrDefault();

                        if (ormp != null)
                        // Er is een rampa punt gevonden, voeg dit toe in de resultaten lijsten
                        {
                            NewRampaPunten.Add(ormp);
                        }
                    }
                }
            }
        }