class_docstr: Optimizing function value implementation based on differential evolution
  The purpose of the algorithm is to find the optimal system parameters 
  (represented by a vector of real values X by default) for which 
  the specified function value f(X) will be the closest to the reference value.
  The Evaluate function to calculate f(X) and compare it with the reference
  is provided by the user.
  
  :param f: the function to be optimized.
  :type f: object
  
  :param lower_bounds: the minimum values for the parameters.
  :type lower_bounds: array of the same length as upper_bounds
  
  :param upper_bounds: the maximum values for the parameters.
  :type upper_bounds: array of the same length as lower_bounds
  
  :param fluctuation: the fluctuation coefficient.
  :type fluctuation: float, default=0.5
  
  :param cross_probability: the mutation probability.
  :type cross_probability: float, default=0.5
  
  :param population: the number of elements in each generation.
  :type population: int, >=5, default=100
  
  :param param_traits: the parameter types.
  :type param_traits: array of ``BaseTraits``-implementing objects, default=None
  
  :param result_traits: the result types.
  :type result_traits: array of ``BaseTraits``-implementing objects, default=None
  
  :param max_generation_count: the maximum number of generations after which the algorithm stops.
  :type max_generation_count: int, default=None
  
  :param max_non_growing_count: the maximum number of iterations for which the function minimum has been unchanged.
  :type max_non_growing_count: int, default=None
class_docstr_tok: ["Optimizing","function","value","implementation","based","on","differential","evolution","The","purpose","of","the","algorithm","is","to","find","the","optimal","system","parameters","(","represented","by","a","vector","of","real","values","X","by","default",")","for","which","the","specified","function","value","f","(","X",")","will","be","the","closest","to","the","reference","value",".","The","Evaluate","function","to","calculate","f","(","X",")","and","compare","it","with","the","reference","is","provided","by","the","user",".",":","param","f",":","the","function","to","be","optimized",".",":","type","f",":","object",":","param","lower_bounds",":","the","minimum","values","for","the","parameters",".",":","type","lower_bounds",":","array","of","the","same","length","as","upper_bounds",":","param","upper_bounds",":","the","maximum","values","for","the","parameters",".",":","type","upper_bounds",":","array","of","the","same","length","as","lower_bounds",":","param","fluctuation",":","the","fluctuation","coefficient",".",":","type","fluctuation",":","float",",","default=0.5",":","param","cross_probability",":","the","mutation","probability",".",":","type","cross_probability",":","float",",","default=0.5",":","param","population",":","the","number","of","elements","in","each","generation",".",":","type","population",":","int",",",">","=5",",","default=100",":","param","param_traits",":","the","parameter","types",".",":","type","param_traits",":","array","of","``","BaseTraits","``","-implementing","objects",",","default=None",":","param","result_traits",":","the","result","types",".",":","type","result_traits",":","array","of","``","BaseTraits","``","-implementing","objects",",","default=None",":","param","max_generation_count",":","the","maximum","number","of","generations","after","which","the","algorithm","stops",".",":","type","max_generation_count",":","int",",","default=None",":","param","max_non_growing_count",":","the","maximum","number","of","iterations","for","which","the","function","minimum","has","been","unchanged",".",":","type","max_non_growing_count",":","int",",","default=None"]
docstr: Gets the "best vector."
  
  :return: the best fector found
  :rtype: *array-like of shape {vector_length,}*
docstr_tok: ["Gets","the","``","best","vector",".","''",":","return",":","the","best","fector","found",":","rtype",":","*","array-like","of","shape","{","vector_length",",","}","*"]
code: def optimal_vector(self):
      """Gets the "best vector."
  
      :return: the best fector found
      :rtype: *array-like of shape {vector_length,}*
      """
      return self.internal.get_optimal_vector()
  
imports: import random
  from abc import ABCMeta, abstractmethod
  import neoml.PythonWrapper
label_desc: Use image node_id 6 for calling the DifferentialEvolution obj's underlying member method code with example usage: obj.optimal_vector() and returns: self