Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
 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);
 }
Beispiel #4
0
 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);
 }
Beispiel #5
0
        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();
        }
Beispiel #6
0
        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();
        }
Beispiel #7
0
 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);
 }
Beispiel #8
0
        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());
            }
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
 private void frmGridGraphEditor_load(object sender, EventArgs e)
 {
     Graph          = new GridGameGraph();
     gridController = new GridGameGraphController(gridGraphView, Graph);
     gridController.resize(new Size(8, 8), true);
 }