AdaEvolve: Adaptive LLM Driven Zeroth-Order Optimization
Organizations: University of California, Berkeley · Bespoke Labs
Abstract
The paradigm of automated program generation is shifting from one-shot generation to inference-time search, where Large Language Models (LLMs) function as semantic mutation operators within evolutionary loops. While effective, these systems are currently governed by static schedules that fail to account for the non-stationary dynamics of the search process. This rigidity results in substantial computational waste, as resources are indiscriminately allocated to stagnating populations while promising frontiers remain under-exploited. We introduce AdaEvolve, a framework that reformulates LLM-driven evolution as a hierarchical adaptive optimization problem. AdaEvolve uses an "accumulated improvement signal" to unify decisions across three levels: Local Adaptation, which dynamically modulates the exploration intensity within a population of solution candidates; Global Adaptation, which routes the global resource budget via bandit-based scheduling across different solution candidate populations; and Meta-Guidance which generates novel solution tactics based on the previously generated solutions and their corresponding improvements when the progress stalls. We demonstrate that AdaEvolve consistently outperforms the open-sourced baselines across 185 different open-ended optimization problems including combinatorial, systems optimization and algorithm design problems.
Figures & tables
| Ablation Setting | Circle Packing | Signal Processing |
|---|---|---|
| AdaEvolve | ||
| w/o Local Adaptation | ||
| w/o Adaptive Island Selection | ||
| w/o Meta-Guidance | ||
| Fixed 2 Islands | ||
| Fixed 5 Islands |
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| Use case | Meta-Guidance Solution Tactics | Approach type |
|---|---|---|
| Math / equation systems | Solve nonlinear systems using a trust-region root finder | scipy.optimize.root |
| Exploit structure by directly solving linear systems | scipy.linalg.solve | |
| Isolate scalar roots with bracketed search | scipy.optimize.brentq | |
| Iterate toward equilibrium with damped fixed-point updates | Fixed-point iteration | |
| Generate symbolic expressions before numerical evaluation | sympy.lambdify + solver | |
| Continuous optimization | Perform constrained minimization under geometric constraints | scipy.optimize.minimize (SLSQP) |
| Problem | Objective (exact task definition) |
|---|---|
| Circle Packing (Square) | Pack disjoint circles inside a unit square so as to maximize the sum of their radii . |
| Circle Packing (Rectangle) | Pack disjoint circles inside a rectangle of perimeter so as to maximize the sum of their radii . |
| Heilbronn Problem (Triangle) | Place points on or inside a triangle of unit area so that the minimum area of any triangle formed by the points is maximized . |
| Heilbronn Problem (Convex Region) | Place points on or inside a convex region of unit area so that the minimum area of any triangle formed by the points is maximized . |
| MinMax Distance | For given and dimension , find points in that maximize the ratio between the minimum and maximum pairwise distances . |
| Signal Processing | Optimize a continuous signal processing objective under noisy evaluation, where candidate programs transform an input signal and are scored by an external evaluator. |
| Backbone | OpenEvolve | AdaEvolve |
|---|---|---|
| GPT-5 | 42% | 49% |
| Gemini-3-Pro | 44% | 50% |
Large Language Model-Guided Optimization
Large Language Model-Guided Optimization uses language models to propose, steer, and refine solutions to hard search and design problems.
See all 587 papers