code: def __init__(
      self,
      x,
      bounds=None,
      func=None,
      func_args=(),
      g_cons=None,
      g_cons_args=(),
      nn=None,
      index=None,
  ):
      self.x = x
      self.order = sum(x)
      x_a = np.array(x, dtype=float)
      if bounds is not None:
          for i, (lb, ub) in enumerate(bounds):
              x_a[i] = x_a[i] * (ub - lb) + lb
  
      # TODO: Make saving the array structure optional
      self.x_a = x_a
  
      # Note Vertex is only initiated once for all x so only
      # evaluated once
      if func is not None:
          self.feasible = True
          if g_cons is not None:
              for g, args in zip(g_cons, g_cons_args):
                  if g(self.x_a, *args) < 0.0:
                      self.f = np.inf
                      self.feasible = False
                      break
          if self.feasible:
              self.f = func(x_a, *func_args)
  
      if nn is not None:
          self.nn = nn
      else:
          self.nn = set()
  
      self.fval = None
      self.check_min = True
  
      # Index:
      if index is not None:
          self.index = index
  
imports: import numpy
  import copy
label_desc: Use image node_id 1 to create a new Vertex object  with example: obj = Vertex(x, bounds, func, func_args, g_cons, g_cons_args, nn, index)