def CV(self) -> np.ndarray:
        """
        Get the constraint violation vector for an individual by either reading 
        it from the cache or calculating it.

        Returns
        -------
        out : np.ndarray
            The constraint violation vector for an individual.
        """
        config = self.config
        cache = config["cache"]

        if cache and self._CV is not None:
            return self._CV
        else:
            self._CV = np.array([calc_cv(G=self.G, H=self.H, config=config)])
            return self._CV

        Get the constraint violation vector for an individual by either reading 
        it from the cache or calculating it.

        Returns
        -------
        out : np.ndarray
            The constraint violation vector for an individual.
        
pymoo/core/individual.py