Esempio n. 1
0
        public double Update(HexaPath path, double[,] entropy)
        {
            double         deltaScore     = 0.0;
            double         deltaStepScore = 0.0;
            List <HexaPos> neighbors;

            List <HexaPos> .Enumerator e;

            for (int t = 0; t < path.Length; t++)
            {
                deltaStepScore = entropy[path[t].X, path[t].Y];
                entropy[path[t].X, path[t].Y] -= deltaStepScore;
                deltaScore += deltaStepScore;

                neighbors = _map.GetHexes(path[t].X, path[t].Y, GetObservationRange());
                e         = neighbors.GetEnumerator();
                while (e.MoveNext())
                {
                    deltaStepScore = confidenceFactor * entropy[e.Current.X, e.Current.Y];
                    deltaScore    += deltaStepScore;
                    entropy[e.Current.X, e.Current.Y] -= deltaStepScore;
                }
            }

            return(deltaScore);
        }
Esempio n. 2
0
        public void Update(Agent agent, HexaPos currentPos)
        {
            int radius = agent.GetObservationRange();

            SetProbability(currentPos.X, currentPos.Y, 0);

            List <HexaPos> hexes = _map.GetHexes(currentPos.X, currentPos.Y, radius, false);

            List <HexaPos> .Enumerator e = hexes.GetEnumerator();

            while (e.MoveNext())
            {
                double prob = _probability[currentPos.X, currentPos.Y];
                prob = prob * agent.confidenceFactor;
                SetProbability(currentPos.X, currentPos.Y, prob);
            }
        }
Esempio n. 3
0
        public double GetEstimation(Agent agent, double[,] entropy, HexaPos pos, HexagonalMap map)
        {
            double         estimation = entropy[pos.X, pos.Y];
            List <HexaPos> neighbors  = map.GetHexes(pos.X, pos.Y, agent.GetObservationRange());

            List <HexaPos> .Enumerator e = neighbors.GetEnumerator();
            while (e.MoveNext())
            {
                estimation += agent.confidenceFactor * entropy[e.Current.X, e.Current.Y];
            }
            return(estimation);

            /*
             * double[,] localEntropy = (double[,])entropy.Clone();
             * HexaPath localPath = new HexaPath();
             * localPath.AddPos(pos);
             * return agent.Score(localPath, localEntropy);
             */
        }
Esempio n. 4
0
        private void ShowSearchSpace(object sender, EventArgs e)
        {
            if (_formState == FormState.SHOWING_SEARCHSPACE)
            {
                if (transitCurrentCnt >= _human.path.Length)
                {
                    transitCurrentCnt = 0;
                }

                HexaPos currentPos = _human.path[transitCurrentCnt];

                List <HexaPos> neighbors = _map.GetHexes(currentPos.X, currentPos.Y, _human.WingmanToleranceRange, true);

                _map.MapState.ActiveHexSet = _map.Convert(neighbors);

                Refresh();

                transitCurrentCnt++;
            }
        }
Esempio n. 5
0
        void Init()
        {
            for (int i = 0; i < _map.mapWidth; i++)
            {
                for (int j = 0; j < _map.mapHeight; j++)
                {
                    _hexes[i, j] = new HexaAdjacentList(new HexaPos(i, j));

                    List <HexaPos> adjacent = _map.GetHexes(i, j, 1);

                    List <HexaPos> .Enumerator e = adjacent.GetEnumerator();

                    while (e.MoveNext())
                    {
                        _hexes[i, j].Add(e.Current);

                        AddEdge(_hexes[i, j].GetHexaPos(), e.Current);
                    }
                }
            }
        }