@Override
  protected void updateHeuristic(StateObservation actualState) {

    final Vector2d avPos = actualState.getAvatarPosition();

    final ArrayList<Observation>[] observables = this.getObservables(actualState);

    if (observables == null || observables.length == 0) {
      return;
    }

    //		double nearest = Double.MAX_VALUE;
    //		int nearestID = Integer.MAX_VALUE;

    for (ArrayList<Observation> observableList : observables) {
      for (Observation observable : observableList) {
        //				double mhDist = observable.position.dist(avPos);//Math.abs(xDist + yDist);
        //
        //				if (mhDist < nearest && !(this.tabooMap.containsKey(observable.obsID)))
        //				{
        //					nearest = mhDist;
        //					nearestID = observable.obsID;
        //				}

        if (avPos.equals(observable.position)) {
          this.tabooMap.put(observable.obsID, actualState.getGameTick());
        }

        if (this.tabooMap.containsKey(observable.obsID)
            && this.tabooMap.get(observable.obsID).intValue() + this.tabooTime
                < actualState.getGameTick()) {
          this.tabooMap.remove(observable.obsID);
        }
      }
    }

    //		if (nearestID == this.nearestObsID)
    //		{
    //			sameObsIDCounter++;
    //
    //			if (sameObsIDCounter > sameObsIDCounterMax)
    //			{
    //				this.tabooMap.put(nearestID, actualState.getGameTick());
    //				this.nearestObsID = Integer.MAX_VALUE;
    //				this.sameObsIDCounter = 0;
    //			}
    //		}
    //		else
    //		{
    //			this.nearestObsID = nearestID;
    //			sameObsIDCounter = 0;
    //		}

  }