code: def __init__(
      self,
      func,
      y0,
      rtol=1e-3,
      atol=1e-4,
      implicit=True,
      max_iters=_MAX_ITERS,
      max_order=_MAX_ORDER,
      **kwargs,
  ):
      super(AdamsBashforthMoulton, self).__init__(
          func, y0, rtol=rtol, atol=rtol, **kwargs
      )
      assert (
          max_order <= _MAX_ORDER
      ), "max_order must be at most {}".format(_MAX_ORDER)
      if max_order < _MIN_ORDER:
          warnings.warn(
              "max_order is below {}, so the solver reduces to `rk4`.".format(
                  _MIN_ORDER
              )
          )
  
      self.rtol = torch.as_tensor(
          rtol, dtype=y0.dtype, device=y0.device
      )
      self.atol = torch.as_tensor(
          atol, dtype=y0.dtype, device=y0.device
      )
      self.implicit = implicit
      self.max_iters = max_iters
      self.max_order = int(max_order)
      self.prev_f = collections.deque(maxlen=self.max_order - 1)
      self.prev_t = None
  
      self.bashforth = [x.to(y0.device) for x in _BASHFORTH_DIVISOR]
      self.moulton = [x.to(y0.device) for x in _MOULTON_DIVISOR]
  
file_path: torchdiffeq/torchdiffeq/_impl/fixed_adams.py
imports: import collections
  import sys
  import torch
  import warnings
  from .solvers import FixedGridODESolver
  from .misc import _compute_error_ratio, _linf_norm
  from .misc import Perturb
  from .rk_common import rk4_alt_step_func
label_desc: Use image node_id 1 to create a new AdamsBashforthMoulton object from inherited base classes: FixedGridODESolver with example: obj = AdamsBashforthMoulton(func, y0, rtol, atol, implicit, max_iters, max_order)