Managers of systems of shared resources typically have many separate goals. Examples are efficient utilization of the resources among its users and ensuring no user’s satisfaction in the system falls below a preset minimal level. Since such goals will usually conflict with one another, either implicitly or explicitly the manager must determine the relative importance of the goals, encapsulating that into an overall utility function rating the possible behaviors of the entire system. Here we demonstrate a distributed, robust, and adaptive way to optimize that overall function. Our approach is to interpose adaptive agents between each user and the system, where each such agent is working to maximize its own private utility function. In turn, each such agent’s function should be both relatively easy for the agent to learn to optimize, and “aligned” with the overall utility function of the system manager — an overall function that is based on but in general different from the ...