diff --git a/MNIST_Evolutionary_vs_Adam_Training.ipynb b/MNIST_Evolutionary_vs_Adam_Training.ipynb
new file mode 100644
index 0000000..e9289b7
--- /dev/null
+++ b/MNIST_Evolutionary_vs_Adam_Training.ipynb
@@ -0,0 +1,5059 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torchvision\n",
+ "import torchvision.transforms as transforms\n",
+ "import os\n",
+ "from tqdm import tqdm\n",
+ "import matplotlib.pyplot as plt\n",
+ "import itertools\n",
+ "\n",
+ "# --- 1. Hyperparameters and Configuration ---\n",
+ "DEVICE = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
+ "INPUT_SIZE = 28 * 28 # MNIST image dimensions\n",
+ "NUM_CLASSES = 10\n",
+ "BATCH_SIZE = 1024 # Increased for faster debugging iterations\n",
+ "LEARNING_RATE_ADAM = 0.001\n",
+ "EPOCHS = 5 # Number of epochs for both Adam and EA\n",
+ "\n",
+ "# Evolutionary Algorithm Parameters\n",
+ "POPULATION_SIZE = 3000 # Using the size you found was more stable\n",
+ "BATCHES_PER_GENERATION = 1\n",
+ "MUTATION_RESET_PROB = 0.00001\n",
+ "TOURNAMENT_SIZE = 20 # Number of individuals in each selection tournament\n",
+ "ELITISM_RATE = 0.05 # Keep the top 5% of models unchanged in the next generation\n",
+ "\n",
+ "# --- 2. Model Architecture ---\n",
+ "# A simple MLP suitable for MNIST\n",
+ "class SimpleNet(nn.Module):\n",
+ " def __init__(self):\n",
+ " super(SimpleNet, self).__init__()\n",
+ " self.fc1 = nn.Linear(INPUT_SIZE, 256)\n",
+ " self.relu1 = nn.ReLU()\n",
+ " self.fc2 = nn.Linear(256, 128)\n",
+ " self.relu2 = nn.ReLU()\n",
+ " self.fc3 = nn.Linear(128, NUM_CLASSES)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " x = x.view(-1, INPUT_SIZE) # Flatten the image\n",
+ " out = self.fc1(x)\n",
+ " out = self.relu1(out)\n",
+ " out = self.fc2(out)\n",
+ " out = self.relu2(out)\n",
+ " out = self.fc3(out)\n",
+ " return out\n",
+ "\n",
+ "# --- 3. Evolutionary Operators ---\n",
+ "def tournament_selection(population, fitness_scores):\n",
+ " \"\"\"Selects a parent using tournament selection.\"\"\"\n",
+ " # Get random indices for the tournament\n",
+ " tournament_indices = torch.randint(0, len(population), (TOURNAMENT_SIZE,))\n",
+ " tournament_fitnesses = fitness_scores[tournament_indices]\n",
+ "\n",
+ " # Find the winner of the tournament (best fitness)\n",
+ " winner_local_idx = torch.argmax(tournament_fitnesses)\n",
+ " winner_global_idx = tournament_indices[winner_local_idx]\n",
+ "\n",
+ " return population[winner_global_idx]\n",
+ "\n",
+ "def crossover(parent1, parent2):\n",
+ " \"\"\"Performs uniform crossover between two parent models.\"\"\"\n",
+ " child = SimpleNet().to(DEVICE)\n",
+ " child_dict = child.state_dict()\n",
+ " parent1_dict = parent1.state_dict()\n",
+ " parent2_dict = parent2.state_dict()\n",
+ "\n",
+ " for key in parent1_dict.keys():\n",
+ " mask = torch.randint(0, 2, size=parent1_dict[key].shape, device=DEVICE).float()\n",
+ " child_dict[key] = (parent1_dict[key] * mask) + (parent2_dict[key] * (1 - mask))\n",
+ "\n",
+ " child.load_state_dict(child_dict)\n",
+ " return child\n",
+ "\n",
+ "def mutate(model):\n",
+ " \"\"\"Performs reset mutation.\"\"\"\n",
+ " with torch.no_grad():\n",
+ " for param in model.parameters():\n",
+ " mask = torch.rand_like(param.data) < MUTATION_RESET_PROB\n",
+ " new_weights = torch.randn_like(param.data)\n",
+ " param.data[mask] = new_weights[mask]\n",
+ " return model\n",
+ "\n",
+ "# --- 4. Data Loading ---\n",
+ "def get_data_loaders():\n",
+ " \"\"\"Prepares the MNIST train and test data loaders.\"\"\"\n",
+ " transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])\n",
+ " data_path = './data'\n",
+ " if not os.path.exists(data_path): os.makedirs(data_path)\n",
+ " train_dataset = torchvision.datasets.MNIST(root=data_path, train=True, transform=transform, download=True)\n",
+ " test_dataset = torchvision.datasets.MNIST(root=data_path, train=False, transform=transform, download=True)\n",
+ " train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=BATCH_SIZE, shuffle=True)\n",
+ " test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=BATCH_SIZE, shuffle=False)\n",
+ " return train_loader, test_loader\n",
+ "\n",
+ "# --- 5. Evaluation Function ---\n",
+ "def evaluate_model(model, loader):\n",
+ " \"\"\"Calculates the accuracy of a model on a given data loader.\"\"\"\n",
+ " model.eval()\n",
+ " with torch.no_grad():\n",
+ " correct, total = 0, 0\n",
+ " for images, labels in loader:\n",
+ " images, labels = images.to(DEVICE), labels.to(DEVICE)\n",
+ " outputs = model(images)\n",
+ " _, predicted = torch.max(outputs.data, 1)\n",
+ " total += labels.size(0)\n",
+ " correct += (predicted == labels).sum().item()\n",
+ " return 100 * correct / total\n",
+ "\n",
+ "# --- 6. Plotting Function ---\n",
+ "def plot_performance(adam_history, ea_history):\n",
+ " \"\"\"Plots the sample efficiency of Adam vs. EA.\"\"\"\n",
+ " plt.figure(figsize=(12, 7))\n",
+ "\n",
+ " if adam_history:\n",
+ " adam_batches, adam_accs = zip(*adam_history)\n",
+ " plt.plot(adam_batches, adam_accs, label='Adam Optimizer', color='blue', marker='o', markersize=4, linestyle='--')\n",
+ "\n",
+ " if ea_history:\n",
+ " ea_batches, ea_accs = zip(*ea_history)\n",
+ " plt.plot(ea_batches, ea_accs, label='Evolutionary Algorithm', color='green', marker='x', markersize=4)\n",
+ "\n",
+ " plt.title('Sample Efficiency: Adam vs. Evolutionary Algorithm')\n",
+ " plt.xlabel('Number of Batches Processed')\n",
+ " plt.ylabel('Test Accuracy (%)')\n",
+ " plt.grid(True)\n",
+ " plt.legend()\n",
+ " plt.tight_layout()\n",
+ " plt.savefig('performance_comparison.png')\n",
+ " print(\"\\nPerformance plot saved to 'performance_comparison.png'\")\n",
+ " plt.show()\n",
+ "\n",
+ "# --- 7. Main Execution ---\n",
+ "def main():\n",
+ " if not torch.cuda.is_available():\n",
+ " print(\"CUDA not available. This script is designed for GPU acceleration.\")\n",
+ " return\n",
+ "\n",
+ " print(f\"Using device: {DEVICE}\")\n",
+ " train_loader, test_loader = get_data_loaders()\n",
+ " loss_fn = nn.CrossEntropyLoss()\n",
+ "\n",
+ " total_batches_per_epoch = len(train_loader)\n",
+ " total_batches = total_batches_per_epoch * EPOCHS\n",
+ " NUM_GENERATIONS = total_batches // BATCHES_PER_GENERATION\n",
+ "\n",
+ " print(f\"Both algorithms will run for approx {total_batches} batches.\")\n",
+ " print(f\"EA will run for {NUM_GENERATIONS} generations of {BATCHES_PER_GENERATION} batches each.\")\n",
+ "\n",
+ " adam_history = []\n",
+ " ea_history = []\n",
+ "\n",
+ " # --- Part A: Train a population with an Evolutionary Algorithm ---\n",
+ " print(\"\\n--- Training Population with Evolutionary Algorithm ---\")\n",
+ " population = [SimpleNet().to(DEVICE) for _ in range(POPULATION_SIZE)]\n",
+ " for model in population: model.eval()\n",
+ " streams = [torch.cuda.Stream() for _ in range(POPULATION_SIZE)]\n",
+ "\n",
+ " batch_counter_ea = 0\n",
+ " train_iterator = iter(itertools.cycle(train_loader))\n",
+ "\n",
+ " for generation in tqdm(range(NUM_GENERATIONS), desc=\"EA Generations\"):\n",
+ " cumulative_fitness_scores = torch.zeros(POPULATION_SIZE, device=DEVICE)\n",
+ "\n",
+ " for batch_idx in range(BATCHES_PER_GENERATION):\n",
+ " images, labels = next(train_iterator)\n",
+ " images, labels = images.to(DEVICE), labels.to(DEVICE)\n",
+ "\n",
+ " with torch.no_grad():\n",
+ " for i in range(POPULATION_SIZE):\n",
+ " with torch.cuda.stream(streams[i]):\n",
+ " outputs = population[i](images)\n",
+ " loss = loss_fn(outputs, labels)\n",
+ " cumulative_fitness_scores[i] += -loss\n",
+ "\n",
+ " torch.cuda.synchronize()\n",
+ "\n",
+ " batch_counter_ea += BATCHES_PER_GENERATION\n",
+ " fitness_scores = cumulative_fitness_scores\n",
+ "\n",
+ " best_fitness = fitness_scores.max().item() / BATCHES_PER_GENERATION\n",
+ " avg_fitness = fitness_scores.mean().item() / BATCHES_PER_GENERATION\n",
+ " print(f\"\\n[Gen {generation+1}/{NUM_GENERATIONS}] Best Fitness: {best_fitness:.4f}, Pop Avg Fitness: {avg_fitness:.4f}\")\n",
+ "\n",
+ " # --- Elitism ---\n",
+ " sorted_indices = torch.argsort(fitness_scores, descending=True)\n",
+ " num_to_keep = int(POPULATION_SIZE * ELITISM_RATE)\n",
+ " new_population = [population[i] for i in sorted_indices[:num_to_keep]]\n",
+ "\n",
+ " # --- Reproduction with Tournament Selection ---\n",
+ " num_children_to_create = POPULATION_SIZE - num_to_keep\n",
+ " with torch.no_grad():\n",
+ " for _ in range(num_children_to_create):\n",
+ " parent1 = tournament_selection(population, fitness_scores)\n",
+ " parent2 = tournament_selection(population, fitness_scores)\n",
+ " child = crossover(parent1, parent2)\n",
+ " child = mutate(child)\n",
+ " child.eval()\n",
+ " new_population.append(child)\n",
+ " population = new_population\n",
+ "\n",
+ " # --- Track Performance ---\n",
+ " accuracy = evaluate_model(population[0], test_loader)\n",
+ " ea_history.append((batch_counter_ea, accuracy))\n",
+ " print(f\" -> Best Model Test Accuracy: {accuracy:.2f}%\")\n",
+ "\n",
+ " # --- Part B: Train a model with Adam Optimizer (Baseline) ---\n",
+ " print(\"\\n--- Training Baseline Model with Adam Optimizer ---\")\n",
+ " adam_model = SimpleNet().to(DEVICE)\n",
+ " optimizer = torch.optim.Adam(adam_model.parameters(), lr=LEARNING_RATE_ADAM)\n",
+ " batch_counter = 0\n",
+ "\n",
+ " for epoch in range(EPOCHS):\n",
+ " adam_model.train()\n",
+ " for images, labels in tqdm(train_loader, desc=f\"Adam Epoch {epoch+1}/{EPOCHS}\"):\n",
+ " images, labels = images.to(DEVICE), labels.to(DEVICE)\n",
+ " outputs = adam_model(images)\n",
+ " loss = loss_fn(outputs, labels)\n",
+ " optimizer.zero_grad()\n",
+ " loss.backward()\n",
+ " optimizer.step()\n",
+ " batch_counter += 1\n",
+ " if batch_counter % BATCHES_PER_GENERATION == 0 or batch_counter >= total_batches:\n",
+ " accuracy = evaluate_model(adam_model, test_loader)\n",
+ " adam_history.append((batch_counter, accuracy))\n",
+ "\n",
+ " # --- Final Comparison ---\n",
+ " print(\"\\n--- Final Results ---\")\n",
+ " adam_accuracy = evaluate_model(adam_model, test_loader) if adam_history else 0\n",
+ " ea_accuracy = evaluate_model(population[0], test_loader) if ea_history else 0\n",
+ " print(f\"Final Adam Model Accuracy: {adam_accuracy:.2f}%\")\n",
+ " print(f\"Final Best EA Model Accuracy: {ea_accuracy:.2f}%\")\n",
+ "\n",
+ " # --- Plotting ---\n",
+ " plot_performance(adam_history, ea_history)\n",
+ "\n",
+ "if __name__ == \"__main__\":\n",
+ " main()\n",
+ "\n"
+ ],
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Using device: cuda\n",
+ "Both algorithms will run for approx 295 batches.\n",
+ "EA will run for 295 generations of 1 batches each.\n",
+ "\n",
+ "--- Training Population with Evolutionary Algorithm ---\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 0%| | 0/295 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "\n",
+ "[Gen 1/295] Best Fitness: -2.2862, Pop Avg Fitness: -2.3077\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 0%| | 1/295 [00:15<1:18:06, 15.94s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 10.23%\n",
+ "\n",
+ "[Gen 2/295] Best Fitness: -2.2770, Pop Avg Fitness: -2.3053\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 1%| | 2/295 [00:32<1:20:21, 16.45s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 14.65%\n",
+ "\n",
+ "[Gen 3/295] Best Fitness: -2.2822, Pop Avg Fitness: -2.3040\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 1%| | 3/295 [00:48<1:18:41, 16.17s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 14.65%\n",
+ "\n",
+ "[Gen 4/295] Best Fitness: -2.2739, Pop Avg Fitness: -2.3041\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 1%|▏ | 4/295 [01:04<1:17:59, 16.08s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 14.65%\n",
+ "\n",
+ "[Gen 5/295] Best Fitness: -2.2791, Pop Avg Fitness: -2.3031\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 2%|▏ | 5/295 [01:21<1:18:39, 16.27s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 18.00%\n",
+ "\n",
+ "[Gen 6/295] Best Fitness: -2.2787, Pop Avg Fitness: -2.3024\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 2%|▏ | 6/295 [01:36<1:17:32, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 15.49%\n",
+ "\n",
+ "[Gen 7/295] Best Fitness: -2.2564, Pop Avg Fitness: -2.3044\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 2%|▏ | 7/295 [01:52<1:16:51, 16.01s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 16.13%\n",
+ "\n",
+ "[Gen 8/295] Best Fitness: -2.2627, Pop Avg Fitness: -2.3018\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 3%|▎ | 8/295 [02:09<1:17:31, 16.21s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 13.42%\n",
+ "\n",
+ "[Gen 9/295] Best Fitness: -2.2629, Pop Avg Fitness: -2.3028\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 3%|▎ | 9/295 [02:25<1:16:45, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 16.13%\n",
+ "\n",
+ "[Gen 10/295] Best Fitness: -2.2544, Pop Avg Fitness: -2.2980\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 3%|▎ | 10/295 [02:41<1:16:11, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 18.09%\n",
+ "\n",
+ "[Gen 11/295] Best Fitness: -2.2581, Pop Avg Fitness: -2.2952\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 4%|▎ | 11/295 [02:58<1:17:11, 16.31s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 18.09%\n",
+ "\n",
+ "[Gen 12/295] Best Fitness: -2.2549, Pop Avg Fitness: -2.2915\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 4%|▍ | 12/295 [03:13<1:16:19, 16.18s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 19.68%\n",
+ "\n",
+ "[Gen 13/295] Best Fitness: -2.2445, Pop Avg Fitness: -2.2847\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 4%|▍ | 13/295 [03:29<1:15:38, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 16.14%\n",
+ "\n",
+ "[Gen 14/295] Best Fitness: -2.2208, Pop Avg Fitness: -2.2811\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 5%|▍ | 14/295 [03:46<1:16:11, 16.27s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 15.00%\n",
+ "\n",
+ "[Gen 15/295] Best Fitness: -2.2165, Pop Avg Fitness: -2.2714\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 5%|▌ | 15/295 [04:02<1:15:18, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 19.36%\n",
+ "\n",
+ "[Gen 16/295] Best Fitness: -2.2135, Pop Avg Fitness: -2.2646\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 5%|▌ | 16/295 [04:18<1:15:15, 16.18s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 18.16%\n",
+ "\n",
+ "[Gen 17/295] Best Fitness: -2.2017, Pop Avg Fitness: -2.2458\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 6%|▌ | 17/295 [04:35<1:15:32, 16.30s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 15.75%\n",
+ "\n",
+ "[Gen 18/295] Best Fitness: -2.1959, Pop Avg Fitness: -2.2360\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 6%|▌ | 18/295 [04:51<1:14:51, 16.21s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 17.38%\n",
+ "\n",
+ "[Gen 19/295] Best Fitness: -2.1600, Pop Avg Fitness: -2.2022\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 6%|▋ | 19/295 [05:07<1:14:07, 16.11s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 19.18%\n",
+ "\n",
+ "[Gen 20/295] Best Fitness: -2.1634, Pop Avg Fitness: -2.2094\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 7%|▋ | 20/295 [05:23<1:14:39, 16.29s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 22.10%\n",
+ "\n",
+ "[Gen 21/295] Best Fitness: -2.1562, Pop Avg Fitness: -2.1957\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 7%|▋ | 21/295 [05:39<1:13:50, 16.17s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 22.10%\n",
+ "\n",
+ "[Gen 22/295] Best Fitness: -2.1385, Pop Avg Fitness: -2.1856\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 7%|▋ | 22/295 [05:56<1:13:52, 16.24s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 23.12%\n",
+ "\n",
+ "[Gen 23/295] Best Fitness: -2.1223, Pop Avg Fitness: -2.1690\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 8%|▊ | 23/295 [06:12<1:14:16, 16.38s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 26.93%\n",
+ "\n",
+ "[Gen 24/295] Best Fitness: -2.1067, Pop Avg Fitness: -2.1548\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 8%|▊ | 24/295 [06:28<1:13:24, 16.25s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 25.52%\n",
+ "\n",
+ "[Gen 25/295] Best Fitness: -2.0641, Pop Avg Fitness: -2.1173\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 8%|▊ | 25/295 [06:44<1:12:32, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 24.22%\n",
+ "\n",
+ "[Gen 26/295] Best Fitness: -2.0909, Pop Avg Fitness: -2.1334\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 9%|▉ | 26/295 [07:00<1:12:26, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 26.06%\n",
+ "\n",
+ "[Gen 27/295] Best Fitness: -2.0652, Pop Avg Fitness: -2.1124\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 9%|▉ | 27/295 [07:16<1:12:08, 16.15s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 22.74%\n",
+ "\n",
+ "[Gen 28/295] Best Fitness: -2.0322, Pop Avg Fitness: -2.0939\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 9%|▉ | 28/295 [07:32<1:11:26, 16.06s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 27.34%\n",
+ "\n",
+ "[Gen 29/295] Best Fitness: -2.0138, Pop Avg Fitness: -2.0769\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 10%|▉ | 29/295 [07:48<1:11:18, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 28.21%\n",
+ "\n",
+ "[Gen 30/295] Best Fitness: -2.0105, Pop Avg Fitness: -2.0708\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 10%|█ | 30/295 [08:05<1:11:52, 16.27s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 30.15%\n",
+ "\n",
+ "[Gen 31/295] Best Fitness: -1.9565, Pop Avg Fitness: -2.0279\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 11%|█ | 31/295 [08:21<1:11:06, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 32.08%\n",
+ "\n",
+ "[Gen 32/295] Best Fitness: -1.9780, Pop Avg Fitness: -2.0401\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 11%|█ | 32/295 [08:37<1:10:40, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 32.97%\n",
+ "\n",
+ "[Gen 33/295] Best Fitness: -1.9510, Pop Avg Fitness: -2.0072\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 11%|█ | 33/295 [08:53<1:10:46, 16.21s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 35.59%\n",
+ "\n",
+ "[Gen 34/295] Best Fitness: -1.9432, Pop Avg Fitness: -2.0075\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 12%|█▏ | 34/295 [09:09<1:10:03, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 31.15%\n",
+ "\n",
+ "[Gen 35/295] Best Fitness: -1.9044, Pop Avg Fitness: -1.9751\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 12%|█▏ | 35/295 [09:25<1:09:30, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 37.08%\n",
+ "\n",
+ "[Gen 36/295] Best Fitness: -1.8792, Pop Avg Fitness: -1.9500\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 12%|█▏ | 36/295 [09:42<1:09:45, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 32.15%\n",
+ "\n",
+ "[Gen 37/295] Best Fitness: -1.8711, Pop Avg Fitness: -1.9368\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 13%|█▎ | 37/295 [09:58<1:09:05, 16.07s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 39.62%\n",
+ "\n",
+ "[Gen 38/295] Best Fitness: -1.8066, Pop Avg Fitness: -1.8799\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 13%|█▎ | 38/295 [10:13<1:08:17, 15.94s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 40.05%\n",
+ "\n",
+ "[Gen 39/295] Best Fitness: -1.7757, Pop Avg Fitness: -1.8549\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 13%|█▎ | 39/295 [10:30<1:09:16, 16.24s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 36.74%\n",
+ "\n",
+ "[Gen 40/295] Best Fitness: -1.7606, Pop Avg Fitness: -1.8393\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 14%|█▎ | 40/295 [10:46<1:08:33, 16.13s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 42.78%\n",
+ "\n",
+ "[Gen 41/295] Best Fitness: -1.7671, Pop Avg Fitness: -1.8273\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 14%|█▍ | 41/295 [11:02<1:07:55, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 39.86%\n",
+ "\n",
+ "[Gen 42/295] Best Fitness: -1.7239, Pop Avg Fitness: -1.7788\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 14%|█▍ | 42/295 [11:18<1:08:24, 16.22s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 43.74%\n",
+ "\n",
+ "[Gen 43/295] Best Fitness: -1.6882, Pop Avg Fitness: -1.7528\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 15%|█▍ | 43/295 [11:34<1:07:35, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 44.65%\n",
+ "\n",
+ "[Gen 44/295] Best Fitness: -1.6995, Pop Avg Fitness: -1.7595\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 15%|█▍ | 44/295 [11:50<1:07:05, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 48.94%\n",
+ "\n",
+ "[Gen 45/295] Best Fitness: -1.7080, Pop Avg Fitness: -1.7688\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 15%|█▌ | 45/295 [12:07<1:07:22, 16.17s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 48.45%\n",
+ "\n",
+ "[Gen 46/295] Best Fitness: -1.6892, Pop Avg Fitness: -1.7466\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 16%|█▌ | 46/295 [12:22<1:06:37, 16.05s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 48.04%\n",
+ "\n",
+ "[Gen 47/295] Best Fitness: -1.6407, Pop Avg Fitness: -1.6986\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 16%|█▌ | 47/295 [12:39<1:06:31, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 48.53%\n",
+ "\n",
+ "[Gen 48/295] Best Fitness: -1.6275, Pop Avg Fitness: -1.6919\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 16%|█▋ | 48/295 [12:55<1:06:52, 16.24s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 47.52%\n",
+ "\n",
+ "[Gen 49/295] Best Fitness: -1.6419, Pop Avg Fitness: -1.7113\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 17%|█▋ | 49/295 [13:11<1:06:10, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 51.95%\n",
+ "\n",
+ "[Gen 50/295] Best Fitness: -1.5876, Pop Avg Fitness: -1.6611\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 17%|█▋ | 50/295 [13:27<1:05:34, 16.06s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 51.04%\n",
+ "\n",
+ "[Gen 51/295] Best Fitness: -1.5644, Pop Avg Fitness: -1.6326\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 17%|█▋ | 51/295 [13:43<1:05:42, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 53.45%\n",
+ "\n",
+ "[Gen 52/295] Best Fitness: -1.5465, Pop Avg Fitness: -1.6170\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 18%|█▊ | 52/295 [13:59<1:05:06, 16.08s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 50.57%\n",
+ "\n",
+ "[Gen 53/295] Best Fitness: -1.5161, Pop Avg Fitness: -1.5935\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 18%|█▊ | 53/295 [14:15<1:04:55, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 52.99%\n",
+ "\n",
+ "[Gen 54/295] Best Fitness: -1.5172, Pop Avg Fitness: -1.5942\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 18%|█▊ | 54/295 [14:32<1:04:57, 16.17s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 54.66%\n",
+ "\n",
+ "[Gen 55/295] Best Fitness: -1.4820, Pop Avg Fitness: -1.5611\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 19%|█▊ | 55/295 [14:48<1:04:25, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 54.68%\n",
+ "\n",
+ "[Gen 56/295] Best Fitness: -1.4750, Pop Avg Fitness: -1.5584\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 19%|█▉ | 56/295 [15:04<1:03:49, 16.02s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 57.89%\n",
+ "\n",
+ "[Gen 57/295] Best Fitness: -1.4786, Pop Avg Fitness: -1.5424\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 19%|█▉ | 57/295 [15:20<1:03:40, 16.05s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 53.32%\n",
+ "\n",
+ "[Gen 58/295] Best Fitness: -1.4456, Pop Avg Fitness: -1.5105\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 20%|█▉ | 58/295 [15:36<1:03:35, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 56.78%\n",
+ "\n",
+ "[Gen 59/295] Best Fitness: -1.4393, Pop Avg Fitness: -1.5029\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 20%|██ | 59/295 [15:52<1:03:36, 16.17s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 57.30%\n",
+ "\n",
+ "[Gen 60/295] Best Fitness: -1.3934, Pop Avg Fitness: -1.4687\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 20%|██ | 60/295 [16:09<1:04:08, 16.38s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 56.18%\n",
+ "\n",
+ "[Gen 61/295] Best Fitness: -1.4068, Pop Avg Fitness: -1.4645\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 21%|██ | 61/295 [16:26<1:04:03, 16.43s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 58.83%\n",
+ "\n",
+ "[Gen 62/295] Best Fitness: -1.3801, Pop Avg Fitness: -1.4429\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 21%|██ | 62/295 [16:42<1:03:17, 16.30s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 57.51%\n",
+ "\n",
+ "[Gen 63/295] Best Fitness: -1.3375, Pop Avg Fitness: -1.3993\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 21%|██▏ | 63/295 [16:58<1:03:13, 16.35s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 59.08%\n",
+ "\n",
+ "[Gen 64/295] Best Fitness: -1.3526, Pop Avg Fitness: -1.4073\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 22%|██▏ | 64/295 [17:14<1:02:29, 16.23s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 59.80%\n",
+ "\n",
+ "[Gen 65/295] Best Fitness: -1.3197, Pop Avg Fitness: -1.3899\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 22%|██▏ | 65/295 [17:30<1:01:52, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 60.27%\n",
+ "\n",
+ "[Gen 66/295] Best Fitness: -1.3186, Pop Avg Fitness: -1.3793\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 22%|██▏ | 66/295 [17:46<1:01:48, 16.20s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 61.17%\n",
+ "\n",
+ "[Gen 67/295] Best Fitness: -1.2738, Pop Avg Fitness: -1.3369\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 23%|██▎ | 67/295 [18:03<1:01:52, 16.28s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 59.64%\n",
+ "\n",
+ "[Gen 68/295] Best Fitness: -1.2704, Pop Avg Fitness: -1.3272\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 23%|██▎ | 68/295 [18:19<1:01:14, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 61.78%\n",
+ "\n",
+ "[Gen 69/295] Best Fitness: -1.3075, Pop Avg Fitness: -1.3619\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 23%|██▎ | 69/295 [18:35<1:00:51, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 61.74%\n",
+ "\n",
+ "[Gen 70/295] Best Fitness: -1.2680, Pop Avg Fitness: -1.3281\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 24%|██▎ | 70/295 [18:51<1:00:44, 16.20s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 62.42%\n",
+ "\n",
+ "[Gen 71/295] Best Fitness: -1.2483, Pop Avg Fitness: -1.3075\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 24%|██▍ | 71/295 [19:07<1:00:09, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 64.14%\n",
+ "\n",
+ "[Gen 72/295] Best Fitness: -1.2797, Pop Avg Fitness: -1.3258\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 24%|██▍ | 72/295 [19:23<59:43, 16.07s/it] "
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 60.61%\n",
+ "\n",
+ "[Gen 73/295] Best Fitness: -1.2094, Pop Avg Fitness: -1.2660\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 25%|██▍ | 73/295 [19:39<59:55, 16.20s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 65.27%\n",
+ "\n",
+ "[Gen 74/295] Best Fitness: -1.2028, Pop Avg Fitness: -1.2532\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 25%|██▌ | 74/295 [19:55<59:26, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 64.70%\n",
+ "\n",
+ "[Gen 75/295] Best Fitness: -1.1800, Pop Avg Fitness: -1.2328\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 25%|██▌ | 75/295 [20:11<58:58, 16.08s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 65.03%\n",
+ "\n",
+ "[Gen 76/295] Best Fitness: -1.1405, Pop Avg Fitness: -1.2036\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 26%|██▌ | 76/295 [20:28<59:02, 16.18s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 66.25%\n",
+ "\n",
+ "[Gen 77/295] Best Fitness: -1.1664, Pop Avg Fitness: -1.2159\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 26%|██▌ | 77/295 [20:44<58:21, 16.06s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 64.85%\n",
+ "\n",
+ "[Gen 78/295] Best Fitness: -1.1698, Pop Avg Fitness: -1.2260\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 26%|██▋ | 78/295 [20:59<57:51, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 66.97%\n",
+ "\n",
+ "[Gen 79/295] Best Fitness: -1.1185, Pop Avg Fitness: -1.1725\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 27%|██▋ | 79/295 [21:16<58:19, 16.20s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 67.24%\n",
+ "\n",
+ "[Gen 80/295] Best Fitness: -1.1150, Pop Avg Fitness: -1.1738\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 27%|██▋ | 80/295 [21:32<57:39, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 68.08%\n",
+ "\n",
+ "[Gen 81/295] Best Fitness: -1.0861, Pop Avg Fitness: -1.1432\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 27%|██▋ | 81/295 [21:48<57:04, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 67.93%\n",
+ "\n",
+ "[Gen 82/295] Best Fitness: -1.0830, Pop Avg Fitness: -1.1281\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 28%|██▊ | 82/295 [22:04<57:33, 16.21s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 66.94%\n",
+ "\n",
+ "[Gen 83/295] Best Fitness: -1.0346, Pop Avg Fitness: -1.0988\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 28%|██▊ | 83/295 [22:20<57:01, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 67.44%\n",
+ "\n",
+ "[Gen 84/295] Best Fitness: -1.0491, Pop Avg Fitness: -1.0936\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 28%|██▊ | 84/295 [22:36<56:35, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 67.91%\n",
+ "\n",
+ "[Gen 85/295] Best Fitness: -1.0705, Pop Avg Fitness: -1.1388\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 29%|██▉ | 85/295 [22:53<57:13, 16.35s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 68.89%\n",
+ "\n",
+ "[Gen 86/295] Best Fitness: -1.0386, Pop Avg Fitness: -1.0904\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 29%|██▉ | 86/295 [23:09<56:32, 16.23s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 69.68%\n",
+ "\n",
+ "[Gen 87/295] Best Fitness: -1.0632, Pop Avg Fitness: -1.1138\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 29%|██▉ | 87/295 [23:25<55:48, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 70.62%\n",
+ "\n",
+ "[Gen 88/295] Best Fitness: -1.0173, Pop Avg Fitness: -1.0629\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 30%|██▉ | 88/295 [23:42<55:56, 16.22s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 70.09%\n",
+ "\n",
+ "[Gen 89/295] Best Fitness: -0.9973, Pop Avg Fitness: -1.0456\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 30%|███ | 89/295 [23:57<55:10, 16.07s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 70.33%\n",
+ "\n",
+ "[Gen 90/295] Best Fitness: -0.9664, Pop Avg Fitness: -1.0180\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 31%|███ | 90/295 [24:13<54:29, 15.95s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 69.72%\n",
+ "\n",
+ "[Gen 91/295] Best Fitness: -0.9665, Pop Avg Fitness: -1.0190\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 31%|███ | 91/295 [24:30<55:03, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 72.16%\n",
+ "\n",
+ "[Gen 92/295] Best Fitness: -1.0144, Pop Avg Fitness: -1.0669\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 31%|███ | 92/295 [24:46<54:28, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 69.66%\n",
+ "\n",
+ "[Gen 93/295] Best Fitness: -0.9763, Pop Avg Fitness: -1.0369\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 32%|███▏ | 93/295 [25:02<53:56, 16.02s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 72.26%\n",
+ "\n",
+ "[Gen 94/295] Best Fitness: -0.9442, Pop Avg Fitness: -0.9992\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 32%|███▏ | 94/295 [25:18<54:15, 16.20s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 71.93%\n",
+ "\n",
+ "[Gen 95/295] Best Fitness: -0.9361, Pop Avg Fitness: -0.9904\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 32%|███▏ | 95/295 [25:34<53:43, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 72.77%\n",
+ "\n",
+ "[Gen 96/295] Best Fitness: -0.9162, Pop Avg Fitness: -0.9699\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 33%|███▎ | 96/295 [25:50<53:11, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 71.45%\n",
+ "\n",
+ "[Gen 97/295] Best Fitness: -0.9218, Pop Avg Fitness: -0.9598\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 33%|███▎ | 97/295 [26:07<53:49, 16.31s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 72.74%\n",
+ "\n",
+ "[Gen 98/295] Best Fitness: -0.8990, Pop Avg Fitness: -0.9540\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 33%|███▎ | 98/295 [26:23<53:14, 16.22s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 71.86%\n",
+ "\n",
+ "[Gen 99/295] Best Fitness: -0.8720, Pop Avg Fitness: -0.9275\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 34%|███▎ | 99/295 [26:39<52:44, 16.15s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 73.90%\n",
+ "\n",
+ "[Gen 100/295] Best Fitness: -0.8695, Pop Avg Fitness: -0.9124\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 34%|███▍ | 100/295 [26:56<53:09, 16.36s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 73.54%\n",
+ "\n",
+ "[Gen 101/295] Best Fitness: -0.8515, Pop Avg Fitness: -0.9031\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 34%|███▍ | 101/295 [27:12<52:28, 16.23s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 72.89%\n",
+ "\n",
+ "[Gen 102/295] Best Fitness: -0.8844, Pop Avg Fitness: -0.9295\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 35%|███▍ | 102/295 [27:28<51:59, 16.17s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 73.87%\n",
+ "\n",
+ "[Gen 103/295] Best Fitness: -0.8561, Pop Avg Fitness: -0.9062\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 35%|███▍ | 103/295 [27:44<51:43, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 74.47%\n",
+ "\n",
+ "[Gen 104/295] Best Fitness: -0.8258, Pop Avg Fitness: -0.8767\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 35%|███▌ | 104/295 [28:00<51:27, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 74.55%\n",
+ "\n",
+ "[Gen 105/295] Best Fitness: -0.8460, Pop Avg Fitness: -0.8895\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 36%|███▌ | 105/295 [28:16<50:46, 16.03s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.08%\n",
+ "\n",
+ "[Gen 106/295] Best Fitness: -0.8399, Pop Avg Fitness: -0.8781\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 36%|███▌ | 106/295 [28:32<50:53, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 74.50%\n",
+ "\n",
+ "[Gen 107/295] Best Fitness: -0.8241, Pop Avg Fitness: -0.8619\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 36%|███▋ | 107/295 [28:48<50:42, 16.18s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 74.46%\n",
+ "\n",
+ "[Gen 108/295] Best Fitness: -0.8475, Pop Avg Fitness: -0.8862\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 37%|███▋ | 108/295 [29:04<50:10, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.51%\n",
+ "\n",
+ "[Gen 109/295] Best Fitness: -0.8127, Pop Avg Fitness: -0.8504\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 37%|███▋ | 109/295 [29:20<49:54, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.17%\n",
+ "\n",
+ "[Gen 110/295] Best Fitness: -0.7834, Pop Avg Fitness: -0.8222\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 37%|███▋ | 110/295 [29:37<49:58, 16.21s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.26%\n",
+ "\n",
+ "[Gen 111/295] Best Fitness: -0.8077, Pop Avg Fitness: -0.8444\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 38%|███▊ | 111/295 [29:53<49:26, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.46%\n",
+ "\n",
+ "[Gen 112/295] Best Fitness: -0.7633, Pop Avg Fitness: -0.8065\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 38%|███▊ | 112/295 [30:09<49:38, 16.28s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.52%\n",
+ "\n",
+ "[Gen 113/295] Best Fitness: -0.7961, Pop Avg Fitness: -0.8413\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 38%|███▊ | 113/295 [30:26<49:27, 16.31s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.68%\n",
+ "\n",
+ "[Gen 114/295] Best Fitness: -0.7492, Pop Avg Fitness: -0.7890\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 39%|███▊ | 114/295 [30:42<48:50, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.94%\n",
+ "\n",
+ "[Gen 115/295] Best Fitness: -0.7754, Pop Avg Fitness: -0.8069\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 39%|███▉ | 115/295 [30:57<48:07, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 77.43%\n",
+ "\n",
+ "[Gen 116/295] Best Fitness: -0.7547, Pop Avg Fitness: -0.7908\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 39%|███▉ | 116/295 [31:14<48:08, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 76.62%\n",
+ "\n",
+ "[Gen 117/295] Best Fitness: -0.7628, Pop Avg Fitness: -0.7994\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 40%|███▉ | 117/295 [31:30<47:43, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 78.23%\n",
+ "\n",
+ "[Gen 118/295] Best Fitness: -0.7969, Pop Avg Fitness: -0.8327\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 40%|████ | 118/295 [31:46<47:43, 16.18s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 77.64%\n",
+ "\n",
+ "[Gen 119/295] Best Fitness: -0.7386, Pop Avg Fitness: -0.7780\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 40%|████ | 119/295 [32:03<47:50, 16.31s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 77.54%\n",
+ "\n",
+ "[Gen 120/295] Best Fitness: -0.7431, Pop Avg Fitness: -0.7730\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 41%|████ | 120/295 [32:19<47:19, 16.22s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 77.05%\n",
+ "\n",
+ "[Gen 121/295] Best Fitness: -0.7347, Pop Avg Fitness: -0.7685\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 41%|████ | 121/295 [32:35<46:46, 16.13s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 78.81%\n",
+ "\n",
+ "[Gen 122/295] Best Fitness: -0.7132, Pop Avg Fitness: -0.7453\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 41%|████▏ | 122/295 [32:51<46:56, 16.28s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 78.42%\n",
+ "\n",
+ "[Gen 123/295] Best Fitness: -0.7413, Pop Avg Fitness: -0.7697\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 42%|████▏ | 123/295 [33:07<46:19, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 77.48%\n",
+ "\n",
+ "[Gen 124/295] Best Fitness: -0.7359, Pop Avg Fitness: -0.7634\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 42%|████▏ | 124/295 [33:23<45:53, 16.11s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 78.46%\n",
+ "\n",
+ "[Gen 125/295] Best Fitness: -0.7355, Pop Avg Fitness: -0.7694\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 42%|████▏ | 125/295 [33:40<46:03, 16.26s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 79.60%\n",
+ "\n",
+ "[Gen 126/295] Best Fitness: -0.6922, Pop Avg Fitness: -0.7256\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 43%|████▎ | 126/295 [33:56<45:28, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 79.75%\n",
+ "\n",
+ "[Gen 127/295] Best Fitness: -0.7226, Pop Avg Fitness: -0.7540\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 43%|████▎ | 127/295 [34:12<45:05, 16.11s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 78.86%\n",
+ "\n",
+ "[Gen 128/295] Best Fitness: -0.7207, Pop Avg Fitness: -0.7584\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 43%|████▎ | 128/295 [34:28<45:12, 16.24s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 79.07%\n",
+ "\n",
+ "[Gen 129/295] Best Fitness: -0.7268, Pop Avg Fitness: -0.7624\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 44%|████▎ | 129/295 [34:44<44:36, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 79.45%\n",
+ "\n",
+ "[Gen 130/295] Best Fitness: -0.7207, Pop Avg Fitness: -0.7498\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 44%|████▍ | 130/295 [35:00<44:07, 16.05s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 79.35%\n",
+ "\n",
+ "[Gen 131/295] Best Fitness: -0.7126, Pop Avg Fitness: -0.7570\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 44%|████▍ | 131/295 [35:17<44:19, 16.22s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 80.18%\n",
+ "\n",
+ "[Gen 132/295] Best Fitness: -0.7000, Pop Avg Fitness: -0.7350\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 45%|████▍ | 132/295 [35:32<43:47, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 79.61%\n",
+ "\n",
+ "[Gen 133/295] Best Fitness: -0.7127, Pop Avg Fitness: -0.7480\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 45%|████▌ | 133/295 [35:49<43:35, 16.15s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 79.72%\n",
+ "\n",
+ "[Gen 134/295] Best Fitness: -0.6703, Pop Avg Fitness: -0.7048\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 45%|████▌ | 134/295 [36:05<43:34, 16.24s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 80.11%\n",
+ "\n",
+ "[Gen 135/295] Best Fitness: -0.6432, Pop Avg Fitness: -0.6746\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 46%|████▌ | 135/295 [36:21<42:54, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 80.66%\n",
+ "\n",
+ "[Gen 136/295] Best Fitness: -0.6521, Pop Avg Fitness: -0.6949\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 46%|████▌ | 136/295 [36:37<42:18, 15.97s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 80.72%\n",
+ "\n",
+ "[Gen 137/295] Best Fitness: -0.6794, Pop Avg Fitness: -0.7087\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 46%|████▋ | 137/295 [36:53<42:19, 16.07s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 80.90%\n",
+ "\n",
+ "[Gen 138/295] Best Fitness: -0.6290, Pop Avg Fitness: -0.6609\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 47%|████▋ | 138/295 [37:09<41:46, 15.96s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 81.21%\n",
+ "\n",
+ "[Gen 139/295] Best Fitness: -0.6688, Pop Avg Fitness: -0.6953\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 47%|████▋ | 139/295 [37:25<41:44, 16.05s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 81.63%\n",
+ "\n",
+ "[Gen 140/295] Best Fitness: -0.6509, Pop Avg Fitness: -0.6872\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 47%|████▋ | 140/295 [37:41<41:44, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 81.17%\n",
+ "\n",
+ "[Gen 141/295] Best Fitness: -0.6314, Pop Avg Fitness: -0.6592\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 48%|████▊ | 141/295 [37:57<41:09, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 81.36%\n",
+ "\n",
+ "[Gen 142/295] Best Fitness: -0.5903, Pop Avg Fitness: -0.6264\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 48%|████▊ | 142/295 [38:13<40:36, 15.92s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 81.51%\n",
+ "\n",
+ "[Gen 143/295] Best Fitness: -0.5913, Pop Avg Fitness: -0.6231\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 48%|████▊ | 143/295 [38:29<40:23, 15.95s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 82.15%\n",
+ "\n",
+ "[Gen 144/295] Best Fitness: -0.6195, Pop Avg Fitness: -0.6531\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 49%|████▉ | 144/295 [38:45<40:15, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 82.12%\n",
+ "\n",
+ "[Gen 145/295] Best Fitness: -0.6062, Pop Avg Fitness: -0.6373\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 49%|████▉ | 145/295 [39:00<39:46, 15.91s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 81.64%\n",
+ "\n",
+ "[Gen 146/295] Best Fitness: -0.6548, Pop Avg Fitness: -0.6849\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 49%|████▉ | 146/295 [39:16<39:19, 15.83s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 81.97%\n",
+ "\n",
+ "[Gen 147/295] Best Fitness: -0.5881, Pop Avg Fitness: -0.6128\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 50%|████▉ | 147/295 [39:33<39:38, 16.07s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 82.44%\n",
+ "\n",
+ "[Gen 148/295] Best Fitness: -0.5897, Pop Avg Fitness: -0.6131\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 50%|█████ | 148/295 [39:49<39:20, 16.06s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 81.74%\n",
+ "\n",
+ "[Gen 149/295] Best Fitness: -0.5818, Pop Avg Fitness: -0.6097\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 51%|█████ | 149/295 [40:05<38:57, 16.01s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 82.36%\n",
+ "\n",
+ "[Gen 150/295] Best Fitness: -0.5935, Pop Avg Fitness: -0.6247\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 51%|█████ | 150/295 [40:21<39:07, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.08%\n",
+ "\n",
+ "[Gen 151/295] Best Fitness: -0.6426, Pop Avg Fitness: -0.6785\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 51%|█████ | 151/295 [40:37<38:41, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 82.79%\n",
+ "\n",
+ "[Gen 152/295] Best Fitness: -0.5969, Pop Avg Fitness: -0.6263\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 52%|█████▏ | 152/295 [40:53<38:05, 15.98s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 82.93%\n",
+ "\n",
+ "[Gen 153/295] Best Fitness: -0.5783, Pop Avg Fitness: -0.6056\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 52%|█████▏ | 153/295 [41:09<38:09, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.18%\n",
+ "\n",
+ "[Gen 154/295] Best Fitness: -0.5779, Pop Avg Fitness: -0.6057\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 52%|█████▏ | 154/295 [41:26<38:03, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 82.86%\n",
+ "\n",
+ "[Gen 155/295] Best Fitness: -0.5446, Pop Avg Fitness: -0.5729\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 53%|█████▎ | 155/295 [41:41<37:25, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.17%\n",
+ "\n",
+ "[Gen 156/295] Best Fitness: -0.5821, Pop Avg Fitness: -0.6091\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 53%|█████▎ | 156/295 [41:58<37:30, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.35%\n",
+ "\n",
+ "[Gen 157/295] Best Fitness: -0.5639, Pop Avg Fitness: -0.5870\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 53%|█████▎ | 157/295 [42:14<37:03, 16.11s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.26%\n",
+ "\n",
+ "[Gen 158/295] Best Fitness: -0.5303, Pop Avg Fitness: -0.5592\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 54%|█████▎ | 158/295 [42:30<36:38, 16.05s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.08%\n",
+ "\n",
+ "[Gen 159/295] Best Fitness: -0.5507, Pop Avg Fitness: -0.5770\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 54%|█████▍ | 159/295 [42:46<36:45, 16.22s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.10%\n",
+ "\n",
+ "[Gen 160/295] Best Fitness: -0.5266, Pop Avg Fitness: -0.5507\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 54%|█████▍ | 160/295 [43:03<36:30, 16.22s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.77%\n",
+ "\n",
+ "[Gen 161/295] Best Fitness: -0.5682, Pop Avg Fitness: -0.5971\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 55%|█████▍ | 161/295 [43:19<36:01, 16.13s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.57%\n",
+ "\n",
+ "[Gen 162/295] Best Fitness: -0.5613, Pop Avg Fitness: -0.5953\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 55%|█████▍ | 162/295 [43:35<36:01, 16.26s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.66%\n",
+ "\n",
+ "[Gen 163/295] Best Fitness: -0.5143, Pop Avg Fitness: -0.5393\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 55%|█████▌ | 163/295 [43:51<35:27, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.88%\n",
+ "\n",
+ "[Gen 164/295] Best Fitness: -0.5313, Pop Avg Fitness: -0.5542\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 56%|█████▌ | 164/295 [44:07<34:53, 15.98s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.11%\n",
+ "\n",
+ "[Gen 165/295] Best Fitness: -0.5536, Pop Avg Fitness: -0.5803\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 56%|█████▌ | 165/295 [44:23<34:56, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.91%\n",
+ "\n",
+ "[Gen 166/295] Best Fitness: -0.5411, Pop Avg Fitness: -0.5674\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 56%|█████▋ | 166/295 [44:39<34:34, 16.08s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.17%\n",
+ "\n",
+ "[Gen 167/295] Best Fitness: -0.5864, Pop Avg Fitness: -0.6159\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 57%|█████▋ | 167/295 [44:55<34:02, 15.96s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.08%\n",
+ "\n",
+ "[Gen 168/295] Best Fitness: -0.5466, Pop Avg Fitness: -0.5677\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 57%|█████▋ | 168/295 [45:11<33:55, 16.03s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 83.88%\n",
+ "\n",
+ "[Gen 169/295] Best Fitness: -0.5146, Pop Avg Fitness: -0.5395\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 57%|█████▋ | 169/295 [45:27<33:51, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.71%\n",
+ "\n",
+ "[Gen 170/295] Best Fitness: -0.5497, Pop Avg Fitness: -0.5731\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 58%|█████▊ | 170/295 [45:43<33:27, 16.06s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.73%\n",
+ "\n",
+ "[Gen 171/295] Best Fitness: -0.4955, Pop Avg Fitness: -0.5196\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 58%|█████▊ | 171/295 [45:59<32:55, 15.93s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.05%\n",
+ "\n",
+ "[Gen 172/295] Best Fitness: -0.5604, Pop Avg Fitness: -0.5864\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 58%|█████▊ | 172/295 [46:15<32:58, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.47%\n",
+ "\n",
+ "[Gen 173/295] Best Fitness: -0.4940, Pop Avg Fitness: -0.5179\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 59%|█████▊ | 173/295 [46:31<32:24, 15.93s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.48%\n",
+ "\n",
+ "[Gen 174/295] Best Fitness: -0.5294, Pop Avg Fitness: -0.5518\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 59%|█████▉ | 174/295 [46:47<32:06, 15.92s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.80%\n",
+ "\n",
+ "[Gen 175/295] Best Fitness: -0.5205, Pop Avg Fitness: -0.5433\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 59%|█████▉ | 175/295 [47:04<32:26, 16.22s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.59%\n",
+ "\n",
+ "[Gen 176/295] Best Fitness: -0.5484, Pop Avg Fitness: -0.5764\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 60%|█████▉ | 176/295 [47:20<32:01, 16.15s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.63%\n",
+ "\n",
+ "[Gen 177/295] Best Fitness: -0.5692, Pop Avg Fitness: -0.5972\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 60%|██████ | 177/295 [47:35<31:37, 16.08s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.43%\n",
+ "\n",
+ "[Gen 178/295] Best Fitness: -0.5173, Pop Avg Fitness: -0.5422\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 60%|██████ | 178/295 [47:52<31:32, 16.17s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.76%\n",
+ "\n",
+ "[Gen 179/295] Best Fitness: -0.5117, Pop Avg Fitness: -0.5369\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 61%|██████ | 179/295 [48:08<31:01, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.08%\n",
+ "\n",
+ "[Gen 180/295] Best Fitness: -0.5385, Pop Avg Fitness: -0.5620\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 61%|██████ | 180/295 [48:23<30:39, 15.99s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.83%\n",
+ "\n",
+ "[Gen 181/295] Best Fitness: -0.4829, Pop Avg Fitness: -0.5091\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 61%|██████▏ | 181/295 [48:40<30:57, 16.30s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.72%\n",
+ "\n",
+ "[Gen 182/295] Best Fitness: -0.5305, Pop Avg Fitness: -0.5583\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 62%|██████▏ | 182/295 [48:56<30:23, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.72%\n",
+ "\n",
+ "[Gen 183/295] Best Fitness: -0.5156, Pop Avg Fitness: -0.5397\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 62%|██████▏ | 183/295 [49:12<29:58, 16.06s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.09%\n",
+ "\n",
+ "[Gen 184/295] Best Fitness: -0.5369, Pop Avg Fitness: -0.5708\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 62%|██████▏ | 184/295 [49:29<29:59, 16.21s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.26%\n",
+ "\n",
+ "[Gen 185/295] Best Fitness: -0.4881, Pop Avg Fitness: -0.5198\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 63%|██████▎ | 185/295 [49:44<29:20, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.19%\n",
+ "\n",
+ "[Gen 186/295] Best Fitness: -0.5391, Pop Avg Fitness: -0.5726\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 63%|██████▎ | 186/295 [50:00<29:10, 16.06s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.83%\n",
+ "\n",
+ "[Gen 187/295] Best Fitness: -0.5100, Pop Avg Fitness: -0.5330\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 63%|██████▎ | 187/295 [50:17<29:08, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.20%\n",
+ "\n",
+ "[Gen 188/295] Best Fitness: -0.5476, Pop Avg Fitness: -0.5730\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 64%|██████▎ | 188/295 [50:33<28:36, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.34%\n",
+ "\n",
+ "[Gen 189/295] Best Fitness: -0.5331, Pop Avg Fitness: -0.5546\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 64%|██████▍ | 189/295 [50:49<28:17, 16.02s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.19%\n",
+ "\n",
+ "[Gen 190/295] Best Fitness: -0.4952, Pop Avg Fitness: -0.5205\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 64%|██████▍ | 190/295 [51:05<28:25, 16.24s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.60%\n",
+ "\n",
+ "[Gen 191/295] Best Fitness: -0.5246, Pop Avg Fitness: -0.5484\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 65%|██████▍ | 191/295 [51:22<28:10, 16.25s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.40%\n",
+ "\n",
+ "[Gen 192/295] Best Fitness: -0.5322, Pop Avg Fitness: -0.5567\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 65%|██████▌ | 192/295 [51:37<27:40, 16.13s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 84.87%\n",
+ "\n",
+ "[Gen 193/295] Best Fitness: -0.4972, Pop Avg Fitness: -0.5204\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 65%|██████▌ | 193/295 [51:54<27:25, 16.13s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.50%\n",
+ "\n",
+ "[Gen 194/295] Best Fitness: -0.4802, Pop Avg Fitness: -0.5047\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 66%|██████▌ | 194/295 [52:10<27:13, 16.18s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.40%\n",
+ "\n",
+ "[Gen 195/295] Best Fitness: -0.4832, Pop Avg Fitness: -0.5094\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 66%|██████▌ | 195/295 [52:26<26:48, 16.09s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.96%\n",
+ "\n",
+ "[Gen 196/295] Best Fitness: -0.5266, Pop Avg Fitness: -0.5501\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 66%|██████▋ | 196/295 [52:43<27:03, 16.40s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.96%\n",
+ "\n",
+ "[Gen 197/295] Best Fitness: -0.4777, Pop Avg Fitness: -0.5016\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 67%|██████▋ | 197/295 [52:59<26:37, 16.30s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.78%\n",
+ "\n",
+ "[Gen 198/295] Best Fitness: -0.5232, Pop Avg Fitness: -0.5495\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 67%|██████▋ | 198/295 [53:15<26:12, 16.21s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.72%\n",
+ "\n",
+ "[Gen 199/295] Best Fitness: -0.5081, Pop Avg Fitness: -0.5406\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 67%|██████▋ | 199/295 [53:31<26:06, 16.31s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.85%\n",
+ "\n",
+ "[Gen 200/295] Best Fitness: -0.4814, Pop Avg Fitness: -0.5043\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 68%|██████▊ | 200/295 [53:48<25:43, 16.25s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.55%\n",
+ "\n",
+ "[Gen 201/295] Best Fitness: -0.4450, Pop Avg Fitness: -0.4668\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 68%|██████▊ | 201/295 [54:03<25:17, 16.15s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.60%\n",
+ "\n",
+ "[Gen 202/295] Best Fitness: -0.4471, Pop Avg Fitness: -0.4710\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 68%|██████▊ | 202/295 [54:20<25:18, 16.32s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.74%\n",
+ "\n",
+ "[Gen 203/295] Best Fitness: -0.4832, Pop Avg Fitness: -0.5050\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 69%|██████▉ | 203/295 [54:36<24:49, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.88%\n",
+ "\n",
+ "[Gen 204/295] Best Fitness: -0.4707, Pop Avg Fitness: -0.4912\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 69%|██████▉ | 204/295 [54:52<24:22, 16.07s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.95%\n",
+ "\n",
+ "[Gen 205/295] Best Fitness: -0.5118, Pop Avg Fitness: -0.5322\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 69%|██████▉ | 205/295 [55:08<23:54, 15.94s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.01%\n",
+ "\n",
+ "[Gen 206/295] Best Fitness: -0.4579, Pop Avg Fitness: -0.4766\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 70%|██████▉ | 206/295 [55:24<23:56, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.01%\n",
+ "\n",
+ "[Gen 207/295] Best Fitness: -0.4670, Pop Avg Fitness: -0.4861\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 70%|███████ | 207/295 [55:40<23:30, 16.02s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 85.89%\n",
+ "\n",
+ "[Gen 208/295] Best Fitness: -0.4532, Pop Avg Fitness: -0.4828\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 71%|███████ | 208/295 [55:56<23:12, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.03%\n",
+ "\n",
+ "[Gen 209/295] Best Fitness: -0.4907, Pop Avg Fitness: -0.5114\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 71%|███████ | 209/295 [56:13<23:17, 16.24s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.23%\n",
+ "\n",
+ "[Gen 210/295] Best Fitness: -0.5114, Pop Avg Fitness: -0.5309\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 71%|███████ | 210/295 [56:28<22:47, 16.08s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.26%\n",
+ "\n",
+ "[Gen 211/295] Best Fitness: -0.4873, Pop Avg Fitness: -0.5119\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 72%|███████▏ | 211/295 [56:44<22:32, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.23%\n",
+ "\n",
+ "[Gen 212/295] Best Fitness: -0.4672, Pop Avg Fitness: -0.4858\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 72%|███████▏ | 212/295 [57:01<22:24, 16.19s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.43%\n",
+ "\n",
+ "[Gen 213/295] Best Fitness: -0.4680, Pop Avg Fitness: -0.4899\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 72%|███████▏ | 213/295 [57:17<21:57, 16.06s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.34%\n",
+ "\n",
+ "[Gen 214/295] Best Fitness: -0.4290, Pop Avg Fitness: -0.4494\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 73%|███████▎ | 214/295 [57:32<21:34, 15.98s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.44%\n",
+ "\n",
+ "[Gen 215/295] Best Fitness: -0.4841, Pop Avg Fitness: -0.5082\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 73%|███████▎ | 215/295 [57:49<21:28, 16.11s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.47%\n",
+ "\n",
+ "[Gen 216/295] Best Fitness: -0.4513, Pop Avg Fitness: -0.4754\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 73%|███████▎ | 216/295 [58:05<21:06, 16.04s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.55%\n",
+ "\n",
+ "[Gen 217/295] Best Fitness: -0.4317, Pop Avg Fitness: -0.4543\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 74%|███████▎ | 217/295 [58:21<20:49, 16.02s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.70%\n",
+ "\n",
+ "[Gen 218/295] Best Fitness: -0.4618, Pop Avg Fitness: -0.4834\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 74%|███████▍ | 218/295 [58:37<20:43, 16.15s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.49%\n",
+ "\n",
+ "[Gen 219/295] Best Fitness: -0.4301, Pop Avg Fitness: -0.4592\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 74%|███████▍ | 219/295 [58:53<20:16, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.49%\n",
+ "\n",
+ "[Gen 220/295] Best Fitness: -0.4600, Pop Avg Fitness: -0.4819\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 75%|███████▍ | 220/295 [59:09<19:53, 15.92s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.49%\n",
+ "\n",
+ "[Gen 221/295] Best Fitness: -0.4829, Pop Avg Fitness: -0.5066\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 75%|███████▍ | 221/295 [59:25<19:39, 15.94s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.32%\n",
+ "\n",
+ "[Gen 222/295] Best Fitness: -0.4271, Pop Avg Fitness: -0.4481\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 75%|███████▌ | 222/295 [59:40<19:23, 15.95s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.75%\n",
+ "\n",
+ "[Gen 223/295] Best Fitness: -0.4287, Pop Avg Fitness: -0.4477\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 76%|███████▌ | 223/295 [59:57<19:10, 15.97s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.72%\n",
+ "\n",
+ "[Gen 224/295] Best Fitness: -0.4627, Pop Avg Fitness: -0.4933\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 76%|███████▌ | 224/295 [1:00:12<18:49, 15.91s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.72%\n",
+ "\n",
+ "[Gen 225/295] Best Fitness: -0.4613, Pop Avg Fitness: -0.4815\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 76%|███████▋ | 225/295 [1:00:28<18:39, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.96%\n",
+ "\n",
+ "[Gen 226/295] Best Fitness: -0.4987, Pop Avg Fitness: -0.5205\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 77%|███████▋ | 226/295 [1:00:44<18:17, 15.91s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.93%\n",
+ "\n",
+ "[Gen 227/295] Best Fitness: -0.4567, Pop Avg Fitness: -0.4762\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 77%|███████▋ | 227/295 [1:01:00<17:56, 15.84s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.95%\n",
+ "\n",
+ "[Gen 228/295] Best Fitness: -0.4309, Pop Avg Fitness: -0.4501\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 77%|███████▋ | 228/295 [1:01:16<17:52, 16.01s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.62%\n",
+ "\n",
+ "[Gen 229/295] Best Fitness: -0.4592, Pop Avg Fitness: -0.4778\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 78%|███████▊ | 229/295 [1:01:32<17:29, 15.91s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 86.75%\n",
+ "\n",
+ "[Gen 230/295] Best Fitness: -0.4148, Pop Avg Fitness: -0.4403\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 78%|███████▊ | 230/295 [1:01:48<17:09, 15.84s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.12%\n",
+ "\n",
+ "[Gen 231/295] Best Fitness: -0.4805, Pop Avg Fitness: -0.5053\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 78%|███████▊ | 231/295 [1:02:04<17:00, 15.95s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.24%\n",
+ "\n",
+ "[Gen 232/295] Best Fitness: -0.4084, Pop Avg Fitness: -0.4268\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 79%|███████▊ | 232/295 [1:02:20<16:47, 15.99s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.32%\n",
+ "\n",
+ "[Gen 233/295] Best Fitness: -0.4436, Pop Avg Fitness: -0.4664\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 79%|███████▉ | 233/295 [1:02:36<16:24, 15.87s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.20%\n",
+ "\n",
+ "[Gen 234/295] Best Fitness: -0.4589, Pop Avg Fitness: -0.4750\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 79%|███████▉ | 234/295 [1:02:51<16:08, 15.88s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.38%\n",
+ "\n",
+ "[Gen 235/295] Best Fitness: -0.4761, Pop Avg Fitness: -0.5032\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 80%|███████▉ | 235/295 [1:03:08<15:58, 15.98s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.40%\n",
+ "\n",
+ "[Gen 236/295] Best Fitness: -0.4978, Pop Avg Fitness: -0.5215\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 80%|████████ | 236/295 [1:03:23<15:37, 15.89s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.23%\n",
+ "\n",
+ "[Gen 237/295] Best Fitness: -0.4571, Pop Avg Fitness: -0.4758\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 80%|████████ | 237/295 [1:03:39<15:15, 15.78s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.26%\n",
+ "\n",
+ "[Gen 238/295] Best Fitness: -0.4247, Pop Avg Fitness: -0.4460\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 81%|████████ | 238/295 [1:03:55<15:14, 16.05s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.52%\n",
+ "\n",
+ "[Gen 239/295] Best Fitness: -0.4610, Pop Avg Fitness: -0.4781\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 81%|████████ | 239/295 [1:04:11<14:56, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.43%\n",
+ "\n",
+ "[Gen 240/295] Best Fitness: -0.4151, Pop Avg Fitness: -0.4350\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 81%|████████▏ | 240/295 [1:04:28<14:42, 16.05s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.25%\n",
+ "\n",
+ "[Gen 241/295] Best Fitness: -0.4548, Pop Avg Fitness: -0.4723\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 82%|████████▏ | 241/295 [1:04:44<14:35, 16.21s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.61%\n",
+ "\n",
+ "[Gen 242/295] Best Fitness: -0.4415, Pop Avg Fitness: -0.4572\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 82%|████████▏ | 242/295 [1:05:00<14:14, 16.12s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.41%\n",
+ "\n",
+ "[Gen 243/295] Best Fitness: -0.4665, Pop Avg Fitness: -0.4865\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 82%|████████▏ | 243/295 [1:05:16<13:51, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.42%\n",
+ "\n",
+ "[Gen 244/295] Best Fitness: -0.4131, Pop Avg Fitness: -0.4310\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 83%|████████▎ | 244/295 [1:05:33<13:49, 16.26s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.41%\n",
+ "\n",
+ "[Gen 245/295] Best Fitness: -0.4656, Pop Avg Fitness: -0.4842\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 83%|████████▎ | 245/295 [1:05:49<13:28, 16.18s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.51%\n",
+ "\n",
+ "[Gen 246/295] Best Fitness: -0.4444, Pop Avg Fitness: -0.4639\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 83%|████████▎ | 246/295 [1:06:05<13:09, 16.11s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.45%\n",
+ "\n",
+ "[Gen 247/295] Best Fitness: -0.4817, Pop Avg Fitness: -0.5005\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 84%|████████▎ | 247/295 [1:06:21<13:00, 16.26s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.48%\n",
+ "\n",
+ "[Gen 248/295] Best Fitness: -0.4585, Pop Avg Fitness: -0.4788\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 84%|████████▍ | 248/295 [1:06:37<12:38, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.57%\n",
+ "\n",
+ "[Gen 249/295] Best Fitness: -0.4106, Pop Avg Fitness: -0.4282\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 84%|████████▍ | 249/295 [1:06:53<12:18, 16.07s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.63%\n",
+ "\n",
+ "[Gen 250/295] Best Fitness: -0.4550, Pop Avg Fitness: -0.4775\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 85%|████████▍ | 250/295 [1:07:10<12:11, 16.25s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.64%\n",
+ "\n",
+ "[Gen 251/295] Best Fitness: -0.4647, Pop Avg Fitness: -0.4847\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 85%|████████▌ | 251/295 [1:07:25<11:48, 16.11s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.36%\n",
+ "\n",
+ "[Gen 252/295] Best Fitness: -0.4406, Pop Avg Fitness: -0.4566\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 85%|████████▌ | 252/295 [1:07:41<11:27, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.65%\n",
+ "\n",
+ "[Gen 253/295] Best Fitness: -0.4222, Pop Avg Fitness: -0.4396\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 86%|████████▌ | 253/295 [1:07:58<11:22, 16.25s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.60%\n",
+ "\n",
+ "[Gen 254/295] Best Fitness: -0.4246, Pop Avg Fitness: -0.4446\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 86%|████████▌ | 254/295 [1:08:14<11:00, 16.10s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.69%\n",
+ "\n",
+ "[Gen 255/295] Best Fitness: -0.4717, Pop Avg Fitness: -0.4938\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 86%|████████▋ | 255/295 [1:08:30<10:42, 16.07s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.47%\n",
+ "\n",
+ "[Gen 256/295] Best Fitness: -0.4161, Pop Avg Fitness: -0.4383\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 87%|████████▋ | 256/295 [1:08:46<10:30, 16.16s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.82%\n",
+ "\n",
+ "[Gen 257/295] Best Fitness: -0.4598, Pop Avg Fitness: -0.4818\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 87%|████████▋ | 257/295 [1:09:02<10:07, 16.00s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.71%\n",
+ "\n",
+ "[Gen 258/295] Best Fitness: -0.4460, Pop Avg Fitness: -0.4673\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 87%|████████▋ | 258/295 [1:09:17<09:47, 15.89s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.59%\n",
+ "\n",
+ "[Gen 259/295] Best Fitness: -0.4151, Pop Avg Fitness: -0.4356\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 88%|████████▊ | 259/295 [1:09:34<09:36, 16.01s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.82%\n",
+ "\n",
+ "[Gen 260/295] Best Fitness: -0.3869, Pop Avg Fitness: -0.4068\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 88%|████████▊ | 260/295 [1:09:50<09:21, 16.03s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.64%\n",
+ "\n",
+ "[Gen 261/295] Best Fitness: -0.4032, Pop Avg Fitness: -0.4242\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 88%|████████▊ | 261/295 [1:10:05<09:00, 15.91s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.54%\n",
+ "\n",
+ "[Gen 262/295] Best Fitness: -0.4244, Pop Avg Fitness: -0.4469\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 89%|████████▉ | 262/295 [1:10:21<08:41, 15.81s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.93%\n",
+ "\n",
+ "[Gen 263/295] Best Fitness: -0.4060, Pop Avg Fitness: -0.4258\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 89%|████████▉ | 263/295 [1:10:37<08:31, 15.98s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.76%\n",
+ "\n",
+ "[Gen 264/295] Best Fitness: -0.4423, Pop Avg Fitness: -0.4593\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 89%|████████▉ | 264/295 [1:10:53<08:12, 15.90s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.80%\n",
+ "\n",
+ "[Gen 265/295] Best Fitness: -0.4062, Pop Avg Fitness: -0.4260\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 90%|████████▉ | 265/295 [1:11:09<07:58, 15.93s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.84%\n",
+ "\n",
+ "[Gen 266/295] Best Fitness: -0.4100, Pop Avg Fitness: -0.4299\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 90%|█████████ | 266/295 [1:11:26<07:48, 16.14s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.81%\n",
+ "\n",
+ "[Gen 267/295] Best Fitness: -0.3973, Pop Avg Fitness: -0.4207\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 91%|█████████ | 267/295 [1:11:41<07:27, 15.97s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.96%\n",
+ "\n",
+ "[Gen 268/295] Best Fitness: -0.4398, Pop Avg Fitness: -0.4680\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 91%|█████████ | 268/295 [1:11:57<07:09, 15.91s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.93%\n",
+ "\n",
+ "[Gen 269/295] Best Fitness: -0.4485, Pop Avg Fitness: -0.4677\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 91%|█████████ | 269/295 [1:12:13<06:56, 16.02s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.25%\n",
+ "\n",
+ "[Gen 270/295] Best Fitness: -0.4304, Pop Avg Fitness: -0.4494\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 92%|█████████▏| 270/295 [1:12:29<06:38, 15.94s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.76%\n",
+ "\n",
+ "[Gen 271/295] Best Fitness: -0.4070, Pop Avg Fitness: -0.4304\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 92%|█████████▏| 271/295 [1:12:45<06:19, 15.83s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.95%\n",
+ "\n",
+ "[Gen 272/295] Best Fitness: -0.4162, Pop Avg Fitness: -0.4348\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 92%|█████████▏| 272/295 [1:13:00<06:03, 15.82s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.96%\n",
+ "\n",
+ "[Gen 273/295] Best Fitness: -0.3745, Pop Avg Fitness: -0.3951\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 93%|█████████▎| 273/295 [1:13:17<05:50, 15.93s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.95%\n",
+ "\n",
+ "[Gen 274/295] Best Fitness: -0.4385, Pop Avg Fitness: -0.4547\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 93%|█████████▎| 274/295 [1:13:33<05:34, 15.94s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.89%\n",
+ "\n",
+ "[Gen 275/295] Best Fitness: -0.4018, Pop Avg Fitness: -0.4187\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 93%|█████████▎| 275/295 [1:13:48<05:17, 15.88s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.99%\n",
+ "\n",
+ "[Gen 276/295] Best Fitness: -0.3803, Pop Avg Fitness: -0.3947\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 94%|█████████▎| 276/295 [1:14:05<05:04, 16.01s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.08%\n",
+ "\n",
+ "[Gen 277/295] Best Fitness: -0.4040, Pop Avg Fitness: -0.4416\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 94%|█████████▍| 277/295 [1:14:20<04:46, 15.91s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.16%\n",
+ "\n",
+ "[Gen 278/295] Best Fitness: -0.3778, Pop Avg Fitness: -0.3970\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 94%|█████████▍| 278/295 [1:14:36<04:28, 15.78s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.09%\n",
+ "\n",
+ "[Gen 279/295] Best Fitness: -0.4032, Pop Avg Fitness: -0.4227\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 95%|█████████▍| 279/295 [1:14:52<04:15, 15.96s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.09%\n",
+ "\n",
+ "[Gen 280/295] Best Fitness: -0.4329, Pop Avg Fitness: -0.4547\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 95%|█████████▍| 280/295 [1:15:08<03:59, 15.94s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.17%\n",
+ "\n",
+ "[Gen 281/295] Best Fitness: -0.3684, Pop Avg Fitness: -0.3906\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 95%|█████████▌| 281/295 [1:15:24<03:42, 15.86s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.26%\n",
+ "\n",
+ "[Gen 282/295] Best Fitness: -0.3640, Pop Avg Fitness: -0.3821\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 96%|█████████▌| 282/295 [1:15:40<03:27, 15.94s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.14%\n",
+ "\n",
+ "[Gen 283/295] Best Fitness: -0.4138, Pop Avg Fitness: -0.4316\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 96%|█████████▌| 283/295 [1:15:56<03:10, 15.91s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.93%\n",
+ "\n",
+ "[Gen 284/295] Best Fitness: -0.4093, Pop Avg Fitness: -0.4255\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 96%|█████████▋| 284/295 [1:16:11<02:54, 15.86s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.16%\n",
+ "\n",
+ "[Gen 285/295] Best Fitness: -0.4472, Pop Avg Fitness: -0.4643\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 97%|█████████▋| 285/295 [1:16:27<02:37, 15.76s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.95%\n",
+ "\n",
+ "[Gen 286/295] Best Fitness: -0.4089, Pop Avg Fitness: -0.4291\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 97%|█████████▋| 286/295 [1:16:44<02:24, 16.01s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 87.97%\n",
+ "\n",
+ "[Gen 287/295] Best Fitness: -0.3904, Pop Avg Fitness: -0.4107\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 97%|█████████▋| 287/295 [1:16:59<02:07, 15.89s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.38%\n",
+ "\n",
+ "[Gen 288/295] Best Fitness: -0.4075, Pop Avg Fitness: -0.4217\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 98%|█████████▊| 288/295 [1:17:15<01:50, 15.85s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.16%\n",
+ "\n",
+ "[Gen 289/295] Best Fitness: -0.3725, Pop Avg Fitness: -0.3888\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 98%|█████████▊| 289/295 [1:17:31<01:36, 16.03s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.09%\n",
+ "\n",
+ "[Gen 290/295] Best Fitness: -0.4317, Pop Avg Fitness: -0.4522\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 98%|█████████▊| 290/295 [1:17:47<01:19, 15.95s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.32%\n",
+ "\n",
+ "[Gen 291/295] Best Fitness: -0.3665, Pop Avg Fitness: -0.3800\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 99%|█████████▊| 291/295 [1:18:03<01:03, 15.85s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.50%\n",
+ "\n",
+ "[Gen 292/295] Best Fitness: -0.3908, Pop Avg Fitness: -0.4204\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 99%|█████████▉| 292/295 [1:18:19<00:48, 16.01s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.43%\n",
+ "\n",
+ "[Gen 293/295] Best Fitness: -0.4243, Pop Avg Fitness: -0.4409\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 99%|█████████▉| 293/295 [1:18:35<00:31, 15.90s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.37%\n",
+ "\n",
+ "[Gen 294/295] Best Fitness: -0.4304, Pop Avg Fitness: -0.4483\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "\rEA Generations: 100%|█████████▉| 294/295 [1:18:51<00:15, 15.87s/it]"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.11%\n",
+ "\n",
+ "[Gen 295/295] Best Fitness: -0.4539, Pop Avg Fitness: -0.4728\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "EA Generations: 100%|██████████| 295/295 [1:19:07<00:00, 16.09s/it]\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ " -> Best Model Test Accuracy: 88.39%\n",
+ "\n",
+ "--- Training Baseline Model with Adam Optimizer ---\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "Adam Epoch 1/5: 100%|██████████| 59/59 [02:00<00:00, 2.04s/it]\n",
+ "Adam Epoch 2/5: 100%|██████████| 59/59 [02:00<00:00, 2.04s/it]\n",
+ "Adam Epoch 3/5: 100%|██████████| 59/59 [02:00<00:00, 2.04s/it]\n",
+ "Adam Epoch 4/5: 100%|██████████| 59/59 [01:59<00:00, 2.03s/it]\n",
+ "Adam Epoch 5/5: 100%|██████████| 59/59 [01:59<00:00, 2.03s/it]\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "\n",
+ "--- Final Results ---\n",
+ "Final Adam Model Accuracy: 94.39%\n",
+ "Final Best EA Model Accuracy: 88.39%\n",
+ "\n",
+ "Performance plot saved to 'performance_comparison.png'\n"
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAKyCAYAAAAEvm1SAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XlcFOUfB/DP7HIqHqV4K3iE931fgVhRlpVHHlke2f3LsrKyElgWzbQszU67tDxLsLI8KmHxvvK+IBXwxFtQuZbd+f0xzbCzFwsCy/F5v168YGdmZ54Z1spP3+f7CKIoiiAiIiIiIiIiIipFGncPgIiIiIiIiIiIKh+GUkREREREREREVOoYShERERERERERUaljKEVERERERERERKWOoRQREREREREREZU6hlJERERERERERFTqGEoREREREREREVGpYyhFRERERERERESljqEUERERERERERGVOoZSREREAARBgE6nc8u1161bh06dOsHHxweCIOD69esAgB9//BGtWrWCp6cnatasCQAICQlBSEhIoa/hzvsr6wIDAzF+/Hh3D6NSSklJgSAIWLhwYbGeV6fTQRCEYj1neVfUf3YUl/HjxyMwMNDlY/38/Ep2QEREVCYwlCIiomJz8OBBDB8+HAEBAfDx8UHDhg1x7733Yv78+e4eWqkLDAyEIAh2v+6//37luCtXrmDEiBHw9fXFZ599hh9//BFVq1bFsWPHMH78eDRv3hxff/01FixY4Ma7KftMJhMaNGgAQRCwdu1adw+n3JFDHEdfaWlp7h6ijczMTOh0OhgMBncPxe2OHj0KQRDg4+OjhNplHX9/REQEAB7uHgAREVUMW7duxYABA9CkSRM888wzqFevHk6fPo3t27dj3rx5mDRpkruHWOo6deqE119/3WZ7gwYNlJ937dqFGzduIDo6Gvfcc4+y3WAwwGw2Y968eWjRooWy/c8//yzSWLKysuDhUXH/tR8XF4fz588jMDAQS5YswQMPPODuIZVLX3zxhd0KFblSryzJzMxEVFQUANhUAE2bNg1Tp051w6jcY/HixahXrx6uXbuGlStX4umnn3b3kGx8/fXXMJvNymtnvz8iIqo8Ku5/nRIRUamaMWMGatSogV27dtn8BfbixYvuGZSbNWzYEE888YTTY+Rn4+iZWW/38vIq0lh8fHyK9L7yYvHi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ZGRkFM8NWo31zjvvRMuWLXH06NFCn6e4xv7OO+9g27Zt+PXXX+Hr6wsA2L9/P+Lj4+Hn56d8tWrVCgBUUwK7du1a6HETERERERERVXSslLLj5k3H+7Ra9et27YDDh9XhlCBI29euVR+bklI84/v222+Rl5eHBg0aKNtEUYS3tzc+/fRT1KhRw6XzjBs3DleuXMG8efMQEBAAb29v9O7d26YZt6enp/KzIAgOt5nNZrvXCQoKQnp6Os6dO6caMyA1/j5x4gQGDBjg0pgL63bHDgCLFy/Gxx9/DIPBgIYNGyrbb968icGDB2PWrFk277GsCqtatWrRb4CIiIiIiIiogmKllB1Vqzr+8vFRHxsVJQVS/2UbEATpdVSU1PjclfMWRl5eHn744QfMmTMH+/btU77279+PBg0aKL2ZWrdurTQPl23fvl31esuWLXj55ZcxaNAgtG3bFt7e3qom3cVl2LBh8PT0xJw5c2z2ffnll7h165ZS9WVvrNeuXUNSUhJat24NQJryZzKZin2c9mzbtg1PP/00vvrqK/Tq1Uu1r0uXLjh8+DACAwPRokUL1ReDKCIiIiIiIiLnGErdpqFDgZgYoEMHKbDq0EFafW/IkJK53u+//45r165h4sSJaNeunepr2LBhyhS+V155Bd999x2+//57JCUlITIyEocPH1ad66677sKPP/6Io0ePYseOHRgzZowyNa04NWnSBLNnz8bcuXPx7rvv4tixYzhx4gQ++ugjvPnmm3j99ddtphrq9Xps2LABhw4dwvjx41G7dm08+uijAKRV9m7evIkNGzbg8uXLyMzMLPYxA0BaWhqGDBmCUaNGISwsDGlpaUhLS8OlS5cAAP/73/9w9epVjB49Grt27cKJEyewfv16TJgwodRCMyIiIiIiIqLyiqFUMRg6FNi3T1ptb9++kgukAGnq3j333GN3it6wYcOwe/duHDhwACNHjkR4eDjefPNNdO3aFampqXjhhRdsznXt2jV06dIFTz75JF5++WXUqVOnRMY9efJkrFq1Cps2bUK3bt3Qrl07LF26FF988QU+/PBDm+Pff/99vPLKK+jatSvS0tKwevVqeHl5AQD69OmD559/HiNHjoS/v3+JNRE/duwYLly4gEWLFqF+/frKV/fu3QEADRo0wJYtW2AymXDfffehffv2mDx5MmrWrAmNhn+0iIiI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rl07sUqVKmKjRo3EF154Qbxx44ay//vvvxdr1Kgh/vrrr2Lr1q1FrVYrJiQkiB4eHuL58+dV53rllVfEfv36OXye8pgbNmwo5ubmig0aNBC3bNmi2m/9fIxGozhp0iSxRo0a4p133im++eab4tixY1W/N1d/B2vWrBG7dOkienp6ivHx8aprFfTcY2JixJCQENHX11fs0KGDuHXrVptntHr1ajEoKEj09fUVhw0bJt66dUtcuHChGBAQINasWVOcNGmSmJeX5/DZMJSiioCfWypvyuNn1lHA5Ki6xtH/rS9MdY/ll70gyF41j3x+ZyFOWf2yDJdceSb2wovbuS6/ivblLLB09pwLep91dZIlZ+Gjs8oYV65X0apoyuM/b6lyKyufWVdDKfaUsiCKIm7l3irUl8lsQoQhAuFx4biVewvhceGIMETAZDYV6jyiKBbbfYwZMwarV6/GzZs3lW3r169HZmYmhvw3MfXNN99ETEwMFi1ahD179qBFixYICwvD1atXi3TNKVOmYMSIEbj//vtx/vx5nD9/Hn369LE57uzZsxg0aBC6d++O/fv344svvsC3336L6dOnq45btGgRqlatih07dmD27NnQ6/X466+/lP0ajQaffPIJDh8+jEWLFiEuLg5vvvmm6hyZmZmYNWsWvvnmGxw+fBjdunVDs2bN8OOPPyrHGI1GLFmyBE899ZTT+/v2228xevRoeHp6YvTo0fj222+dHj9r1iwsWbIE33//PbZs2YKMjAz88ssvqmNc/R1MnToV77//Po4ePYoOHTqo9hX03N99911MmTIF+/btQ1BQEEaPHo28vDzVM/rkk0+wfPlyrFu3DgaDAUOGDMGaNWuwZs0a/Pjjj/jqq6+wUl62goiIyrTiWmLeWQ+h4mwg7eFhu93Vhs6WPYScrTIms95nNKqvVxGaNstjHTPGtj+TKwpqjF3QdYuTINzeUuqunN/RNmc9d5wpzHLwcoNnR/1qnPXmcfV9zholR0ZKvzdnTZtdacZs73q32/+HiCqZUonI3KgwlVI3c26K0MEtXzdzbtqMz1mllFarFatWrar6mjFjhiiKUpVO7dq1xR9++EF5z+jRo8WRI0dK93nzpujp6SkuWbJE2S9XAMn9kgpbKSWPq6BpZO+8847YsmVL0Ww2K8d89tlnop+fn3KfwcHBNpVL3bt3F9966y2b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Pv/8czPMdDgc6t+/v3r27Kni4mJ98MEH5rFJkybpscce05gxY8ynMW7btk1z587Vn/70J7Vp00Z33HGHZsyYoc6dO6tbt256/PHHlZ+fX21/PwAANHR0SgEAgHJcLle55XXdu3fXc889p2effVZ9+vTRsmXLzmr21IlmzJihGTNmqE+fPvryyy/13nvvmU9KC3Q3eb1ejRgxQr169dKdd96phISEoPlVlXH77bdr6tSpuvvuu9WrVy998skneu+999S5c+cq1/zJJ58oNTVVqampGjhwoJYvX645c+YoIyNDkvSLX/xCd911l2699Vb17dtXixcvlt1uD7rG+PHjNWrUKP385z9XixYt9Prrr0uS3nrrLZ1//vmaOHGievTooT/96U/lOqpO5be//a1efvllzZo1S7169VJ6erpmz55tdko1bdpUjz76qAYMGKDzzz9fW7du1UcffVTlv89TsVgsevfdd9WsWTMNHTpUw4cP1znnnKM333zTPCcjI0Nz5szRe++9p759+2rYsGFatmyZeXzWrFm67rrrdPfdd6tr16668sortXz5crVr106S5PV6NWXKFHXv3l2jRo1Sly5d9Nxzz0nyd3bdd9996t27t4YOHSqr1ao33nhDkn8m16JFi9SuXTuNGzdO3bt314033qijR4+aQevdd9+tX//615o8ebIGDx6spk2bauzYsdX29wMAQENnMZjUCAAAAAAAgFpGpxQAAAAAAABqHaEUAAAAAAAAah2hFAAAAAAAAGodoRQAAAAAAABqHaEUAAAAAAAAah2hFAAAAAAAAGodoRQAAAAAAABqHaEUAAAAAAAAah2hFAAAAAAAAGodoRQAAAAAAABqHaEUAAAAAAAAah2hFAAAAAAAAGrd/wMlKk3utdL9kgAAAABJRU5ErkJggg==\n"
+ },
+ "metadata": {}
+ }
+ ],
+ "execution_count": 12,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "yw4r6x2aSNdb",
+ "outputId": "6a4be55a-4ab1-4a75-9a03-d6780f3a9ab6"
+ }
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "gpuType": "T4",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "accelerator": "GPU"
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/protogenv2_2.ipynb b/protogenv2_2.ipynb
new file mode 100644
index 0000000..1cb21b8
--- /dev/null
+++ b/protogenv2_2.ipynb
@@ -0,0 +1,144 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ "
"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "IwnIO6CIIDgT"
+ },
+ "outputs": [],
+ "source": [
+ "# Go fetch the code\n",
+ "!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui\n",
+ "!git clone https://github.com/yfszzx/stable-diffusion-webui-images-browser stable-diffusion-webui/extensions/stable-diffusion-webui-images-browser"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "TCS-rfghIHu6"
+ },
+ "outputs": [],
+ "source": [
+ "# fetch and install extensions\n",
+ "!curl -Lo Style-Empire.ckpt https://civitai.com/api/download/models/2179\n",
+ "!mv \"Style-Empire.ckpt\" \"stable-diffusion-webui/embeddings/Style-Empire\"\n",
+ "!curl -Lo Style-Empire-neg.ckpt https://civitai.com/api/download/models/2179?type=Negative&format=Other\n",
+ "!mv \"Style-Empire-neg.ckpt\" \"stable-diffusion-webui/embeddings/Style-Empire-neg\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "sypWSuUGILiX"
+ },
+ "outputs": [],
+ "source": [
+ "# fetch and install model\n",
+ "!curl -Lo protogenv2.2.ckpt https://huggingface.co/darkstorm2150/Protogen_v2.2_Official_Release/resolve/main/Protogen_V2.2.ckpt\n",
+ "!mv \"protogenv2.2.ckpt\" \"stable-diffusion-webui/models/Stable-diffusion\"\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "afA1ckX1lEO9"
+ },
+ "outputs": [],
+ "source": [
+ "# fetch and install model\n",
+ "!curl -Lo RealisticVision_v13.safetensors https://civitai.com/api/download/models/6987?type=Model&format=SafeTensor\n",
+ "!mv \"RealisticVision_v13.safetensors\" \"stable-diffusion-webui/models/Stable-diffusion\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "F0ulcE8AO7dC"
+ },
+ "outputs": [],
+ "source": [
+ "# fix cannot add middleware after launch error\n",
+ "!pip install fastapi==0.90.1\n",
+ "!pip install safetensors==0.2.7\n",
+ "!pip install pyngrok"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from pyngrok import ngrok\n",
+ "token = input('please enter your ngrok token\\n sign up for a free account at https://ngrok.com\\n')\n",
+ "ngrok.set_auth_token(token)\n",
+ "\n",
+ "for tunnel in ngrok.get_tunnels():\n",
+ " ngrok.disconnect(tunnel.public_url)\n",
+ "http_tunnel = ngrok.connect(addr=7860)\n",
+ "print(str(http_tunnel))"
+ ],
+ "metadata": {
+ "id": "Z-doWj7sAZF2"
+ },
+ "execution_count": null,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "ypb5Rxs1IRq3"
+ },
+ "outputs": [],
+ "source": [
+ "# Now we set the web ui version we want to use. Main branch is unfortunately broken pretty often.\n",
+ "%cd stable-diffusion-webui\n",
+ "#!git checkout 93fad28\n",
+ "!git pull"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "kzVqjlAOIUpX"
+ },
+ "outputs": [],
+ "source": [
+ "# Lets light this candle\n",
+ "!COMMANDLINE_ARGS=\"--disable-safe-unpickle --no-half-vae --xformers --reinstall-xformers --enable-insecure-extension-access\" REQS_FILE=\"requirements.txt\" python launch.py"
+ ]
+ }
+ ],
+ "metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "provenance": [],
+ "include_colab_link": true
+ },
+ "gpuClass": "premium",
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file