private void StartAlgorithm(int vertexNumber, int ltmLenght, int stmLenght, int endCryt, int noChangeFor, double costLessThan, int?numberOfLoop) { string currentDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string pathG1, pathG2, pathResult; if (numberOfLoop != null) { pathG1 = currentDir + "\\g1\\graph" + numberOfLoop; pathG2 = currentDir + "\\g2\\graph" + numberOfLoop; pathResult = currentDir + "\\result\\res" + numberOfLoop; } else { pathG1 = currentDir + "\\g1\\graph"; pathG2 = currentDir + "\\g2\\graph"; pathResult = currentDir + "\\result\\res"; } Graph Graph1 = GraphGenerator.generateGraph(vertexNumber); WMH.Model.FileOperation.FileOperationGraph.SaveToFile(pathG1, Graph1.Vertexes); Graph Graph2 = GraphGenerator.generateGraph(vertexNumber); WMH.Model.FileOperation.FileOperationGraph.SaveToFile(pathG2, Graph2.Vertexes); LongTermMemory ltm = new LongTermMemory(ltmLenght); TabuList tl = new TabuList(stmLenght); IterationStopCriteria isc = new IterationStopCriteria(endCryt); NoChangesStopCriteria ncsc = new NoChangesStopCriteria(noChangeFor); CostStopCriteria csc = new CostStopCriteria(costLessThan); WMH.TabuSearch.CostFinder cf = new TabuSearch.CostFinder(); WMH.TabuSearch.NeighbourFinder nf = new TabuSearch.NeighbourFinder(cf, ltm); WMH.TabuSearch.Implementation.AspirationCriteria ac = new TabuSearch.Implementation.AspirationCriteria(cf); WMH.TabuSearch.TabuSearch alg = new TabuSearch.TabuSearch(nf, tl, ltm, cf, ac, isc, ncsc, csc); System.Diagnostics.Stopwatch stopWatch = System.Diagnostics.Stopwatch.StartNew(); IList <Edge> result = alg.FindSolution(Graph1, Graph2); stopWatch.Stop(); WMH.Model.FileOperation.FileOperationResult.SaveResultToFile(result, pathResult, stopWatch); }
private void BackgroundWorkerDoWork(object sender, EventArgs e) { result = alg.FindSolution(Graph1, Graph2); costsList = alg.costsList; }