public override ReplState Oparate() { var solutionPath = ResultsDirPath.CombinePathWith("BranchAndBound_" + DateTime.Now.Ticks); Directory.CreateDirectory(solutionPath); Graph.WriteToFile(solutionPath.CombinePathWith("Graph.txt")); var branchAndBoundSettings = DefaultSettings ? BranchAndBoundSettings <UpperBoundScheme> .Default : GetSettings(); var branchAndBound = new BranchAndBound <PartialGraphPartition, GraphPartitionSolution, UpperBoundScheme>(PartialGraphPartition.CreateEmpty(Graph, Random)); var killTask = DistributedInt.Init(); branchAndBound.RunAsync(GraphPartitionSolution.GenerateRandom(Graph), branchAndBoundSettings, killTask, ReportSolution(solutionPath), Random); return(new PendEndingReplState(killTask)); }
private void SetSolution(GraphPartitionSolution solution) { ResultTextBlock.Text = solution.NegativePrice.ToString(); var canvasBackground = SolutionBackground.Fill; var defaultLine = new SolidColorBrush(Colors.DarkGray) { Opacity = 0.3 }; var brushesDictionary = new Dictionary <PartitionType, (Brush, Brush)>(); brushesDictionary[PartitionType.BigPartition] = (Brushes.DarkBlue, Brushes.Blue); brushesDictionary[PartitionType.SmallPartition1] = (Brushes.DarkViolet, Brushes.Plum); brushesDictionary[PartitionType.SmallPartition2] = (Brushes.Turquoise, Brushes.MediumTurquoise); BestSolutionViewBox.Child = PartitionCanvas(solution, GraphVisual, canvasBackground, brushesDictionary, defaultLine); }
static void Main(string[] args) { Colorful.Console.WriteAscii("Graph Partiton", Color.CornflowerBlue); //Repl.Create().Run(); var amountOfNodes = 24; var graph = GraphBuilder.CreateSumGraph(amountOfNodes); var bAndB = new BranchAndBound <PartialGraphPartition, GraphPartitionSolution, UpperBoundScheme>( PartialGraphPartition.CreateEmpty(graph, rnd)); bAndB.Run(GraphPartitionSolution.GenerateRandom(graph), BranchAndBoundSettings <UpperBoundScheme> .Default, DistributedInt.Init(), _ => {}, rnd); Console.WriteLine("Amount of solutions: " + bAndB.AmountOfSolutions); Console.WriteLine("Expensions: "); Console.WriteLine(bAndB.LevelExpensions.AsString()); Console.WriteLine("Cutoffs: "); Console.WriteLine(bAndB.LevelCutoffs.AsString()); }
private UIElement PartitionCanvas(GraphPartitionSolution solution, GraphVisual originalGraphVisual, Brush canvasBackground, Dictionary <PartitionType, (Brush, Brush)> lineEdgeBrush, Brush defaultLineBrush)