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
 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 #3
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 #4
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);
        }