| """Test basique du système MLE.""" |
| import sys |
| sys.path.insert(0, '.') |
|
|
| import numpy as np |
| from mle.mle_system import MLESystem |
| from mle.memory import VECTOR_SIZE |
|
|
| np.random.seed(42) |
|
|
| print("Initializing MLESystem...") |
| mle = MLESystem(memory_capacity=100, online_learning=True) |
|
|
| print(f"Memory size: {mle.memory.size}") |
| print(f"Router vectors: {mle.router.get_stats()['n_vectors']}") |
|
|
| |
| vec = np.zeros(VECTOR_SIZE, dtype=np.uint8) |
| vec[np.random.choice(VECTOR_SIZE, size=200, replace=False)] = 1 |
|
|
| print(f"\nProcessing vector with {np.sum(vec)} active bits...") |
| result = mle.process(vec) |
|
|
| print(f"Converged: {result.converged}") |
| print(f"Iterations: {result.n_iterations}") |
| if result.energy_trajectory: |
| print(f"Final energy: {result.energy_trajectory[-1]:.1f}") |
| print(f"Energy trajectory: {[f'{e:.1f}' for e in result.energy_trajectory[:10]]}") |
|
|
| |
| print("\nTesting binding...") |
| a = np.zeros(VECTOR_SIZE, dtype=np.uint8) |
| a[np.random.choice(VECTOR_SIZE, size=200, replace=False)] = 1 |
|
|
| b = np.zeros(VECTOR_SIZE, dtype=np.uint8) |
| b[np.random.choice(VECTOR_SIZE, size=200, replace=False)] = 1 |
|
|
| bound = mle.binder.bind(a, b) |
| recovered = mle.binder.unbind(bound, a) |
| similarity = np.mean(recovered == b) |
| print(f"Binding similarity: {similarity:.3f}") |
|
|
| |
| print("\nTesting query...") |
| neighbors = mle.query(vec, k=3) |
| print(f"Found {len(neighbors)} neighbors") |
|
|
| |
| print("\nMetrics summary:") |
| summary = mle.get_metrics_summary() |
| for section, data in summary.items(): |
| print(f" {section}: {data}") |
|
|
| print("\n✓ All basic tests passed!") |