|
|
|
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 |