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.