static void Main(string[] args) { Console.WriteLine("Monte Carlo Algorithm Tests"); while (true) { var watch = Stopwatch.StartNew(); Console.WriteLine(); var s1 = new Node("nod1"); s1.AddAction(new NodeAction(1, true)); var s2 = new Node("nod2"); s2.AddAction(new NodeAction(1, true)); s2.AddAction(new NodeAction(10, false)); var s3 = new Node("nod3"); s3.AddAction(new NodeAction(10, true)); s3.AddAction(new NodeAction(20, false)); var s4 = new Node("nod4"); s4.AddAction(new NodeAction(10, true)); s4.AddAction(new NodeAction(2, false)); var s5 = new Node("nod5"); s5.AddAction(new NodeAction(1, true)); s5.AddAction(new NodeAction(2, false)); var s6 = new Node("nod6"); s6.AddAction(new NodeAction(10, true)); var s7 = new Node("nod7"); s7.AddAction(new NodeAction(30, true)); // Win var s8 = new Node("Node8"); s8.AddAction(new NodeAction(1, true)); var s9 = new Node("Node9"); s9.AddAction(new NodeAction(1, true)); s8.AddChild(s9); s7.AddChild(s8); s2.AddChild(s4); s2.AddChild(s5); s3.AddChild(s6); s3.AddChild(s7); s1.AddChild(s2); s1.AddChild(s3); var s10 = new Node("Node10"); s10.AddAction(new NodeAction(1, true)); s9.AddChild(s10); var simulation = new Simulation((int visit, long time) => time < 2000); simulation.Simulate(s1, new Player()); PrintTree(s1, "", false); Console.WriteLine($"Time : {watch.ElapsedMilliseconds}"); Console.ReadLine(); } }
static void Main(string[] args) { SearchAlgorithm algorithm = new UniformSearch(); Node antwerpNode = new Node(new State("Antwerp")); Node hasseltNode = new Node(new State("Hasselt")); Node brusselNode = new Node(new State("Brussel")); Node charleroiNode = new Node(new State("Charleroi")); Node parijsNode = new Node(new State("Parijs")); Node kortijkNode = new Node(new State("Kortrijk")); Node gentNode = new Node(new State("Gent")); Node dePanneNode = new Node(new State("DePanne")); Node rotterdamNode = new Node(new State("Rotterdam")); antwerpNode.AddAction(new Edge(antwerpNode, gentNode, 9)); antwerpNode.AddAction(new Edge(antwerpNode, rotterdamNode, 8)); antwerpNode.AddAction(new Edge(antwerpNode, hasseltNode, 10)); antwerpNode.AddAction(new Edge(antwerpNode, brusselNode, 7)); gentNode.AddAction(new Edge(gentNode, antwerpNode, 9)); gentNode.AddAction(new Edge(gentNode, dePanneNode, 12)); gentNode.AddAction(new Edge(gentNode, kortijkNode, 5)); gentNode.AddAction(new Edge(gentNode, brusselNode, 10)); hasseltNode.AddAction(new Edge(hasseltNode, antwerpNode, 10)); rotterdamNode.AddAction(new Edge(rotterdamNode, antwerpNode, 8)); charleroiNode.AddAction(new Edge(charleroiNode, brusselNode, 6)); brusselNode.AddAction(new Edge(brusselNode, antwerpNode, 7)); brusselNode.AddAction(new Edge(brusselNode, gentNode, 10)); brusselNode.AddAction(new Edge(brusselNode, charleroiNode, 6)); kortijkNode.AddAction(new Edge(kortijkNode, gentNode, 5)); kortijkNode.AddAction(new Edge(kortijkNode, parijsNode, 10)); parijsNode.AddAction(new Edge(parijsNode, kortijkNode, 10)); dePanneNode.AddAction(new Edge(dePanneNode, gentNode, 12)); Problem problem = new Problem(); problem.InitialState = antwerpNode; problem.GoalState = parijsNode; Path solution = algorithm.Search(problem); Console.WriteLine("Solution"); solution.DebugLog(); }