Self-Optimizing Agents