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 { } } }
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); } } } } }