API Genel Tanım

Bu API, verilen konum noktaları üzerinden en kısa / en verimli rotayı hesaplamak için tasarlanmıştır. Hesaplama sırasında hem OR-Tools algoritması hem de AI tabanlı optimizasyon çalıştırılır ve sonuçlar karşılaştırmalı olarak döndürülür. En iyi sonuç winner alanında belirtilir.

Çoklu Araç (VRP) Desteği: Sistemimiz, birden fazla araç kullanıldığında noktaları coğrafi olarak en mantıklı kümelere (Clustering) ayırır ve her bir kümeyi paralel iş parçacıkları (multithreading) ile optimize eder. Bu sayede karmaşık lojistik operasyonları saniyeler içinde AI tarafından çözülür.

Kimlik Doğrulama

Tüm isteklerde Authorization başlığı altında Bearer token kullanmalısınız. API anahtarınızı dashboard üzerinden temin edebilirsiniz.

BASH
curl -X POST https://routing.deede.tr/api/v1/optimize.php \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{...}'

HTTP İstek Bilgileri

  • Method: POST
  • Content-Type: application/json
  • Response-Type: application/json
  • Timeout Önerisi: 60 saniye (en az)

Uzun süren ve çoklu araç içeren hesaplamalar nedeniyle istemci tarafında timeout süresi 60 saniye olarak ayarlanmalıdır.

Rota Çözücü

Hibrit motor (AI + OR-Tools) kullanarak en iyi rotayı bulur. Çoklu araç desteği ile noktaları otomatik olarak kümelere ayırır.

POST
/api/v1/optimize.php
Çoklu Araç (VRP) Kullanımı

Birden fazla araç için num_vehicles parametresini isteğe eklemeniz yeterlidir. Sistem, noktaları otomatik olarak en verimli kümelere ayırır ve her bir araç için ayrı rota hesaplar.

İstek Gövdesi (JSON)

JSON
{ // Koordinat Listesi: [Boylam, Enlem] veya [Enlem, Boylam] // İlk nokta (Index 0) her zaman BAŞLANGIÇ (Depot) kabul edilir. "coords": [ [28.978493, 41.009688], [28.977893, 41.010113], [28.977303, 41.01047], [28.980000, 41.01100], [28.981000, 41.01200] ], // Depoya geri dönüş yapılsın mı? (Opsiyonel, Varsayılan: true) "return_to_depot": true, "num_vehicles": 2 }

Kod Örnekleri

Python İstek Örneği

PYTHON
import requests url = "https://routing.deede.tr/api/v1/optimize.php" payload = { "coords": [ [28.978493, 41.009688], [28.977893, 41.010113], [28.977303, 41.01047], [28.980000, 41.01100], [28.981000, 41.01200] ], "return_to_depot": True, "num_vehicles": 2 } headers = {"Authorization": "Bearer YOUR_API_KEY"} response = requests.post(url, json=payload, headers=headers, timeout=60) response.raise_for_status() data = response.json() print(data["best_route"], data["best_distance"])

PHP İstek Örneği

PHP
<?php $ch = curl_init("https://routing.deede.tr/api/v1/optimize.php"); $data = json_encode([ "coords" => [ [28.978493, 41.009688], [28.977893, 41.010113], [28.977303, 41.01047], [28.980000, 41.01100], [28.981000, 41.01200] ], "return_to_depot" => true, "num_vehicles" => 2 ]); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => [ "Content-Type: application/json", "Authorization: Bearer YOUR_API_KEY" ], CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 60 ]); $response = curl_exec($ch); curl_close($ch); $result = json_decode($response, true); print_r($result["best_route"]);

Başarılı Yanıt (200 OK)

JSON
{ "success": true, "winner": "OR-Tools", "best_distance": 36036.0, "best_route": [0, 1, 2, 0, 0, 3, 4, 0], "improvement_percentage": 0.0, "matrix_fetch_duration": 0.000115, "results": { "ai": { "distance": 36036.0, "duration": 32.62, "model_duration": 17.12, "route": [0, 1, 2, 4, 3] }, "ortools": { "distance": 36036.0, "duration": 17.00, "route": [0, 1, 2, 4, 3] } }, "route_geometry": { "type": "LineString", "coordinates": [...] } }

Alan Açıklamaları

  • best_distance: En iyi bulunan toplam mesafe (metre)
  • best_route: Noktaların ziyaret sırası (index bazlı). Çoklu araç durumunda rotalar 0 durakları ile birbirinden ayrılır (Örn: [0,1,2,0,0,3,4,0]). (Çoklu araç durumunda rotalar 0 durakları ile birbirinden ayrılır).
  • winner: En iyi sonucu veren algoritma (AI veya OR-Tools)
  • num_vehicles: Araç sayısı (Varsayılan: 1). Sistem, noktaları bu sayıya göre kümelere bölerek paralel optimize eder.
  • results.ai / results.ortools: Algoritmalara ait detaylı metrikler
  • route_geometry: Harita üzerinde çizim için GeoJSON uyumlu rota

Hata ve Debug Notları

  • HTTP 200 dışında bir status code alırsanız JSON parse etmeyin.
  • Boş yanıt veya HTML dönerse response.text loglanmalıdır.
  • JSON parse hataları genellikle timeout veya upstream error kaynaklıdır.