docs: def survival(self,parents,offspring,elite=None,elite_index=None,X=None,X_O=None,F=None,F_O=None):
          """routes to the survival method, returns survivors"""
          if self.sel == 'tournament':
              survivors, survivor_index = self.tournament(parents + offspring, self.tourn_size, num_selections = len(parents))
          elif self.sel == 'lexicase':
              survivor_index = self.lexicase(np.vstack((F,F_O)), num_selections = len(parents), survival = True)
              survivors = [(parents+ offspring)[s] for s in survivor_index]
          elif self.sel == 'epsilon_lexicase':
              # survivors, survivor_index = self.epsilon_lexicase(parents + offspring, num_selections = len(parents), survival = True)
              if self.lex_size:
                  sizes = [len(i.stack) for i in (parents + offspring)]
                  survivor_index = self.epsilon_lexicase(np.vstack((F,F_O)), sizes, num_selections = F.shape[0], survival = True)
                  survivors = [(parents+ offspring)[s] for s in survivor_index]
              else:
                  survivor_index = self.epsilon_lexicase(np.vstack((F,F_O)), [], num_selections = F.shape[0], survival = True)
                  survivors = [(parents+ offspring)[s] for s in survivor_index]
          elif self.sel == 'deterministic_crowding':
              survivors, survivor_index = self.deterministic_crowding(parents,offspring,X,X_O)
          elif self.sel == 'random':
              # pdb.set_trace()
              survivor_index = self.random_state.permutation(np.arange(2*len(parents)))[:len(parents)]
              survivors = [(parents + offspring)[s] for s in survivor_index]
          # elitism
          if self.elitism:
              if min([x.fitness for x in survivors]) > elite.fitness:
                  # if the elite individual did not survive and elitism is on, replace worst individual with elite
                  rep_index = np.argmax([x.fitness for x in survivors])
                  survivors[rep_index] = elite
                  survivor_index[rep_index] = elite_index
          # return survivors
  
          return survivors,survivor_index