def process(self):
random.seed()<EOL>for _ in range(<NUM_LIT:0>, self.__numlocal):<EOL><INDENT>self.__current = random.sample(range(<NUM_LIT:0>, len(self.__pointer_data)), self.__number_clusters)<EOL>self.__update_clusters(self.__current)<EOL>self.__optimize_configuration()<EOL>estimation = self.__calculate_estimation()<EOL>if estimation < self.__optimal_estimation:<EOL><INDENT>self.__optimal_medoids = self.__current[:]<EOL>self.__optimal_estimation = estimation<EOL><DEDENT><DEDENT>self.__update_clusters(self.__optimal_medoids)<EOL>
!
        @brief Performs cluster analysis in line with rules of CLARANS algorithm.

        @see get_clusters()
        @see get_medoids()