public static void generateTSP() { try { CProgressManager.setStepsConnections(mNumPoints); // erstmal alles altes löschen CTSPPointList.getInstance().removeAll(); CConnectionList.getInstance().removeAll(); GC.Collect(); CMemoryTester.fitMemory(mNumPoints); generatePoints(); CConnectionList.getInstance().generateFromPointList(CTSPLibFileParser.E_EDGE_WEIGHT_TYPE.E_EUC_2D); } catch (CInsufficientMemoryException memoryException) { if (memoryException.getType() == CInsufficientMemoryException.E_EXCEPTION_TYPE.E_32_BIT_ERROR) { MessageBox.Show("Um ein Projekt mit der angegeben größe erzeugen zu können, benötigen Sie ca. " + memoryException.getMemoryNeeded() + " MByte. 32-Bit-Anwendungen können aber maximal " + memoryException.getMemoryAvailable() + " MByte verwalten. " + "Bitte verwenden sie die 64-Bit Version oder wählen Sie ein geringe Anzahl an Punkten.", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Auf ihrem System stehen noch " + memoryException.getMemoryAvailable() + " MByte zur Verfügung. Es werden aber ca. " + memoryException.getMemoryNeeded() + " MByte benötigt. " + "Wenn Sie dieses Projekt mit dieser Anzahl von Punkten erstellen möchten stellen Sie Bitte mehr RAM zur Verfügung.", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception exception) { MessageBox.Show(exception.Message, "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } CProgressManager.setFinished(); }
private void openTSPFile() { CIterationList.getInstance().Clear(); // Open the selected file to read. System.IO.Stream myResult = openTspFileDialog1.OpenFile(); string tspFilePath = openTspFileDialog1.FileName; string tourFilePath = tspFilePath.Substring(0, tspFilePath.LastIndexOf('.')) + ".opt.tour"; try { // zuerst mal das TSPfile parsen CTSPLibFileParser tspParser = new CTSPLibFileParser(myResult); tspParser.fillTSPPointList(); // prüfen ob eine Datei mit der optimalen Tour existiert if (File.Exists(tourFilePath) == true) { // Dann die Optimale Tour parsen FileStream optTourFile = File.Open(tourFilePath, FileMode.Open); CTSPLibFileParser tourParser = new CTSPLibFileParser(optTourFile); tourParser.getOptTour(); } else { CAntAlgorithmParameters.getInstance().optTour = null; } } catch (ThreadAbortException) { // wir machen nichts .. das ist nur zum verhindern das eine Meldung angezeigt wird } catch (CInsufficientMemoryException exception) { if (exception.getType() == CInsufficientMemoryException.E_EXCEPTION_TYPE.E_32_BIT_ERROR) { MessageBox.Show("Um dieses Projekt laden zu können werden ca. " + exception.getMemoryNeeded() + " MByte benötigt. 32-Bit-Anwendungen können aber maximal " + exception.getMemoryAvailable() + " MByte verwalten. " + "Bitte verwenden sie die 64-Bit Version oder öffnen Sie ein kleineres Projekt.", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("Auf ihrem System stehen noch " + exception.getMemoryAvailable() + " MByte zur Verfügung. Es werden aber ca. " + exception.getMemoryNeeded() + " MByte benötigt. " + "Wenn Sie dieses Projekt laden möchten stellen Sie Bitte mehr RAM zur Verfügung.", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception exception) { MessageBox.Show(exception.Message, "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error); CAntAlgorithmParameters.getInstance().optTour = null; } finally { // stream wieder schließen myResult.Close(); } // Schaltfläche der Stoppkriterien, Lösung gefunden, (de)aktivieren this.Invoke(new Action(setStopCriteriaSolutionFound)); // Länge der optimalen Tour anzeigen tOptimalerPfad.Invoke(new Action(delegate() { if (CAntAlgorithmParameters.getInstance().optTour != null) { tOptimalerPfad.Text = CAntAlgorithmParameters.getInstance().optTour.getTourLength().ToString(); } else { tOptimalerPfad.Text = ""; } })); // neu Rendern mRenderWindow.Invoke(new Action(delegate() { mRenderWindow.initViewPort(); mRenderWindow.Refresh(); })); CProgressManager.setFinished(); }