| |
|
| | import pygame
|
| | import numpy as np
|
| | import random
|
| |
|
| |
|
| | SCREEN_WIDTH = 1280
|
| | SCREEN_HEIGHT = 720
|
| | FPS = 60
|
| | WINDOW_TITLE = "SwarmMind V4.0 - Co-evolutionary Competition"
|
| | SIMULATION_STEPS_PER_GEN = 800
|
| | NUM_GENERATIONS = 100
|
| |
|
| |
|
| | COLONY_ID_RED = 0
|
| | COLONY_ID_BLUE = 1
|
| | NUM_AGENTS_PER_COLONY = 15
|
| | TOTAL_AGENTS = NUM_AGENTS_PER_COLONY * 2
|
| |
|
| |
|
| | COLOR_BACKGROUND = (10, 10, 30)
|
| |
|
| | COLOR_AGENT_RED_SEEKING = (255, 100, 100)
|
| | COLOR_AGENT_RED_RETURNING = (255, 180, 180)
|
| | COLOR_PHEROMONE_HOME_RED = (200, 0, 0, 150)
|
| |
|
| | COLOR_AGENT_BLUE_SEEKING = (100, 100, 255)
|
| | COLOR_AGENT_BLUE_RETURNING = (180, 180, 255)
|
| | COLOR_PHEROMONE_HOME_BLUE = (0, 0, 200, 150)
|
| |
|
| | COLOR_NEST_RED = (255, 50, 0)
|
| | COLOR_NEST_BLUE = (0, 50, 255)
|
| | COLOR_FOOD = (50, 255, 50)
|
| | COLOR_OBSTACLE = (100, 100, 100)
|
| |
|
| |
|
| | AGENT_SIZE = 7
|
| | MAX_SPEED = 3.5
|
| | MAX_FORCE = 0.2
|
| |
|
| |
|
| |
|
| | NEST_POS_RED = np.array([100, SCREEN_HEIGHT / 2], dtype=np.float32)
|
| | NEST_POS_BLUE = np.array([SCREEN_WIDTH - 100, SCREEN_HEIGHT / 2], dtype=np.float32)
|
| | NEST_RADIUS = 30
|
| |
|
| |
|
| | MAX_FOOD_SOURCES = 10
|
| | FOOD_RADIUS = 10
|
| | FOOD_INITIAL_AMOUNT = 40
|
| | FOOD_SPAWN_RATE = 0.015
|
| |
|
| | FOOD_DEPLETION_REMOVAL = True
|
| |
|
| |
|
| | NUM_OBSTACLES = 6
|
| | OBSTACLE_MIN_RADIUS = 15
|
| | OBSTACLE_MAX_RADIUS = 45
|
| |
|
| |
|
| | PHEROMONE_RESOLUTION = 15
|
| | GRID_WIDTH = SCREEN_WIDTH // PHEROMONE_RESOLUTION
|
| | GRID_HEIGHT = SCREEN_HEIGHT // PHEROMONE_RESOLUTION
|
| | PHEROMONE_MAX_STRENGTH = 1.0
|
| | PHEROMONE_DEPOSIT_VALUE = 0.9
|
| | PHEROMONE_EVAPORATION_RATE = 0.010
|
| | PHEROMONE_DIFFUSION_RATE = 0.05
|
| |
|
| |
|
| |
|
| |
|
| | num_inputs = 16
|
| | NN_PHEROMONE_SENSE_DIST = AGENT_SIZE * 4
|
| | NN_PHEROMONE_SENSE_ANGLES = [-np.pi / 3, 0, np.pi / 3]
|
| | NN_FOOD_SENSE_RADIUS = 150
|
| | NN_AGENT_SENSE_RADIUS = 60
|
| | NN_OUTPUT_DEPOSIT_THRESHOLD = 0.6
|
| |
|
| |
|
| |
|
| | FITNESS_METHOD = 'competitive'
|
| |
|
| | NUM_OPPONENTS_PER_EVAL = 5
|
| |
|
| |
|
| | VISUALIZE_BEST_GENOMES = True
|
| | VISUALIZATION_FPS = 30
|
| | DEBUG_DRAW_PHEROMONES = False
|
| | DEBUG_DRAW_FOOD_LOCATIONS = True
|
| | DEBUG_DRAW_NESTS = True
|
| | DEBUG_DRAW_OBSTACLES = True |