llmize.methods.adopro module

class llmize.methods.adopro.ADOPRO(problem_text=None, obj_func=None, llm_model=None, api_key=None)[source]

Bases: Optimizer

No-index:

ADOPRO (Adaptive Optimization by PROmpting) optimizer for numerical optimization using LLMs.

ADOPRO is an enhanced version of OPRO that dynamically adjusts prompts based on optimization progress. It monitors the optimization trajectory and adapts the prompting strategy to escape local optima and improve convergence.

This optimizer is best suited for: - Complex optimization landscapes with multiple local optima - Problems where OPRO gets stuck or converges prematurely - Adaptive optimization strategies - Problems requiring dynamic exploration-exploitation balance

Example

>>> def rastrigin(x):
...     A = 10
...     n = len(x)
...     return A*n + sum(float(i)**2 - A*math.cos(2*math.pi*float(i)) for i in x)
>>>
>>> adopro = ADOPRO(
...     problem_text="Minimize the Rastrigin function (highly multimodal)",
...     obj_func=rastrigin,
...     api_key="your-api-key"
... )
>>> result = adopro.minimize(
...     init_samples=[["1", "1"], ["2", "2"], ["0", "0"]],
...     init_scores=[...],
...     num_steps=20
... )

Note

This class inherits from Optimizer and uses adaptive prompting strategies to improve upon the basic OPRO approach.

__init__(problem_text=None, obj_func=None, llm_model=None, api_key=None)[source]

Initialize the ADOPRO optimizer.

Parameters:
  • problem_text (str, optional) – Natural language description of the optimization problem. Should include information about the complexity and any known challenges (e.g., multimodality).

  • obj_func (callable, optional) – Objective function that takes a solution and returns a numerical score.

  • llm_model (str, optional) – Name of the LLM model to use. If None, uses the default from configuration file.

  • api_key (str, optional) – API key for the LLM service. If None, will attempt to read from environment variables.

meta_prompt(batch_size, example_pairs, optimization_type='maximize')[source]

Generate a prompt for the LLM model to generate new solutions. Parameters: - batch_size (int): Number of new solutions to generate. - example_pairs (str): Example solutions and scores. - optimization_type (str): “maximize” or “minimize” (default: “maximize”).

Returns: - text: A formatted prompt structure.

optimize(init_samples=None, init_scores=None, num_steps=None, batch_size=None, temperature=None, callbacks=None, verbose=1, optimization_type='maximize', parallel_n_jobs=None)[source]

Run the ADOPRO optimization algorithm.

Parameters: - init_samples (list): A list of initial solutions. - init_scores (list): A list of initial scores corresponding to init_samples. - num_steps (int): The number of optimization steps (default: 50). - batch_size (int): The number of new solutions to generate at each step (default: 5). - temperature (float): The temperature for the LLM model (default: 1.0). - callbacks (list): A list of callback functions to be triggered at the end of each step. - optimization_type (str): “maximize” or “minimize” (default: “maximize”).

Returns: - results (OptimizationResult): An object containing the optimization results.