File size: 1,050 Bytes
88575f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import random
import operator

def random_expr():
    return f"{random.randint(1, 10)} {random.choice(['+', '-', '*', '/'])} {random.randint(1, 10)}"

def eval_expr(expr):
    try:
        return eval(expr)
    except:
        return float('inf')

def mutate(expr):
    parts = expr.split()
    idx = random.randint(0, 2)
    if idx % 2 == 0:
        parts[idx] = str(random.randint(1, 10))
    else:
        parts[idx] = random.choice(['+', '-', '*', '/'])
    return ' '.join(parts)

def evolve_agent(name, target, emotion_mod, memory):
    population = [random_expr() for _ in range(5)]
    scored = [(expr, -abs(eval_expr(expr) - target)) for expr in population]
    best_expr, best_score = max(scored, key=lambda x: x[1])
    for _ in range(3 + emotion_mod):
        mutated = mutate(best_expr)
        score = -abs(eval_expr(mutated) - target)
        if score > best_score:
            best_expr, best_score = mutated, score
    memory.store(name, best_expr, best_score)
    return {'agent': name, 'expression': best_expr, 'score': best_score}