class_docstr: !
  @brief Hysteresis oscillatory network that uses relaxation oscillators that are represented by objective hysteresis neurons whose output in range [-1, +1].
  
  Examples:
  @code
      # create hysteresis oscillatory network with 5 oscillators.
      network = hysteresis_network(5);
      
      # set initial states (from range [-1, +1]).
      network.states = [1 0 1 0 1];
      
      # set initial outputs.
      network.outputs = [1 1 1 1 1];
      
      # perform simulation of the network during 1000 steps in 10 time units.
      output_dynamic = network.simulate(1000, 10);
      
      # show output dynamic of the network.
      hysteresis_visualizer.show_output_dynamic(output_dynamic);
      
      # obtain synchronous ensembles.
      ensembles = output_dynamic.allocate_sync_ensembles(tolerance = 0.5, threshold_steps = 5);
      print(ensembles);
  @endcode
class_docstr_tok: ["!","@","brief","Hysteresis","oscillatory","network","that","uses","relaxation","oscillators","that","are","represented","by","objective","hysteresis","neurons","whose","output","in","range","[","-1",",","+1","]",".","Examples",":","@","code","#","create","hysteresis","oscillatory","network","with","5","oscillators",".","network","=","hysteresis_network","(","5",")",";","#","set","initial","states","(","from","range","[","-1",",","+1","]",")",".","network.states","=","[","1","0","1","0","1","]",";","#","set","initial","outputs",".","network.outputs","=","[","1","1","1","1","1","]",";","#","perform","simulation","of","the","network","during","1000","steps","in","10","time","units",".","output_dynamic","=","network.simulate","(","1000",",","10",")",";","#","show","output","dynamic","of","the","network",".","hysteresis_visualizer.show_output_dynamic","(","output_dynamic",")",";","#","obtain","synchronous","ensembles",".","ensembles","=","output_dynamic.allocate_sync_ensembles","(","tolerance","=","0.5",",","threshold_steps","=","5",")",";","print","(","ensembles",")",";","@","endcode"]
docstr: !
  @brief Performs static simulation of hysteresis oscillatory network.
  
  @param[in] steps (uint): Number steps of simulations during simulation.
  @param[in] time (double): Time of simulation.
  @param[in] solution (solve_type): Type of solution (solving).
  @param[in] collect_dynamic (bool): If True - returns whole dynamic of oscillatory network, otherwise returns only last values of dynamics.
  
  @return (hysteresis_dynamic) Dynamic of oscillatory network. If argument 'collect_dynamic' = True, than return dynamic for the whole simulation time,
          otherwise returns only last values (last step of simulation) of dynamic.
docstr_tok: ["!","@","brief","Performs","static","simulation","of","hysteresis","oscillatory","network",".","@","param","[","in","]","steps","(","uint",")",":","Number","steps","of","simulations","during","simulation",".","@","param","[","in","]","time","(","double",")",":","Time","of","simulation",".","@","param","[","in","]","solution","(","solve_type",")",":","Type","of","solution","(","solving",")",".","@","param","[","in","]","collect_dynamic","(","bool",")",":","If","True","-","returns","whole","dynamic","of","oscillatory","network",",","otherwise","returns","only","last","values","of","dynamics",".","@","return","(","hysteresis_dynamic",")","Dynamic","of","oscillatory","network",".","If","argument","'collect_dynamic","'","=","True",",","than","return","dynamic","for","the","whole","simulation","time",",","otherwise","returns","only","last","values","(","last","step","of","simulation",")","of","dynamic","."]
code: def simulate(
      self, steps, time, solution=solve_type.RK4, collect_dynamic=True
  ):
      """!
      @brief Performs static simulation of hysteresis oscillatory network.
  
      @param[in] steps (uint): Number steps of simulations during simulation.
      @param[in] time (double): Time of simulation.
      @param[in] solution (solve_type): Type of solution (solving).
      @param[in] collect_dynamic (bool): If True - returns whole dynamic of oscillatory network, otherwise returns only last values of dynamics.
  
      @return (hysteresis_dynamic) Dynamic of oscillatory network. If argument 'collect_dynamic' = True, than return dynamic for the whole simulation time,
              otherwise returns only last values (last step of simulation) of dynamic.
      """
  
      return self.simulate_static(
          steps, time, solution, collect_dynamic
      )
  
imports: import numpy
  import matplotlib.pyplot
  from scipy.integrate import odeint
  from pyclustering.nnet import *
  from pyclustering.utils import draw_dynamics
label_desc: Use image node_id 7 for calling the hysteresis_network obj's underlying member method code with example usage: obj.simulate(steps, time, solution, collect_dynamic) and returns: self