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); }
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); } }
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); */ }
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++; } }
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); } } } }