llmize.methods.hlmea module

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

Bases: Optimizer

No-index:

HLMEA (Hyper-heuristic LLM-driven Evolutionary Algorithm) optimizer for numerical optimization.

HLMEA combines evolutionary algorithm principles with LLM guidance to maintain solution diversity and avoid premature convergence. It uses hyper-heuristics to adaptively select evolutionary operators (selection, crossover, mutation) based on the optimization progress.

This optimizer is best suited for: - Combinatorial optimization problems (e.g., TSP, scheduling) - Large search spaces where diversity is crucial - Problems requiring exploration of multiple solution regions - Complex optimization landscapes with many local optima

Example

>>> def tsp_distance(tour):
...     # Calculate total distance for TSP tour
...     return total_distance
>>>
>>> hlmea = HLMEA(
...     problem_text="Solve the Traveling Salesman Problem - find shortest tour",
...     obj_func=tsp_distance,
...     api_key="your-api-key"
... )
>>> result = hlmea.minimize(
...     init_samples=[["A", "B", "C", "D"], ["A", "C", "B", "D"]],
...     init_scores=[100, 120],
...     num_steps=50,
...     batch_size=10
... )

Note

HLMEA uses sophisticated evolutionary strategies guided by LLM prompts to maintain diversity and avoid premature convergence.

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

Initialize the HLMEA optimizer.

Parameters:
  • problem_text (str, optional) – Natural language description of the optimization problem. For combinatorial problems, specify the problem type and constraints.

  • 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', hp_text='The solutions below are generated randomly.')[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 HLMEA 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.