docs: def initialize_initial_state(self):
          """
          This method will automatically re-adjust the cpds and the edges added to the bayesian network.
          If an edge that is added as an intra time slice edge in the 0th timeslice, this method will
          automatically add it in the 1st timeslice. It will also add the cpds. However, to call this
          method, one needs to add cpds as well as the edges in the bayesian network of the whole
          skeleton including the 0th and the 1st timeslice,.
  
          Examples
          --------
          >>> from pgmpy.models import DynamicBayesianNetwork as DBN
          >>> from pgmpy.factors.discrete import TabularCPD
          >>> student = DBN()
          >>> student.add_nodes_from(['D', 'G', 'I', 'S', 'L'])
          >>> student.add_edges_from([(('D', 0),('G', 0)),(('I', 0),('G', 0)),(('D', 0),('D', 1)),(('I', 0),('I', 1))])
          >>> grade_cpd = TabularCPD(('G', 0), 3, [[0.3, 0.05, 0.9, 0.5],
          ...                                      [0.4, 0.25, 0.08, 0.3],
          ...                                      [0.3, 0.7, 0.02, 0.2]],
          ...                        evidence=[('I', 0),('D', 0)],
          ...                        evidence_card=[2, 2])
          >>> d_i_cpd = TabularCPD(('D', 1), 2, [[0.6, 0.3],
          ...                                    [0.4, 0.7]],
          ...                      evidence=[('D', 0)],
          ...                      evidence_card=2)
          >>> diff_cpd = TabularCPD(('D', 0), 2, [[0.6, 0.4]])
          >>> intel_cpd = TabularCPD(('I',0), 2, [[0.7, 0.3]])
          >>> i_i_cpd = TabularCPD(('I', 1), 2, [[0.5, 0.4],
          ...                                    [0.5, 0.6]],
          ...                      evidence=[('I', 0)],
          ...                      evidence_card=2)
          >>> student.add_cpds(grade_cpd, d_i_cpd, diff_cpd, intel_cpd, i_i_cpd)
          >>> student.initialize_initial_state()
          """
          for cpd in self.cpds:
              temp_var = (cpd.variable[0], 1 - cpd.variable[1])
              parents = self.get_parents(temp_var)
              if not any(x.variable == temp_var for x in self.cpds):
                  if all(x[1] == parents[0][1] for x in parents):
                      if parents:
                          evidence_card = cpd.cardinality[:0:-1]
                          new_cpd = TabularCPD(temp_var, cpd.variable_card,
                                               cpd.values.reshape(cpd.variable_card, np.prod(evidence_card)),
                                               parents, evidence_card)
                      else:
                          if cpd.get_evidence():
                              initial_cpd = cpd.marginalize(cpd.get_evidence(), inplace=False)
                              new_cpd = TabularCPD(temp_var, cpd.variable_card, np.reshape(initial_cpd.values, (-1, 2)))
                          else:
                              new_cpd = TabularCPD(temp_var, cpd.variable_card, np.reshape(cpd.values, (-1, 2)))
                      self.add_cpds(new_cpd)
              self.check_model()