public override bool init(AGameGraph iG, FrontsGridRoutingGameParams prm, IPolicyGUIInputProvider pgui, Dictionary <string, string> policyParams) { myRand = new ThreadSafeRandom(); this.param = prm; List <Point> randomizedPointList = new List <Point>(); GridGameGraph G = (GridGameGraph)iG; for (int i = 0; i < G.WidthCellCount; ++i) { for (int j = 0; j < G.HeightCellCount; ++j) { randomizedPointList.Add(new Point(i, j)); } } // after enough value swaps, the list is randomized: for (int i = 0; i < G.WidthCellCount * G.HeightCellCount; ++i) { int tmp1i = myRand.Next() % randomizedPointList.Count, tmp2i = myRand.Next() % randomizedPointList.Count; Point tmp; tmp = randomizedPointList[tmp1i]; randomizedPointList[tmp1i] = randomizedPointList[tmp2i]; randomizedPointList[tmp2i] = tmp; } nextPointList = new LinkedList <Point>(); foreach (var p in randomizedPointList) { nextPointList.AddLast(p); } return(true); }
private void btnLoad_Click(object sender, EventArgs e) { OpenFileDialog d = new OpenFileDialog(); d.Filter = "Graph Files (*.ggrp)|*.ggrp"; try { if (d.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } string[] serialization = File.ReadAllLines(d.FileName); Graph = new GridGameGraph(); Graph.deserialize(serialization); gridController.resetGraph(Graph); gridGraphView.Invalidate(); GraphPath = d.FileName; dirty = false; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public override bool init(AGameGraph G, IntrusionGameParams prm, IPolicyGUIInputProvider gui, Dictionary <string, string> policyInput) { this.g = (GridGameGraph)G; this.gm = prm; this.pgui = gui; //foreach (Pursuer p in gm.A_P) // currentPursuersLocations[p] = null; intrusionCenterPoint = g.getNodesByType(NodeType.Target).First(); return(true); }
public override bool init(AGameGraph G, IGameParams prm, IPolicyGUIInputProvider gui, Dictionary <string, string> policyInput) { this.g = (GridGameGraph)G; this.gm = (GoEGameParams )prm; this.pgui = gui; foreach (Pursuer p in gm.A_P) { currentPursuersLocations[p] = new Location(Location.Type.Unset); } return(true); }
public void resetGraph(GridGameGraph newGraph) { this.Graph = newGraph; resize(new Size((int)newGraph.WidthCellCount, (int)newGraph.HeightCellCount), true); foreach (var n in newGraph.Nodes) { setNodeType(n.Key, n.Value.t); } View.Invalidate(); }
public GridGameGraphController(GoE.GridGameGraphViewer view, GridGameGraph graph) { this.Graph = graph; this.View = view; View.resizeGrid((uint)Graph.WidthCellCount, (uint)Graph.HeightCellCount, 32, false); foreach (var n in Graph.Nodes) { setNodeType(n.Key, n.Value.t); } View.Invalidate(); }
public override bool init(AGameGraph G, FrontsGridRoutingGameParams prm, IPolicyGUIInputProvider pgui, Dictionary <string, string> policyParams) { this.graph = (GridGameGraph)G; this.param = prm; myRand = new ThreadSafeRandom(); leftPoints = new List <Point>(); rightPoints = new List <Point>(); waitingRightPoints = new List <Point>(); waitingLeftPoints = new List <Point>(); stopScanProb = double.Parse(AppConstants.Policies.Routing.RowDestroyingPursuerPolicy.STOP_SCAN_ONFAILURE_PROBABILITY.tryRead(policyParams)); dualSearchProb = double.Parse(AppConstants.Policies.Routing.RowDestroyingPursuerPolicy.DUAL_DIRECTION_SEACH_PROB.tryRead(policyParams)); return(true); }
public void addGUIMarks(List <GameLogic.Utils.PursuerPathObservation> O_p, IPolicyGUIInputProvider ui, IntrusionGameState s, GridGameGraph gr, IntrusionGameParams prm, Dictionary <Evader, Point> currentEvaderLocations) { if (ui.hasBoardGUI()) { Dictionary <string, List <Point> > markedLocations = new Dictionary <string, List <Point> >(); List <Point> tmpPointList = new List <Point>(); foreach (var p in O_p) { tmpPointList.AddRange(p.observedPursuerPath); } markedLocations.Add("Pursuer trail(O_p)", tmpPointList); tmpPointList = new List <Point>(); foreach (var p in O_p) { tmpPointList.Add(p.observedPursuerPath.Last()); } markedLocations.Add("Pursuer last pos", tmpPointList); List <Point> detectionArea = new List <Point>(); foreach (Evader e in s.ActiveEvaders) { if (currentEvaderLocations.ContainsKey(e)) { detectionArea.AddRange( gr.getNodesWithinDistance(currentEvaderLocations[e], prm.r_es)); } } markedLocations.Add("Area within r_s(evaders detecting pursuers)", detectionArea); ui.markLocations(markedLocations.toPointFMarkings()); } }
public override bool init(AGameGraph G, IntrusionGameParams prmi, APursuersPolicy initializedPursuers, IPolicyGUIInputProvider pGui, Dictionary <string, string> policyParams = null) { IntrusionGameParams prm = prmi; this.accumObservationsPerEve = new Dictionary <Evader, List <GameLogic.Utils.PursuerPathObservation> >(); foreach (var e in prm.A_E) { this.accumObservationsPerEve[e] = new List <GameLogic.Utils.PursuerPathObservation>(); } this.nextEvadersToCommunicate = new List <Evader>(); this.g = (GridGameGraph)G; this.gm = prm; this.pgui = pGui; foreach (Evader e in gm.A_E) { currentEvadersLocations[e] = new Location(Location.Type.Unset); } intrusionAreaCenter = g.getNodesByType(NodeType.Target).First(); return(true); }
public override bool init(AGameGraph G, FrontsGridRoutingGameParams prm, IPolicyGUIInputProvider pgui, Dictionary <string, string> policyParams) { graph = (GridGameGraph)G; gameParams = prm; myRand = new ThreadSafeRandom(); repeatSuccessProb = double.Parse( ColumnProbabalisticRoutingPursuers.REPEAT_SUCCUSSFULL_COLUMN_HIT.tryRead(policyParams)); var probStrings = ParsingUtils.separateCSV(ColumnProbabalisticRoutingPursuers.PROBABILITY_PER_COLUMN.tryRead(policyParams)); probPerColGroup = probStrings.ConvertAll((s) => { return(double.Parse(s)); }); colGroups = new List <List <Point> >(); int colIdxStart = 0; columnIdxToColGroup = new List <int>(); for (int colGroup = 0; colGroup < probStrings.Count; ++colGroup) { int colIdxEnd = (int)Math.Min(graph.WidthCellCount, (int)Math.Round((1 + colGroup) * ((float)(graph.WidthCellCount) / probStrings.Count))); colGroups.Add(new List <Point>()); for (; colIdxStart < colIdxEnd; ++colIdxStart) { columnIdxToColGroup.Add(colGroup); for (int y = 0; y < graph.HeightCellCount; ++y) { colGroups.Last().Add(new Point(colIdxStart, y)); } } colIdxStart = colIdxEnd; } return(true); }
public override bool init(AGameGraph iG, FrontsGridRoutingGameParams prm, IPolicyGUIInputProvider pgui, Dictionary <string, string> policyParams) { this.param = prm; nextPointList = new LinkedList <Point>(); GridGameGraph G = (GridGameGraph)iG; if (ScanningRoutingPursuers.DIAGONAL_SCAN.tryRead(policyParams) == "1") { for (int i = 0; i < G.WidthCellCount; ++i) { for (int j = 0; j <= Math.Min(i, G.HeightCellCount - 1); ++j) { nextPointList.AddLast(new Point(i - j, j)); } } for (int i = 1; i < G.HeightCellCount; ++i) { for (int j = (int)G.WidthCellCount - 1; j >= Math.Max((int)G.WidthCellCount - G.HeightCellCount + i, i); --j) { nextPointList.AddLast(new Point(j, i - (j - (int)G.WidthCellCount) - 1)); } } } else { for (int i = 0; i < G.WidthCellCount; ++i) { for (int j = 0; j < G.HeightCellCount; ++j) { nextPointList.AddLast(new Point(i, j)); } } } return(true); }
private void frmGridGraphEditor_load(object sender, EventArgs e) { Graph = new GridGameGraph(); gridController = new GridGameGraphController(gridGraphView, Graph); gridController.resize(new Size(8, 8), true); }