code: def getShocks(self):
          '''
          Finds permanent and transitory income "shocks" for each agent this period.  As this is a
          perfect foresight model, there are no stochastic shocks: PermShkNow = PermGroFac for each
          agent (according to their t_cycle) and TranShkNow = 1.0 for all agents.
  
          Parameters
          ----------
          None
  
          Returns
          -------
          None
          '''
          PermGroFac = np.array(self.PermGroFac)
          self.PermShkNow = PermGroFac[self.t_cycle-1] # cycle time has already been advanced
          self.TranShkNow = np.ones(self.AgentCountf getShocks(self):
          '''
          Finds permanent and transitory income "shocks" for each agent this period.  As this is a
          perfect foresight model, there are no stochastic shocks: PermShkNow = PermGroFac for each
          agent (according to their t_cycle) and TranShkNow = 1.0 for all agents.
  
          Parameters
          ----------
          None
  
          Returns
          -------
          None
          '''
          PermGroFac = np.array(self.PermGroFac)
          self.PermShkNow = PermGroFac[self.t_cycle-1] # cycle time has already been advanced
          self.TranShkNow = np.ones(self.AgentCount)
docs: Finds permanent and transitory income "shocks" for each agent this period.  As this is a
          perfect foresight model, there are no stochastic shocks: PermShkNow = PermGroFac for each
          agent (according to their t_cycle) and TranShkNow = 1.0 for all agents.
  
          Parameters
          ----------
          None
  
          Returns
          -------
          None