public EnvironmentState executeAction(Agent ag, Action action){
		GridAgent agent = (GridAgent) ag;

		// Reset collision value
		agent.setCollision(false);
		if (action.equals(TURN_90_RIGTH)){
			this.turnHeading(agent, 1); 
			updatePerformanceMeasure(agent, TURN_90_RIGTH_MEASURE); 
		} else if(action.equals(TURN_90_LEFT) ){
			this.turnHeading(agent,-1);
			updatePerformanceMeasure(agent, -1); 
		}
		else if (action.equals(FORWARD) ){
			Direction  direction = null;
			if( agent.getOriontation() ==  Orientation.UP)
				direction = Direction.North; 
			else if (agent.getOriontation() ==  Orientation.RIGTH)
				direction = Direction.East; 
			else if (agent.getOriontation() ==  Orientation.DOWN)
				direction = Direction.South; 
			else if (agent.getOriontation() ==  Orientation.LEFT)
				direction = Direction.West; 
			this.moveForward(agent, direction) ;
		}
		else if (action.equals(STOP)  ){
			agent.setAlive(false);
			environmentState.changedState(agent); 
		}
		else if (action.equals(ERROR_OP)){
			agent.setOrientation(null) ;
		}
		this.notifyViews("Agent-"+ag.getId()+ " performs action "+   action.toString());
		return this.environmentState; 

	}