import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="whitegrid")
import metaheuristic_designer as mhd
from metaheuristic_designer.benchmarks import Sphere
from metaheuristic_designer import simple, check_random_state

objfunc = Sphere(dimension=5, mode="min")
rng = check_random_state(42)

# CHANGE LATER
algo = simple.evolution_strategy_real(
    objfunc,
    population_size=100,
    stop_cond="max_iterations",
    max_iterations=5000,
    reporter="silent",
    random_state=rng,
)
algo.optimize()
df = algo.history_tracker.to_pandas()

fig, ax = plt.subplots(figsize=(8, 5))
sns.lineplot(data=df, x="iteration", y="best_objective", linewidth=2, ax=ax)
ax.set_xlabel("Generation")
ax.set_ylabel("Objective")
ax.set_title("Convergence Plot")
plt.show()