Çok Amaçlı QoS Rotalama Optimizasyonu — NP-Hard Multi-Constraint QoS Routing problemini 6 farklı algoritma ile çözen, gerçek zamanlı görselleştirme ve karşılaştırmalı deney yapabilme özelliklerine sahip masaüstü uygulaması.
Üç çelişen metriği (Gecikme, Güvenilirlik, Kaynak Kullanımı) aynı anda optimize eder.
- Temel Özellikler
- Desteklenen Algoritmalar
- Kurulum
- Kullanım
- Proje Yapısı
- Dokümantasyon
- QoS Metrikleri
- Konfigürasyon
Stokastik algoritmalar farklı seed'lerle N kez çalıştırılıp en iyi sonuç seçilir.
| Özellik | Açıklama |
|---|---|
| 2D/3D Toggle | OpenGL destekli 3D görünüm |
| Packet Animation | Yol üzerinde animasyon |
| Interactive Graph | Hover ile detay görüntüleme |
Orta tık ile kenar kırma, otomatik rota yeniden hesaplama.
- PDF rapor export
- PNG graf görüntüsü
- JSON/CSV deney sonuçları
| Algoritma | Dosya | Açıklama |
|---|---|---|
| Genetic Algorithm (GA) | genetic_algorithm.py |
Evrimsel seçilim, crossover, mutasyon |
| Ant Colony (ACO) | aco.py |
Karınca feromon takibi |
| Particle Swarm (PSO) | pso.py |
Sürü zekası |
| Simulated Annealing (SA) | simulated_annealing.py |
Tavlama benzetimi |
| Algoritma | Dosya | Açıklama |
|---|---|---|
| Q-Learning | q_learning.py |
Off-policy değer öğrenme |
📖 Detaylı açıklama: GA Akış Şeması | ACO Akış Şeması
- Python 3.9+
- Windows / Linux / macOS
# 1. Repoyu klonlayın
git clone https://github.com/Erkan3034/QoS-Multi-Objective-Routing.git
cd QoS-Multi-Objective-Routing
# 2. Sanal ortam oluşturun
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/macOS
source venv/bin/activate
# 3. Bağımlılıkları yükleyin
cd app
pip install -r requirements.txtPyQt5>=5.15
PyQtGraph>=0.12
networkx>=3.1
numpy>=1.24
matplotlib>=3.7
reportlab>=4.0
Pillow>=10.0cd app
python main.py-
Graf Yükleme
- "Proje Verisini Yükle" → CSV dosyasından
- "Graf Oluştur" → Rastgele Erdős–Rényi topolojisi
-
Kaynak/Hedef Seçimi
- Sol tık = Kaynak (S) - Yeşil
- Sağ tık = Hedef (D) - Kırmızı
-
Ağırlık Ayarları
- Gecikme / Güvenilirlik / Kaynak slider'ları
- Toplam otomatik 100%'e normalize edilir
-
Optimizasyon
- Algoritma seç → "Optimize Et"
-
Sonuç
- Bulunan yol sarı renkte
- Metrikler sağ panelde
QoS-Multi-Objective-Routing/
├── app/
│ ├── main.py # Giriş noktası
│ ├── requirements.txt
│ └── src/
│ ├── algorithms/ # 5 optimizasyon algoritması
│ │ ├── genetic_algorithm.py
│ │ ├── aco.py
│ │ ├── pso.py
│ │ ├── simulated_annealing.py
│ │ ├── q_learning.py
│ │
│ │
│ ├── core/
│ │ └── config.py # Konfigürasyon
│ │
│ ├── services/
│ │ ├── graph_service.py # Graf oluşturma
│ │ ├── metrics_service.py # QoS metrik hesaplama
│ │ └── report_service.py # PDF/PNG export
│ │
│ ├── experiments/
│ │ └── experiment_runner.py
│ │
│ └── ui/
│ ├── main_window.py
│ ├── components/
│ │ ├── graph_widget.py
│ │ ├── control_panel.py
│ │ └── results_panel.py
│ └── dialogs/
│ └── experiment_dialog.py
│
├── graph_data/ # CSV veri dosyaları
│ ├── *_NodeData.csv
│ ├── *_EdgeData.csv
│ └── *_DemandData.csv
│
├── Documents/ # 📖 Dokümantasyon
│
└── README.md
| Dosya | İçerik |
|---|---|
| Geliştirici Rehberi | Kurulum, proje yapısı, kodlama standartları |
| GA Akış Şeması | Genetik Algoritma görsel açıklaması |
| ACO Akış Şeması | Karınca Kolonisi görsel açıklaması |
| Teknik Gereksinimler | Proje gereksinimleri ve QoS tanımları |
| Test Senaryoları | Deney düzeneği ve test planları |
| Ölçeklenebilirlik | Büyük graf performans analizi |
| Proje Yönetimi | Görev dağılımı ve timeline |
| Seed ve Tekrarlanabilirlik | Seed yönetimi ve reproducibility |
| Metrik | Formül |
|---|---|
| TotalDelay | Σ(LinkDelay) + Σ(ProcessingDelay) (k ≠ S,D) |
| ReliabilityCost | Σ[-log(LinkReliability)] + Σ[-log(NodeReliability)] |
| ResourceCost | Σ(1Gbps / Bandwidth) |
| TotalCost | w₁×Delay + w₂×Reliability + w₃×Resource |
delay_norm = min(total_delay / 200ms, 1.0)
reliability_norm = min(-log(reliability) / 10.0, 1.0)
resource_norm = min(resource_cost / 200.0, 1.0)
Parametreler app/src/core/config.py dosyasında:
# Genetic Algorithm
GA_POPULATION_SIZE = 200
GA_GENERATIONS = 100
GA_MUTATION_RATE = 0.05
GA_CROSSOVER_RATE = 0.8
GA_ELITISM = 0.1
# Ant Colony Optimization
ACO_N_ANTS = 50
ACO_N_ITERATIONS = 100
# Q-Learning / SARSA
QL_EPISODES = 5000
QL_LEARNING_RATE = 0.1
QL_DISCOUNT_FACTOR = 0.95Tüm algoritmalar kullanılan seed değerini döndürür:
result = ga.optimize(source=1, destination=20, weights=weights)
print(f"Seed: {result.seed_used}")
# Aynı sonucu tekrar almak için:
ga = GeneticAlgorithm(graph, seed=result.seed_used)📖 Detaylı bilgi: Seed ve Tekrarlanabilirlik Dokümantasyonu
BSM307 - Bilgisayar Ağları Dersi | Güz 2025
Danışman: Doç. Dr. Evrim GÜLER
| İsim | Görev |
|---|---|
| Erkan Turgut | Topoloji & Genetic & ACO algoritmaları. |
| Bilal Alfa Guldi | PSO & SA algoritmaları. |
| Ibrahim Alshujaa | UI & Entegrasyon. |
| EmadAldean Hasan | UI & Entegrasyon. |
| Vugar Muradov | Chaos Monkey & Hover App |
| Meerimbek Talaibek Uulu | Q-Learning algoritması. |