Optimal Monetary Policy with Heterogeneous Agents