public void UnsolvableMapTest()
        {
            BayesianSpaceGenerator gen = new BayesianSpaceGenerator();

            gen.DungeonGraph = new SpaceGraph();

            for (int i = 0; i < 4; i++)
            {
                gen.DungeonGraph.CreateNode(i);
            }
            List <(int, int, int)> roomParams = new List <(int, int, int)>()
            {
                (0, 0, 1), (0, 1, 2), (1, 2, 1), (0, 2, 1)
            };

            gen.DungeonGraph.AllNodes.ForEach(node =>
            {
                node.CPDistance    = roomParams[node.Id].Item1;
                node.Depth         = roomParams[node.Id].Item2;
                node.MaxNeighbours = roomParams[node.Id].Item3;
            });
            gen.CriticalPathMapper(gen.DungeonGraph, 3);
            gen.DungeonGraph.ReducePotentialValues();
            Trace.WriteLine("Before");
            gen.DungeonGraph.AllNodes.ForEach(room => Trace.WriteLine(room.PrintConnections()));
            //       2
            //
            // 0 --- 1 --- 3  No valid configs
            //
            //
            Assert.ThrowsException <ArgumentException>(gen.Map);
        }
        public void MapTest()
        {
            BayesianSpaceGenerator gen = new BayesianSpaceGenerator();

            gen.DungeonGraph = new SpaceGraph();

            for (int i = 0; i < 4; i++)
            {
                gen.DungeonGraph.CreateNode(i);
            }
            List <(int, int, int)> roomParams = new List <(int, int, int)>()
            {
                (0, 0, 1), (0, 1, 3), (1, 2, 1), (0, 2, 1)
            };

            gen.DungeonGraph.AllNodes.ForEach(node =>
            {
                node.CPDistance    = roomParams[node.Id].Item1;
                node.Depth         = roomParams[node.Id].Item2;
                node.MaxNeighbours = roomParams[node.Id].Item3;
            });
            gen.CriticalPathMapper(gen.DungeonGraph, 3);
            gen.DungeonGraph.ReducePotentialValues();
            Trace.WriteLine("Before");
            gen.DungeonGraph.AllNodes.ForEach(room => Trace.WriteLine(room.PrintConnections()));
            //       2
            //       |
            // 0 --- 1 --- 3  is the only valid config
            //
            //
            gen.Map();
            Trace.WriteLine("After");
            gen.DungeonGraph.AllNodes.ForEach(room => Trace.WriteLine(room.PrintConnections()));
            CollectionAssert.AreEqual(new int[] { 1, 0, 2, 3, 1, 1 }.ToList(), gen.DungeonGraph.AllNodes.SelectMany(x => x.Values.SelectMany(y => y.Select(z => z.Id))).ToList());
        }
        public void TestInitialize()
        {
            testGraph = new SpaceGraph();

            for (int i = 0; i < rooms; i++)
            {
                testGraph.CreateNode(i);
            }

            generator = new BayesianSpaceGenerator();
            testGraph = generator.CriticalPathMapper(testGraph, cpl);
        }
예제 #4
0
        public static void Main()
        {
            Debug.WriteLine("Starting Bayesian Space Generator...");

            if (enableUserInput)
            {
                BayesianSpaceGenerator spaceGen = new BayesianSpaceGenerator();
                string value = "10";
                if (Dialog.InputBox("Bayesian PDG", "Enter a Dungeon size between 2-27:", ref value) == DialogResult.OK)
                {
                    SpaceGraph graph = spaceGen.RunInference(Int32.Parse(value), defaultNetPath);
                    if (graph != null)
                    {
                        GenerateMap(graph);
                    }
                    else
                    {
                        MessageBox.Show("Constraints imposed by the sample could not be satisfied. Try again.", "Error: Bad Sample", 0);
                    }
                }
            }
            else
            {
                for (int i = 2; i < 27; i++)
                {
                    Stopwatch netWatch = new Stopwatch();
                    BayesianSpaceGenerator spaceGen = new BayesianSpaceGenerator();
                    netWatch.Start();
                    SpaceGraph experimentGraph = spaceGen.RunInference(i, defaultNetPath);
                    netWatch.Stop();

                    if (experimentGraph != null)
                    {
                        netGenerationTime = netWatch.Elapsed.TotalSeconds;
                        GenerateMap(experimentGraph);
                    }
                }
            }

            //FileInfo[] files = new DirectoryInfo("Resources\\Maps").GetFiles("*.yaml");
            //foreach (var map in files)
            //{
            //    GenerateStaticMap(map.Name);
            //}
        }