This example demonstrates how to use the LoongFlow framework to solve a challenging computational geometry optimization problem. The goal is to evolve a Python algorithm that finds a specific configuration of points within a unit square.
The objective is to place
For the detailed mathematical definition and problem context, please refer to the official AlphaEvolve problem description: Heilbronn Problem Results
In this specific configuration (
initial_program.py: The starting seed code. It contains a basic function signaturefind_best_placementand a simulated annealing implementation that needs to be evolved.eval_program.py: The evaluation logic. It executes the generated code in a secure/isolated manner, verifies geometric constraints (distinct points, non-collinear, inside unit square), and calculates the score based on the target area.task_config.yaml: The main configuration file defining the LLM prompt, evolution parameters (iterations, target score), and the agent components (Planner, Executor, Summarizer).
To start the evolution process, you need to use the math_agent_agent.py entry point. Ensure your PYTHONPATH includes the project root so that python can find the agents and evolux modules.
Ensure you are in the root directory of your local project (the directory containing agents/ and evolux/).
Run the following command to kick off the evolution. This command loads the base configuration and injects the initial code and evaluation logic from the respective files.
python agents/math_agent/math_agent_agent.py \
--config agents/math_agent/examples/heilbronn_problem_for_convex_regions/task_config.yaml \
--initial-file agents/math_agent/examples/heilbronn_problem_for_convex_regions/initial_program.py \
--eval-file agents/math_agent/examples/heilbronn_problem_for_convex_regions/eval_program.py \
--log-level INFOArguments Explanation:
--config: Path to the YAML configuration file (task_config.yaml).--initial-file: Path to the Python file containing the seed code (initial_program.py). The content of this file will be injected intoevolve.initial_code.--eval-file: Path to the Python file containing the evaluation logic (eval_program.py). The content will be injected intoevolve.evaluator.evaluate_code.--log-level: Sets the logging verbosity (e.g., INFO, DEBUG).
The task_config.yaml is pre-configured with the following strategies:
- Planner:
evolve_planner(Handles the strategic direction of code modification). - Executor:
evolve_executor_fuse(A powerful executor that fuses multiple thought processes/candidates). - Summarizer:
evolve_summary(Summarizes the results of the execution for the next iteration). - Target: The evolution aims for a target score of
1.0(normalized against the benchmark area).
The system iterates through generations of code, attempting to maximize the minimum triangle area.
The best solution found by LoongFlow achieved a minimum area of 0.030900663674639613, surpassing the previous SOTA benchmark of 0.0306.
Result Metrics:
-
Optimized Minimum Area (
$n=13$ ): 0.03090066
- TimeoutError: The
eval_program.pyenforces a strict timeout (default 3600s in config, though internal function calls have shorter timeouts). If the generated code enters an infinite loop, it will be terminated and marked as a failure. - ModuleNotFoundError: Ensure your
PYTHONPATHis set correctly. You may need to runexport PYTHONPATH=$PYTHONPATH:.in the project root before running the command.