cooptimizing
Cooptimizing (also written co-optimizing) refers to optimizing two or more interacting components, objectives, or subsystems within a single framework to achieve better overall performance than optimizing them in isolation. It emphasizes the interdependencies among decisions and outcomes, where changes in one part influence others.
Common domains include multi-objective optimization and multi-agent systems, co-design of hardware and software, and compiler optimization
Methodologically, cooptimization uses mathematical programming (linear, integer, mixed-integer), bilevel or hierarchical optimization, and multi-objective approaches that
Challenges include non-convexity, scalability, and accurately representing interdependencies. Evaluations can be costly and time-consuming, requiring simulations