示例#1
0
        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));
        }
示例#2
0
        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);
        }
示例#3
0
        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());
        }
示例#4
0
 private UIElement PartitionCanvas(GraphPartitionSolution solution, GraphVisual originalGraphVisual, Brush canvasBackground, Dictionary <PartitionType, (Brush, Brush)> lineEdgeBrush, Brush defaultLineBrush)