private void Run() { StartTime = DateTime.Now; InitializeHolders(); var graphGenerator = GraphFactory.GetGraphGenerator(GraphType); graphGenerator.Generate(NodeCount, NodeHolder, EdgeHolder, AlgorithmType); RunReport.ReportTopology(EdgeHolder.GetCopyList()); RunReport.ReportNodes(NodeHolder.GetCopyList(), true); foreach (var node in NodeHolder.GetCopyList().AsParallel()) { Task.Run(() => { node.UserDefined_SingleInitiatorProcedure(); }); } NodeHolder.StartTerminationDetection(); }
public override void Generate(int nodeCount, NodeHolder nodeHolder, EdgeHolder edgeHolder, AlgorithmType SelectedAlgorithm) { base.Generate(nodeCount, nodeHolder, edgeHolder, SelectedAlgorithm); for (int i = 0; i < nodeCount; i++) { if (i != nodeCount - 1) { var node1 = nodeHolder.GetNodeAt(i); var node2 = nodeHolder.GetNodeAt(i + 1); edgeHolder.AddEgde(new ConsoleEdge(node1, node2)); } else { var node1 = nodeHolder.GetNodeAt(i); var node2 = nodeHolder.GetNodeAt(0); edgeHolder.AddEgde(new ConsoleEdge(node1, node2)); } } }
public override void Generate(int nodeCount, NodeHolder nodeHolder, EdgeHolder edgeHolder, string SelectedAlgorithm) { var arg = new PaintEventArgs(Drawing_panel.CreateGraphics(), new Rectangle()); nodeCount = DeserializationContext.Nodes.Count; for (int i = 0; i < nodeCount; i++) { var _node = DeserializationContext.Nodes[i]; var node = NodeFactory.Create(SelectedAlgorithm, _node.Id, new WinformsNodeVisualiser(arg, _node._Position.X, _node._Position.Y, nodeHolder.NodeCount, ParentForm), ParentForm.cb_selfStab.Checked, nodeHolder, _node._PredefinedState); nodeHolder.AddNode(node); } ; for (int i = 0; i < nodeCount; i++) { for (int j = i; j < nodeCount; j++) { if (i == j) { continue; } if (!DeserializationContext.Nodes[i]._Neighbours.Contains(j)) { continue; } var node1 = nodeHolder.GetNodeAt(i); var node2 = nodeHolder.GetNodeAt(j); edgeHolder.AddEgde(new WinformsEdge(arg, node1, node2)); } } }
public static async Task Maindo(SocketMessage arg) { EdgeHolder EdgeHandle = new EdgeHolder(); var Embed = new EmbedBuilder() { Color = Color.LighterGrey, Footer = new EmbedFooterBuilder() { Text = "MGX" }, Timestamp = DateTime.UtcNow, ThumbnailUrl = "https://i.gyazo.com/537ad8d7a1da7fb8a3c6cbb69d37da1b.png", }; var Field = new EmbedFieldBuilder() { Name = "?", Value = EdgeHandle.ReturnRandomResponse() }; Embed.AddField(Field); await arg.Channel.SendMessageAsync("", false, Embed.Build()); return; }
public override void Generate(int nodeCount, NodeHolder nodeHolder, EdgeHolder edgeHolder, string SelectedAlgorithm) { var arg = new PaintEventArgs(Drawing_panel.CreateGraphics(), new Rectangle()); var radius = (Math.Min(Drawing_panel.Height, Drawing_panel.Width) - 80) / 2; var origin = new Point(Drawing_panel.Width / 2, Drawing_panel.Height / 2); var randomizer = new Random(); for (int i = 0; i < nodeCount; i++) { var angle = 360 / (float)nodeCount * i; var p = PointOnCircle(radius, angle, origin); if (!nodeHolder.AnyIntersecting(p)) { var node = NodeFactory.Create(SelectedAlgorithm, nodeHolder.NodeCount, new WinformsNodeVisualiser(arg, p.X, p.Y, nodeHolder.NodeCount, ParentForm), ParentForm.cb_selfStab.Checked, nodeHolder, randomizer.Next(0, 3)); nodeHolder.AddNode(node); } else { i--; } } ; //for (int i = 0; i < nodeCount; i++) //{ // var p = new Point(randomizer.Next(40, Drawing_panel.Width - 40), randomizer.Next(40, Drawing_panel.Height - 40)); // if (!nodeHolder.AnyIntersecting(p)) // { // var node = NodeFactory.Create(SelectedAlgorithm, nodeHolder.NodeCount, new WinformsNodeVisualiser(arg, p.X, p.Y, nodeHolder.NodeCount, ParentForm), ParentForm.cb_selfStab.Checked, nodeHolder); // nodeHolder.AddNode(node); // } // else // { // i--; // } //}; for (int i = 0; i < nodeCount; i++) { if (i != nodeCount - 1) { var node1 = nodeHolder.GetNodeAt(i); var node2 = nodeHolder.GetNodeAt(i + 1); edgeHolder.AddEgde(new WinformsEdge(arg, node1, node2)); } } foreach (var node1 in nodeHolder.GetCopyList()) { for (int i = 0; i < Grade; i++) { if (node1.Neighbours.Count >= Grade) { break; } var nextNodeId = randomizer.Next(0, nodeCount); while (nextNodeId == node1.Id || node1.IsNeigbourOf(nextNodeId)) { nextNodeId = randomizer.Next(0, nodeCount); } edgeHolder.AddEgde(new WinformsEdge(arg, node1, nodeHolder.GetNodeById(nextNodeId))); } //foreach (var node2 in nodeHolder.GetCopyList().Where(n => n != node1)) //{ // if (randomizer.Next() % 100 > 10) continue; // if (node1.Neighbours.ContainsKey(node2.Id)) continue; // edgeHolder.AddEgde(new WinformsEdge(arg, node1, node2)); //} } }
public override void Generate(int nodeCount, NodeHolder nodeHolder, EdgeHolder edgeHolder, string SelectedAlgorithm) { var arg = new PaintEventArgs(Drawing_panel.CreateGraphics(), new Rectangle()); var queue = new Queue <int>(); var totalHeight = 0; if (nodeCount == 1) { totalHeight = 2; } else if (nodeCount == 2 || nodeCount == 3 || nodeCount == 4) { totalHeight = 2; } else { totalHeight = (int)Math.Floor(Math.Log(nodeCount, 3)) + 1; } var verticalInterval = (int)((Drawing_panel.Height - 80) / (totalHeight - 1)); for (int i = 0; i < nodeCount; i++) { var currentDepth = (int)Math.Floor(Math.Log(i + 1, 3)); var horizontalInterval = (int)((Drawing_panel.Width) / (Math.Pow(3, currentDepth) + 1)); var currentIndex = (int)(i - (Math.Pow(3, currentDepth) - 1) + 1); Console.WriteLine("i: {0}, depth: {1}, currentIndex: {2}", i, currentDepth, currentIndex); var p = new Point((currentIndex) * horizontalInterval, (currentDepth) * verticalInterval + 40); if (!nodeHolder.AnyIntersecting(p)) { var node = NodeFactory.Create(SelectedAlgorithm, nodeHolder.NodeCount, new WinformsNodeVisualiser(arg, p.X, p.Y, nodeHolder.NodeCount, ParentForm), ParentForm.cb_selfStab.Checked, nodeHolder); nodeHolder.AddNode(node); } else { throw new Exception("Reached to screen limits"); } } ; for (int i = 1; i < nodeCount; i++) { queue.Enqueue(i); } for (int i = 0; i < nodeCount; i++) { var parent = nodeHolder.GetNodeAt(i); for (int j = 0; j < 3; j++) { if (!queue.Any()) { break; } var firstChildId = queue.Dequeue(); var child = nodeHolder.GetNodeAt(firstChildId); edgeHolder.AddEgde(new WinformsEdge(arg, parent, child)); } } }
public abstract void Generate(int nodeCount, NodeHolder nodeHolder, EdgeHolder edgeHolder, string SelectedAlgorithm);