產品介紹

旅行商問題(travel salesman problem,TSP)指給定一系列地點(若地點有時間窗,則為含時間窗的旅行商問題,TSPTW),求從指定點出發經過每一個地點的最短路徑。本產品提供基于API形式的TSP/TSPTW問題求解服務。

歡迎留下聯系方式咨詢或獲取免費使用權,我們將于2個工作日內與您取得聯系。

單用戶單日調用優化次數上限為1000次,單次優化規模上限為50個地點。如果有更大用量和規模需求,請聯系我們進一步咨詢與購買。

申請使用

歡迎您在下方留下咨詢信息,我們將于兩個工作日內與您聯系

路徑優化TSP/TSPTW問題API
最后更新時間:2019-07-08

協議

HTTP協議;POST請求方式;調用和返回的數據均為Json格式。

基本規范
請求地址

請聯系杉數獲取訪問地址、令牌等信息。

公共請求參數

為保障API接口的權限及安全等要求,服務平臺所有的API接口在http請求的header中均需包含如下信息:

Header參數 備注 示例
reqTimestamp 系統時間System.currentTimeMillis() 1560331308386
key 服務平臺發給用戶的key
keyToken 服務平臺發給用戶的KeyToken
sign 簽名信息, 用戶根據服務平臺發給用戶的Secret對API中的請求信息參數按規則生成簽名。生成簽名的規則參考下文
x-access-token 根據key+keyToken在平臺上申請的令牌
Content-Type application/json application/json
Sign簽名規則

按參數的字符串進行從小到大排序,并用“&”連接

連接后字符串的結尾拼接時間戳

最終連接后的字符串轉成大寫

用MD5對此字符串進行加鹽加密

post參數及值按key的字符串順序從大到小排序,如果post的json結果有多層級,只對第一層級進行排序。并按以上規則進行簽名。

例如:
請求body:
{"age":12,"list":[{"age":12,"name":"杉數"}],"name":"杉數","user":{"id":1,"name":"小明"}}
則簽名串為:
按照第一層key進行排序,然后拼接。拼接后的待加密的明文:
age=12&list=[{"name":"杉數","age":12}]&name=杉數&user={"id":1,"name":"小明"}
請求參數
參數結構/名稱 說明 類型 必填 范圍 默認值
params 參數集以二級名稱下為其屬性 Object
isTSPTW 是否考慮時間窗,考慮時間窗:true;不考慮時間窗:false Boolean true/false false
isCloseLoop 回程是否回到出發點,回到出發點:true;不回出發點:false Boolean true/false false
mapVender 距離矩陣提供商, 經緯度距離:euclidean String euclidean euclidean
velocity 平均時速單位:km/h Double 0-100
departureTime 起點出發時間,格式:hhmm String
depotAddr 起點明文地址 String
locations 數組,以下二級名稱為其數組對象中的屬性 Array<Object>
locationId 除起點外的其他地點,地點代碼不可重復,不可叫depot String
serviceTimeWindow 地點的工作時間窗,格式:hhmm:hhmm。結束時間必須大于開始時間 String 0000:2400
serviceDuration 地點的服務時長,單位:秒 Integer 0-100000 0
priority 地點優先級,1-10:優先級高到低。優化時,priority將會首先被考慮,在滿足優先級的前提下,時間窗可以被打破 Integer 1-10 10
locationAddr 地點的明文地址,輸入至少精確到省、市、區 String
參數示例:
{
 "params": {
  "isTSPTW": false,
  "isCloseLoop": false,
  "mapVender": "euclidean",
  "velocity": 0,
  "departureTime": "0930",
  "depotAddr": "上海市楊浦區紀念路8號"
},
 "locations": [
  {
  "locationId": "DD002",
  "serviceTimeWindow": "0000:2400",
  "serviceDuration": 0,
  "priority":10,
  "locationAddr": "北京市東城區歌華大廈"
  }
 ]
}
請求結果說明
結果結構/名稱 說明 類型
code 狀態代碼,成功為0,詳見狀態碼說明列表 String
message 狀態描述 String
data Object
requestId 優化請求的唯一ID String
TSPResult 請求結果數據 Object
startDateTime 車次的出發時間,即輸入參數中的departureTime,格式:hhmm String
endDateTime 車次的結束時間,格式:hhmm,跨天時間輸出時做格式處理 String
totalDistance 該車次行駛的總距離, 單位:m Integer
endDateTimeDaySpan 全部完成所需跨天數,0表示沒有跨天 Integer
TSPStops 以下為其參數,發生錯誤時為null Array<Object>
stopLocationId 停靠的站點Id String
seq 該停靠點在車次中的次序 Integer
plannedTimeOfArrival 該停靠點的計劃到達時間,格式:hhmmss,不做跨天表示處理 String
plannedTimeOfArrivalDaySpan 該停靠點的計劃時間(跨天天數),0表示沒有跨天 Integer
plannedTimeOfDeparture 該停靠點的計劃離開時間,格式:hhmmss,不做跨天表示處理 String
plannedTimeOfDepartureDaySpan 該停靠點的計劃離開時間(跨天天數), 0表示沒有跨天 Integer
handlingDuration 服務時長,單位:秒 Integer
waitingDuration 等待時長,單位:秒 Integer
distanceFromPreviousStop 該停靠點距離前一個停靠點的行駛距離,單位:米 Integer
drivingDurationFromPreviousStop 該停靠點距離前一個停靠點的行駛時間,單位:秒 Integer
timeWindowFulfilled 是否滿足時間窗約束 Boolean
TSPError TSP計算錯誤信息 Object
params 參數集校驗結果描述 String
location 地點列表校驗結果描述 String
結果示例:
{
 "code": "0",
 "message": "操作成功",
 "data": {
  "requestId": "20180818001001",
  "TSPResult": {
   "startDateTime": "0700",
   "endDateTime": "1800",
   "totalDistance": 98710,
   "endDateTimeDaySpan": 0,
   "TSPStops": [
    {
    "stopLocationId": "depot",
    "seq": 1,
    "plannedTimeOfArrival": "073501",
    "plannedTimeOfArrivalDaySpan": 0,
    "plannedTimeOfDeparture": "074215",
    "plannedTimeOfDepartureDaySpan": 1,
    "handlingDuration": 300,
    "waitingDuration": 180,
    "distanceFromPreviousStop": 2556,
    "drivingDurationFromPreviousStop": 690,
    "timeWindowFulfilled": false
    }
   ]
  },
  "TSPError": {
   "params": " velocity值不能為空",
   "location": "locationId值不能為空"
   }
  }
}
狀態碼說明列表
狀態代碼 說明
0 成功
10011000 簽名不合法
11001101 用戶公司信息失效
10011002 api資源路徑不存在
10011003 key令牌參數為空
10011004 key 令牌不合法
10011005 key 令牌過期,請重新獲取
10011006 時間額度已過期,請重新購買
10011007 調用次數額度已無,請重新購買
10011008 時間戳不合法
10011009 key是無效的
110011010 請求超頻
10121012 參數集信息錯誤 具體錯誤信息查看 TSPError.params
10122012 地點列表信息錯誤 具體錯誤信息查看 TSPError.location
10122013 地址解析數量超過50個限制

提示信息:

微信夺宝猜单双辅助