sig
  type data
  type user_data
  type result
  exception Fin_AG
  val gvars : Ga_types.gvars
  val eval :
    Ga_optimize.LOCAL.user_data ->
    int -> Ga_optimize.LOCAL.data -> float Lazy.t
  val generate : Ga_optimize.LOCAL.user_data -> int -> Ga_optimize.LOCAL.data
  val cross :
    Ga_optimize.LOCAL.user_data ->
    int ->
    Ga_optimize.LOCAL.data ->
    Ga_optimize.LOCAL.data -> Ga_optimize.LOCAL.data * Ga_optimize.LOCAL.data
  val mutate :
    Ga_optimize.LOCAL.user_data ->
    int -> Ga_optimize.LOCAL.data -> Ga_optimize.LOCAL.data
  val distance :
    Ga_optimize.LOCAL.user_data ->
    Ga_optimize.LOCAL.data -> Ga_optimize.LOCAL.data -> float
  val barycenter :
    Ga_optimize.LOCAL.user_data ->
    Ga_optimize.LOCAL.data ->
    int -> Ga_optimize.LOCAL.data -> int -> Ga_optimize.LOCAL.data
  val init : Ga_optimize.LOCAL.user_data -> unit
  val prepare_ag :
    Ga_optimize.LOCAL.user_data ->
    Ga_optimize.LOCAL.data Ga_types.population -> unit
  val prepare_gen :
    Ga_optimize.LOCAL.user_data ->
    int -> Ga_optimize.LOCAL.data Ga_types.population -> unit
  val after_scale :
    Ga_optimize.LOCAL.user_data ->
    int ->
    Ga_optimize.LOCAL.data Ga_types.population ->
    Ga_optimize.LOCAL.data Ga_types.chromosome -> unit
  val after_share :
    Ga_optimize.LOCAL.user_data ->
    int ->
    Ga_optimize.LOCAL.data Ga_types.population -> Ga_types.sharing -> unit
  val after_reproduce :
    Ga_optimize.LOCAL.user_data ->
    int -> Ga_optimize.LOCAL.data Ga_types.population -> int list -> unit
  val after_gen :
    Ga_optimize.LOCAL.user_data ->
    int -> Ga_optimize.LOCAL.data Ga_types.population -> unit
  val terminate_ag :
    Ga_optimize.LOCAL.user_data ->
    Ga_optimize.LOCAL.data Ga_types.population ->
    int list -> int -> Ga_optimize.LOCAL.result
end