code: def _mac(model, obs, h):
      
      B, n_agents = obs.size(0), obs.size(1)
      obs_flat = obs.reshape([B * n_agents, -1])
      h_flat = [s.reshape([B * n_agents, -1]) for s in h]
      q_flat, _, _, h_flat = model.forward({"obs": obs_flat}, h_flat)
      return q_flat.reshape(
          [B, n_agents, -1]), [s.reshape([B, n_agents, -1]) for s in h_flat]
docs: Forward pass of the multi-agent controller.
  
      Arguments:
          model: TorchModel class
          obs: Tensor of shape [B, n_agents, obs_size]
          h: List of tensors of shape [B, n_agents, h_size]
  
      Returns:
          q_vals: Tensor of shape [B, n_agents, n_actions]
          h: Tensor of shape [B, n_agents, h_size]