-
Notifications
You must be signed in to change notification settings - Fork 920
Expand file tree
/
Copy pathinitial_program.py
More file actions
51 lines (36 loc) · 1.34 KB
/
initial_program.py
File metadata and controls
51 lines (36 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# EVOLVE-BLOCK-START
"""Function minimization example for OpenEvolve"""
import numpy as np
def search_algorithm(iterations=1000, bounds=(-5, 5)):
"""
A simple random search algorithm that often gets stuck in local minima.
Args:
iterations: Number of iterations to run
bounds: Bounds for the search space (min, max)
Returns:
Tuple of (best_x, best_y, best_value)
"""
# Initialize with a random point
best_x = np.random.uniform(bounds[0], bounds[1])
best_y = np.random.uniform(bounds[0], bounds[1])
best_value = evaluate_function(best_x, best_y)
for _ in range(iterations):
# Simple random search
x = np.random.uniform(bounds[0], bounds[1])
y = np.random.uniform(bounds[0], bounds[1])
value = evaluate_function(x, y)
if value < best_value:
best_value = value
best_x, best_y = x, y
return best_x, best_y, best_value
# EVOLVE-BLOCK-END
# This part remains fixed (not evolved)
def evaluate_function(x, y):
"""The complex function we're trying to minimize"""
return np.sin(x) * np.cos(y) + np.sin(x * y) + (x**2 + y**2) / 20
def run_search():
x, y, value = search_algorithm()
return x, y, value
if __name__ == "__main__":
x, y, value = run_search()
print(f"Found minimum at ({x}, {y}) with value {value}")