Bu proje, kentsel trafik akışını optimize etmek ve bekleme sürelerini en aza indirmek amacıyla Pekiştirmeli Öğrenme (Reinforcement Learning) yöntemlerini kullanan bir simülasyon çalışmasıdır. Trafik ışıklarının kontrolü için Proximal Policy Optimization (PPO) algoritması kullanılmakta ve ortam simülasyonu SUMO (Simulation of Urban MObility) üzerinde gerçekleştirilmektedir.
⚠️ Not: Bu proje şu anda aktif geliştirme aşamasındadır. Kod yapısı, hiperparametreler ve model performansı düzenli olarak güncellenmektedir.
Geleneksel zaman ayarlı trafik ışıkları, değişken trafik yoğunluklarına adapte olmakta yetersiz kalabilmektedir. Bu projenin temel hedefleri:
- Kavşaklardaki araç kuyruk uzunluklarını (queue length) azaltmak.
- Ortalama bekleme süresini (waiting time) minimize etmek.
- PPO ajanı ile dinamik ve adaptif bir trafik yönetim sistemi oluşturmak.
- Dil: Python
- Simülasyon: SUMO (Simulation of Urban MObility) / TraCI
- Algoritma: PPO (Proximal Policy Optimization)
- Kütüphaneler:
gymnasiumveyagym(Ortam yönetimi için)stable-baselines3(RL algoritmaları için)torch(Ekran Kartı için)sumolib&traci&numpy
Bu proje, bir trafik simülasyonunu sadece izlemek yerine, onu Gymnasium arayüzü üzerinden programatik olarak kontrol edilebilir bir öğrenme ortamına dönüştürmektedir.
-
🔌 Özel Gym Ortamı (Custom Environment):
- SUMO simülasyonu, standart OpenAI Gym/Gymnasium formatına (
step,reset,render) uygun hale getirilmiştir. - Bu sayede Stable-Baselines3 gibi popüler RL kütüphaneleri ile doğrudan entegrasyon sağlanmıştır.
- SUMO simülasyonu, standart OpenAI Gym/Gymnasium formatına (
-
🔄 TraCI ile Anlık Kontrol:
- Python script'i, TraCI (Traffic Control Interface) üzerinden simülasyondaki trafik ışıklarına saniye bazında müdahale edebilir.
- Araç verileri (konum, hız, bekleme süresi) simülasyon durdurulmadan gerçek zamanlı olarak çekilir.
-
🧠 Dinamik Durum Gözlemi (State Observation):
- Ajan, sadece ışığın rengini değil; şeritlerdeki araç yoğunluğunu ve kümülatif bekleme sürelerini matris formatında algılar.
-
🤖 PPO Entegrasyonu:
- Trafik akışını optimize etmek için Proximal Policy Optimization (PPO) algoritması aktif olarak çalışmaktadır.
- Model, belirlenen ödül fonksiyonuna (reward function) göre aksiyon alarak trafiği rahatlatmayı öğrenir.
Projenin teknik altyapısı ve simülasyon bağlantısı tamamlanmış olup, şu anda ajanın (agent) performansını maksimize etmeye odaklanılmaktadır. Güncel çalışmalar şu başlıklar altında devam etmektedir:
-
🧪 Ödül Fonksiyonu (Reward Function) Tasarımı:
- Ajanın en doğru stratejiyi öğrenmesi için kritik olan "ödül mekanizması" geliştiriliyor.
- Sadece bekleme süresini değil, aynı zamanda kuyruk uzunluğunu ve araçların dur-kalk sayısını da hesaba katan karmaşık bir ödül fonksiyonu üzerinde deneyler yapılıyor.
-
📈 Hiperparametre Optimizasyonu:
- PPO algoritmasının daha kararlı (stable) öğrenmesi için
learning_rate,batch_sizevegammagibi hiperparametreler üzerinde ince ayarlar yapılıyor. - Modelin öğrenme eğrisi (learning curve) Tensorboard üzerinden izlenerek aşırı öğrenme (overfitting) engellenmeye çalışılıyor.
- PPO algoritmasının daha kararlı (stable) öğrenmesi için
-
🔄 Exploration (Keşfetme) Dengesinin İyileştirilmesi:
- Modelin belirli senaryolarda "sabit karar verme" (policy collapse) eğilimi analiz edilmektedir.
- Ajanın farklı stratejileri denemeye devam etmesi için Entropy Coefficient katsayısı üzerinde çalışılmakta ve Epsilon-Greedy benzeri keşif mekanizmaları test edilmektedir.
-
🌐 Çoklu Kavşak (Multi-Intersection) Entegrasyonu:
- Şu anki tekil kavşak (single-agent) başarısı referans alınarak, sistemin çoklu kavşak senaryolarına taşınması planlanmaktadır.
- Komşu kavşakların birbirini etkilediği bu senaryoda, merkezi veya dağıtık (decentralized) öğrenme yaklaşımları araştırılmaktadır.
Bu proje, temel trafik kontrolünün ötesine geçerek tam otonom bir şehir yönetim sistemi olmayı hedeflemektedir. Henüz AR-GE aşamasında olan uzun vadeli hedefler şunlardır:
-
🚑 Acil Durum Önceliklendirmesi (EVP - Emergency Vehicle Preemption):
- Ambulans, itfaiye ve polis araçlarının simülasyonda tespiti.
- Bu araçlar kavşağa yaklaştığında, RL modelinin ödül fonksiyonunu (reward function) override ederek onlara anında "Yeşil Dalga" (Green Wave) oluşturulması.
-
👁️ Bilgisayarlı Görü (Computer Vision) Entegrasyonu:
- Simülasyondaki yapay sensör verileri yerine, gerçek dünya senaryosuna hazırlık olarak kamera görüntülerinin kullanılması.
- YOLO (You Only Look Once) gibi nesne tespit algoritmalarıyla araçların sayılması, sınıflarının (kamyon, otomobil, otobüs) ayrıştırılması ve bu verilerin PPO modeline input olarak verilmesi.
-
🧠 Öngörüye Dayalı Ağ Yönlendirmesi (Predictive Routing):
- Sistemin sadece anlık durumu değil, trafik yoğunluğunun artacağı saatleri tahmin etmesi.
- Sıkışıklık henüz oluşmadan, araçların navigasyon sistemleriyle haberleşerek onları alternatif ve daha boş kavşaklara yönlendiren (Load Balancing) makro bir strateji geliştirilmesi.
Projeyi yerel makinenizde çalıştırmak için aşağıdaki adımları izleyebilirsiniz:
-
Repoyu klonlayın:
git clone https://github.com/ehehehe-cmd/Traffic_Management.git cd Traffic_Management -
Gerekli kütüphaneleri yükleyin:
pip install -r requirements.txt
-
Eğitimi başlatmak için:
python train.py
Bu proje, kodun modülerliğini sağlamak ve farklı deneyleri yönetmek amacıyla aşağıdaki dizin yapısına sahiptir. Bu dizin yapısı projenin genelini temsil etmektedir basit değişikliler olablir:
Traffic_Management/
├── adaptor.py # SUMO ile model arasındaki bağlantı adaptörü
├── egitim.py # Eğitimi başlatan ana dosya
├── test_model.py # Eğitilmiş modeli test etme kodu
├── requirements.txt # Gerekli kütüphaneler
├── logs/ # Eğitim logları (Tensorboard)
│ ├── PPO_1/
│ └── PPO_2/
├── modeller/ # Kaydedilmiş modeller
│ ├── 4 ışık/ # 4 ışıklı kavşak denemeleri
│ │ ├── modelv1/
│ │ └── modelv2/
│ └── solo/ # Tekil kavşak denemeleri
│ └── solov1/
│ ├── egitim/ # Ara kayıtlar (Checkpoints 100k, 200k...)
│ └── ppo_kavsak_model_solov1_final.zip
└── SUMO/ # Simülasyon harita ve rota dosyaları
├── grid_cmd_code.txt
├── map/ # Grid şehir haritası (4 Işıklı)
│ ├── grid_proje.sumocfg
│ ├── grid_sehir.net.xml
│ └── traffic.rou.xml
└── map_solo/ # Tekil kavşak haritası
├── simulasyon.sumocfg
└── solo.net.xml
Her türlü geri bildirim ve katkıya açığım! İletişim için LinkedIn Profilim üzerinden ulaşabilirsiniz.
