def is_full(self):
        """:class:`GridEnvironment` is full when its **grid** is fully
        populated with agents.

        :returns:
            True if the grid is full, False otherwise. Will also return False
            for uninitialized grids with (0,0) grid size.
        """
        if len(self.grid) == 0:
            return False

        for i in range(len(self.grid)):
            for j in range(len(self.grid[0])):
                if self.grid[i][j] is None:
                    return False
        return True