Skip to content

Kadircnci/AkbankBootcampProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Sürücüsüz Metro Simülasyonu (Rota Optimizasyonu)

Proje Açıklaması

Bu proje, bir metro ağında iki istasyon arasındaki en az aktarmalı ve en hızlı rotayı bulan bir simülasyon uygulamasıdır. Proje, graf veri yapısını kullanarak metro ağını modellemekte ve BFS ile A* algoritmalarını kullanarak rota optimizasyonu yapmaktadır.

Kullanılan Teknolojiler ve Kütüphaneler

  • Python 3: Projenin ana programlama dili.
  • collections: defaultdict ve deque kullanılarak sırasıyla hatlar için varsayılan liste ve BFS için kuyruk yapısı oluşturuldu.
  • heapq: A* algoritması için öncelik kuyruğu (priority queue) implementasyonu.
  • typing: Tip anotasyonları için kullanıldı (örneğin, Dict, List, Optional).

Algoritmaların Çalışma Mantığı

BFS Algoritması (en_az_aktarma_bul)

  • Amaç: En az aktarmalı rotayı bulmak.
  • Çalışma Mantığı: BFS (Breadth-First Search), graf üzerinde en kısa yolu bulur. Her istasyonu ziyaret ederken, komşularını bir kuyruk yapısına ekler ve hedef istasyona ulaşıldığında rotayı döndürür.
  • Neden Kullanıldı?: BFS, graf üzerinde en kısa yolu (aktarma sayısı açısından) garanti eder.

A* Algoritması (en_hizli_rota_bul)

  • Amaç: En hızlı rotayı bulmak.
  • Çalışma Mantığı: A* algoritması, bir öncelik kuyruğu kullanarak toplam süreyi minimize eder. Her adımda, toplam süreyi hesaplayarak en düşük süreye sahip rotayı seçer.
  • Neden Kullanıldı?: A*, en hızlı rotayı bulmak için optimize edilmiş bir algoritmadır. Heuristic bir fonksiyon eklenebilir, ancak bu projede basit bir Dijkstra benzeri yaklaşım yeterli oldu.

Örnek Kullanım ve Test Sonuçları

Proje, üç test senaryosu ile test edilmiştir:

  1. AŞTİ'den OSB'ye:
    • En az aktarmalı rota: AŞTİ -> Kızılay -> Kızılay -> Ulus -> Demetevler -> OSB
    • En hızlı rota: Aynı rota, toplam 25 dakika.
  2. Batıkent'ten Keçiören'e:
    • En az aktarmalı rota: Batıkent -> Demetevler -> Gar -> Keçiören
    • En hızlı rota: Aynı rota, toplam 21 dakika.
  3. Keçiören'den AŞTİ'ye:
    • En az aktarmalı rota: Keçiören -> Gar -> Gar -> Sıhhiye -> Kızılay -> AŞTİ
    • En hızlı rota: Aynı rota, toplam 19 dakika.

Projeyi Geliştirme Fikirleri

  • Gerçek bir metro ağını (örneğin, İstanbul Metrosu) kullanarak daha büyük bir graf üzerinde test etme.
  • Rotaları görselleştirmek için bir grafik arayüz (örneğin, matplotlib veya networkx) ekleme.
  • A* algoritması için bir heuristic fonksiyonu (örneğin, iki istasyon arasındaki tahmini süre) ekleyerek performansı artırma.
  • Aktarma sürelerini dinamik olarak hesaplama (örneğin, hatlar arası aktarma sürelerini farklı değerlerle modelleme).

Kurulum ve Çalıştırma

  1. Python 3 yüklü olduğundan emin olun.
  2. Proje dosyasını (KadirCanakci_MetroSimulation.py) indirin.
  3. Terminalde dosyayı çalıştırın: python KadirCanakci_MetroSimulation.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages