File size: 3,249 Bytes
28ac2ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# swarm_mind_v4/settings.py
import pygame
import numpy as np
import random

# --- Temel Ekran ve Simülasyon Ayarları ---
SCREEN_WIDTH = 1280
SCREEN_HEIGHT = 720
FPS = 60 # Görselleştirme FPS'i
WINDOW_TITLE = "SwarmMind V4.0 - Co-evolutionary Competition"
SIMULATION_STEPS_PER_GEN = 800 # Her eşli değerlendirme için adım sayısı (Hız için düşük)
NUM_GENERATIONS = 100 # Toplam evrimleştirilecek nesil sayısı

# --- Koloni Ayarları ---
COLONY_ID_RED = 0
COLONY_ID_BLUE = 1
NUM_AGENTS_PER_COLONY = 15 # Koloni başına ajan sayısı (Hız için düşük)
TOTAL_AGENTS = NUM_AGENTS_PER_COLONY * 2

# --- Renkler ---
COLOR_BACKGROUND = (10, 10, 30)
# Kırmızı Koloni
COLOR_AGENT_RED_SEEKING = (255, 100, 100)
COLOR_AGENT_RED_RETURNING = (255, 180, 180)
COLOR_PHEROMONE_HOME_RED = (200, 0, 0, 150) # Kırmızı yuva izi
# Mavi Koloni
COLOR_AGENT_BLUE_SEEKING = (100, 100, 255)
COLOR_AGENT_BLUE_RETURNING = (180, 180, 255)
COLOR_PHEROMONE_HOME_BLUE = (0, 0, 200, 150) # Mavi yuva izi
# Ortak Renkler
COLOR_NEST_RED = (255, 50, 0)   # Kırmızı yuva
COLOR_NEST_BLUE = (0, 50, 255)  # Mavi yuva
COLOR_FOOD = (50, 255, 50)      # Yem rengi (Yeşil)
COLOR_OBSTACLE = (100, 100, 100)

# --- Ajan Ayarları (Temel Fizik) ---
AGENT_SIZE = 7
MAX_SPEED = 3.5
MAX_FORCE = 0.2

# --- Ortam Ayarları (V4 - İki Yuva, Dinamik Yem) ---
# Yuvaları ekranın iki yanına yerleştirelim
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

# Yem Kaynakları (Dinamik)
MAX_FOOD_SOURCES = 10
FOOD_RADIUS = 10
FOOD_INITIAL_AMOUNT = 40
FOOD_SPAWN_RATE = 0.015
# Yem bitince kaynak ortamdan silinsin mi?
FOOD_DEPLETION_REMOVAL = True  # <--- EKLENEN SATIR

# Engeller
NUM_OBSTACLES = 6
OBSTACLE_MIN_RADIUS = 15
OBSTACLE_MAX_RADIUS = 45

# Feromon Ayarları
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

# --- NN Girdi/Çıktı Ayarları (V3 ile aynı, şimdilik) ---
# Dikkat: Bu değerler neat_config_v4.txt içindeki num_inputs ile eşleşmeli!
# Şu anki girdiler: Home Pher (3), Food Pher (3), Bias (1), Carrying (1), Vel (2), Nest Dir (2), Food Dir (2), Food Dist (1), Agent Density (1) = 16
num_inputs = 16 # Config dosyasıyla tutarlılık için buraya da ekleyelim (assert'te kullanılabilir)
NN_PHEROMONE_SENSE_DIST = AGENT_SIZE * 4
NN_PHEROMONE_SENSE_ANGLES = [-np.pi / 3, 0, np.pi / 3] # Sol, Orta, Sağ
NN_FOOD_SENSE_RADIUS = 150
NN_AGENT_SENSE_RADIUS = 60
NN_OUTPUT_DEPOSIT_THRESHOLD = 0.6

# --- Ko-evrim Ayarları ---
# Fitness Hesaplama Yöntemi: 'absolute' (sadece kendi yemi), 'competitive' (kendi - rakip)
FITNESS_METHOD = 'competitive'
# Her genomu kaç rakip genoma karşı test edelim?
NUM_OPPONENTS_PER_EVAL = 5

# --- Görselleştirme ve Debug ---
VISUALIZE_BEST_GENOMES = True
VISUALIZATION_FPS = 30
DEBUG_DRAW_PHEROMONES = False
DEBUG_DRAW_FOOD_LOCATIONS = True
DEBUG_DRAW_NESTS = True
DEBUG_DRAW_OBSTACLES = True