Open Sinem0142 opened 11 months ago
Bu proje, Gezgin Satıcı Problemi'ni çözmek amacıyla Türkiye'deki iller arasındaki uzaklık matrisini kullanarak belirli sezgisel algoritmaları uygulamayı hedefler. Bu algoritmalar, bir satıcının Türkiye'deki farklı illeri gezip en kısa mesafede dolaşmasını sağlayacak bir rota oluşturmak için kullanılır.
Projede şu adımlar gerçekleştirilir:
Uzaklık Matrisinin Okunması: Verilen Excel dosyası içindeki Türkiye illeri arasındaki uzaklık değerleri okunur. Bu değerler, her bir ilin diğer illerle olan mesafelerini içerir.
Hamilton Turunun Bulunması: Seçilen sezgisel algoritma kullanılarak bir tur oluşturulur. Bu tur, Türkiye'deki iller arasında dolaşarak her ilin sadece bir kez ziyaret edilmesini ve tur sonunda başlangıç noktasına (Ankara'ya) geri dönülmesini sağlar.
Hamilton Turunun Uzunluğunun Hesaplanması: Oluşturulan Hamilton turunun toplam uzunluğu hesaplanır. Bu hesaplama, her bir ilin diğer illerle olan uzaklıklarının toplamını içeren uzaklık matrisine dayanarak yapılır.
Projede yapılanlar:
Excel dosyasından veri okuma işlemi: İller arasındaki uzaklıkları içeren matrisin program tarafından okunması sağlanır. Seçilen algoritmanın uygulanması: Belirlenen sezgisel algoritma kullanılarak Türkiye'deki iller arasında bir tur oluşturulur. Turun doğruluğunun sağlanması: Oluşturulan turun belirtilen kısıtlara (başlangıç noktası, her ilin sadece bir kez ziyareti, tur sonunda dönüş) uygunluğu kontrol edilir. Turun uzunluğunun hesaplanması: Oluşturulan turun toplam uzunluğu, iller arası uzaklık matrisine göre hesaplanır ve bu değer ekrana yazdırılır. Bu işlemlerin her biri, Gezgin Satıcı Problemi için çözüm üreten bir adımı temsil eder. Proje sonunda, seçilen algoritmanın kullanılmasıyla Türkiye'deki iller arasında gezgin satıcının en kısa rota turunu oluşturabilir ve bu rotanın uzunluğunu hesaplayabilirsiniz.
include
include
include
include
define N 81
void csv_oku(char* dosya_adi, int adj[N][N]); void en_yakin_ekleme_algoritmasi(int adj[N][N], int baslangic_dugumu, int tur[N+1]); void matrixPrint(int matrix[][N], int rows, int cols);
int main() { int adj[N][N]; int i; int baslangic_dugumu = 5; // ankara 6. sehir oldugu icin 5. indekse denk gelir
}
void csv_oku(char dosya_adi, int adj[N][N]) { FILE fp; char satir[1024]; char *token; int satir_no, sutun_no;
}
void en_yakin_ekleme_algoritmasi(int adj[N][N], int baslangic_dugumu, int tur[N+1]) { int ziyaret_edildi[N] = {0}; ziyaret_edildi[baslangic_dugumu] = 1; tur[0] = baslangic_dugumu; int i, j, k; // Mevcut turun en yakin ziyaret edilmemis sehrini bul ve turuna ekle for (i = 1; i <= N; i++) { int min_mesafe = 9999; int min_index = -1;
}
void matrixPrint(int matrix[][N], int rows, int cols) { int i,j; for ( i = 0; i < rows; i++) { for ( j = 0; j < cols; j++) { printf("%d\t", matrix[i][j]); } printf("\n"); } }