llmize.methods.hlmsa module

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

Bases: Optimizer

No-index:

HLMSA (Hyper-heuristic LLM-driven Simulated Annealing) optimizer for numerical optimization.

HLMSA combines simulated annealing principles with LLM optimization to provide controlled exploration of the solution space. It uses adaptive cooling rates and perturbation strategies to balance exploration and exploitation.

This optimizer is best suited for: - Problems with many local optima requiring careful exploration - Fine-tuning solutions where small improvements matter - Temperature-sensitive optimization problems - Problems where controlled convergence is important

Example

>>> def multimodal(x):
...     # Function with many local optima
...     return math.sin(5*x) + math.cos(3*x) + x**2
>>>
>>> hlmsa = HLMSA(
...     problem_text="Find global minimum of multimodal function",
...     obj_func=multimodal,
...     api_key="your-api-key"
... )
>>> result = hlmsa.minimize(
...     init_samples=[["0"], ["1"], ["-1"]],
...     init_scores=[...],
...     num_steps=30,
...     batch_size=5
... )

Note

HLMSA uses simulated annealing principles guided by LLM prompts to dynamically adjust cooling rates and perturbation strategies.

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

Initialize the HLMSA optimizer.

Parameters:
  • problem_text (str, optional) – Natural language description of the optimization problem. For multimodal problems, mention the presence of local optima.

  • 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 using Simulated Annealing. 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 HLMSA 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.