class_docstr: Allows to compose algorithms into a schedule by repeating an algorithm
  or chaining different algorithms while maintaining the same results table.
  
  Args:
      algorithms (List[sherpa.algorithms.Algorithm]): the algorithms to run,
          each algorithm must have a maximum number of trials specified for
          the next algorithm to run.
class_docstr_tok: ["Allows","to","compose","algorithms","into","a","schedule","by","repeating","an","algorithm","or","chaining","different","algorithms","while","maintaining","the","same","results","table",".","Args",":","algorithms","(","List","[","sherpa.algorithms.Algorithm","]",")",":","the","algorithms","to","run",",","each","algorithm","must","have","a","maximum","number","of","trials","specified","for","the","next","algorithm","to","run","."]
code: def __init__(self, algorithms):
      self.algorithms = algorithms
      self.alg_counter = 0
  
imports: import os
  import random
  import numpy
  import logging
  import sherpa
  import pandas
  import sklearn.gaussian_process
  from sherpa.core import Choice, Continuous, Discrete, Ordinal, AlgorithmState
  from sherpa.core import rng
  import sklearn.model_selection
  import collections
label_desc: Use image node_id 1 to create a new Chain object from inherited base classes: Algorithm with example: obj = Chain(algorithms)