取送貨問題(Pickup and Delivery Problem)

取送貨問題及其變體

廣義取送貨問題(General Pickup and Delivery Problems,GPDP)可以分為兩類:

  • Vehicle Routing Problems with
    Backhauls,VRPB:從配送中心(depot)取貨運輸貨物到客戶點,再從客戶點取貨運輸至配送中心交付(backhoul)。

    transportation of goods from the depot to linehaul customers and from backhaul customers to the depot

  • Vehicle Routing Problems with Pickups and Deliveries
    ,VRPPD:貨物在取貨點和送貨點之間流轉。按照取貨點和交貨點是否是成對的,可以進一步分為兩類:

    • unpaired:對于貨物,從某一取貨點取貨,可以交付至任意送貨點。如果只有一輛車,那么問題簡化為Pickup and Delivery Traveling Salesman Problem,PDTSP。如果是多輛車,Pickup and Delivery Vehicle Routing Problem,PDVRP。
    • paired:對于某一訂單,從某一指定取貨點取貨,只能交付至指定的送貨點。如果研究的對象是貨物,則有Single Pickup and Deleivery Problem,SPDP(一輛車)和PDP兩個問題。如果研究的對象是乘客,則有e Dial-A-Ride Problem,DARP問題,對于一輛車的情況為the single vehicle case of the DARP as SDARP.

本文研究的取送貨問題為PDP,如圖:
在這里插入圖片描述

接下來,本文所說的取送貨問題,均為同車型,多輛車的Pickup and Delivery Problem,Homogeneous Multi vehicle pickup and delivery problem用PDP表示。

Parragh S N, Doerner K F, Hartl R F. A survey on pickup and delivery problems: Part II: Transportation between pickup and delivery locations[J/OL]. Journal für Betriebswirtschaft, 2008, 58(2): 81-117. https://doi.org/10.1007/s11301-008-0036-4.

取送貨問題數學模型(Homogeneous Multi vehicle pickup and delivery problem formulations)

參數

  • n n n:取貨點數量。
  • n ~ \tilde{n} n~:送貨點數量,因為這里是Paired PDP問題,故 n = n ~ n=\tilde{n} n=n~
  • P P P:取貨點集合, P = { 1 , . . . , n } P = \{1,..., n\} P={1,...,n}
  • D D D:送貨點集合, D = { n + 1 , . . . , n + n ~ } D = \{n +1,..., n +\tilde{n}\} D={n+1,...,n+n~}
  • K K K:車輛集合

決策變量

  • x i j k x_{ijk} xijk?:車輛路徑決策變量, x i j k = 1 x_{ijk}=1 xijk?=1,車輛 k k k經過弧 ( i , j ) (i,j) (i,j)
  • Q i k Q_{i}^{k} Qik?:車輛 k k k離開節點 i i i時的裝載量;
  • B i k B_{i}^{k} Bik?:車輛 k k k服務 i i i點的開始時刻;

混合整數規劃模型
min ? ∑ k ∈ K ∑ ( i , j ) ∈ A c i j k x i j k subject?to. ∑ k ∈ K ∑ j : ( i , j ) ∈ A x i j k = 1 ? i ∈ P ∪ D , ∑ j : ( 0 , j ) ∈ A x 0 j k = 1 ? k ∈ K , ∑ i : ( i , n + n ~ + 1 ) ∈ A x i , n + n ~ + 1 k = 1 ? k ∈ K , ∑ i : ( i , j ) ∈ A x i j k ? ∑ i : ( j , i ) ∈ A x j i k = 0 ? j ∈ P ∪ D , k ∈ K , x i j k = 1 ? B j k ≥ B i k + d i + t i j k ? ( i , j ) ∈ A , k ∈ K , x i j k = 1 ? Q j k = Q i k + q j ? ( i , j ) ∈ A , k ∈ K , max ? { 0 , q i } ≤ Q i k ≤ min ? { C k , C k + q i } ? i ∈ V , k ∈ K , e i ≤ B i k ≤ l i ? i ∈ V , k ∈ K , B n + n ~ + 1 k ? B 0 k ≤ T k ? k ∈ K , x i j k ∈ { 0 , 1 } ? ( i , j ) ∈ A , k ∈ K . \begin{align} \min \quad & \sum_{k\in K}\sum_{(i,j) \in A} c_{ij}^k x_{ij}^k \\ \text{subject to.} \quad &\sum_{k \in K} \sum_{j:(i, j) \in A} x_{i j}^{k} =1 & \forall i \in P \cup D, \\ &\sum_{j:(0, j) \in A} x_{0 j}^{k}=1 & \forall k \in K, \\ &\sum_{i:(i, n+\tilde{n}+1) \in A} x_{i, n+\tilde{n}+1}^{k} =1 & \forall k \in K, \\ &\sum_{i:(i, j) \in A} x_{i j}^{k}-\sum_{i:(j, i) \in A} x_{j i}^{k} =0 &\forall j \in P \cup D, k \in K, \\ &x_{i j}^{k}=1 \Rightarrow B_{j}^{k} \geq B_{i}^{k}+d_{i}+t_{i j}^{k} & \forall(i, j) \in A, k \in K, \\ &x_{i j}^{k}=1 \Rightarrow Q_{j}^{k} =Q_{i}^{k}+q_{j} & \forall(i, j) \in A, k \in K, \\ &\max \left\{0, q_{i}\right\} \leq Q_{i}^{k} \leq \min \left\{C^{k}, C^{k}+q_{i}\right\} & \forall i \in V, k \in K, \\ & e_i \leq B_i^k \leq l_i & \forall i \in V, k \in K,\\ & B_{n+\tilde{n}+1}^k -B_{0}^k \leq T^k &\forall k \in K,\\ &x_{i j}^{k} \in\{0,1\} & \forall(i, j) \in A, k \in K . \end{align} minsubject?to.?kK?(i,j)A?cijk?xijk?kK?j:(i,j)A?xijk?=1j:(0,j)A?x0jk?=1i:(i,n+n~+1)A?xi,n+n~+1k?=1i:(i,j)A?xijk??i:(j,i)A?xjik?=0xijk?=1?Bjk?Bik?+di?+tijk?xijk?=1?Qjk?=Qik?+qj?max{0,qi?}Qik?min{Ck,Ck+qi?}ei?Bik?li?Bn+n~+1k??B0k?Tkxijk?{0,1}??iPD,?kK,?kK,?jPD,kK,?(i,j)A,kK,?(i,j)A,kK,?iV,kK,?iV,kK,?kK,?(i,j)A,kK.??

  • 目標函數(1)最小化總體行駛成本;
  • 約束(2)保證了每個客戶點都被訪問了一次;
  • 約束(3-5)分別保證了每輛車必須從始發站出發,到達并離開每個客戶點,并最終回到終點站;
  • 約束(6)消除子回路,
  • 約束(7-8)車輛容量約束

【注】約束(6)和(7)是非線性的,可以用大M進行線性化

參考:
Parragh S N, Doerner K F, Hartl R F. A survey on pickup and delivery problems: Part II: Transportation between pickup and delivery locations[J/OL]. Journal für Betriebswirtschaft, 2008, 58(2): 81-117. https://doi.org/10.1007/s11301-008-0036-4.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715200.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715200.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715200.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

測試/測試開發八股——找大廠測試實習基礎篇

第一部分:基礎概念 1. 軟件測試是什么? 在規定的條件下對一個產品或者程序進行操作,以發現程序錯誤,衡量軟件質量,并對其是否能滿足設計要求進行評估的過程。 軟件測試工程師的任務 2. 軟件測試工程師的任務 軟件測試工程師主要工作是檢查軟件是否有bug、是否具有穩定…

5.設備驅動程序

5. 設備驅動程序 Linux 內核是一個比較龐大的系統,深入理解內核可以減少在系統移植中的障礙。在系統移植中設備驅動開發是一項很復雜的工作,由于 Linux 內核提供了一部分源代碼,同時還提供了對某些公共部分的支持,例如&#xff0c…

數據結構與算法:堆

朋友們大家好啊,本篇文章來到堆的內容,堆是一種完全二叉樹,再介紹堆之前,我們首先對樹進行講解 樹與堆 1.樹的介紹1.1節點的分類 2.樹的存儲結構3.二叉樹的概念和結構3.1 二叉樹的特點3.2 特殊的二叉樹3.3二叉樹的存儲結構 4.堆的…

Acwing---1460. 我在哪?

我在哪? 1.題目2.基本思想3.代碼實現 1.題目 農夫約翰出門沿著馬路散步,但是他現在發現自己可能迷路了! 沿路有一排共 N N N 個農場。 不幸的是農場并沒有編號,這使得約翰難以分辨他在這條路上所處的位置。 然而,…

Mybatis | 動態SQL

目錄: 動態SQL中的 “元素” :\<if>元素\<choose>、\<when>、\<otherwise>元素\<where>、\<trim>元素\<set>元素\<foreach>元素\<bind>元素 作者簡介 &#xff1a;一只大皮卡丘&#xff0c;計算機專業學生&#xff0c;正…

單細胞Seurat - 降維與細胞標記(4)

本系列持續更新Seurat單細胞分析教程&#xff0c;歡迎關注&#xff01; 非線形降維 Seurat 提供了幾種非線性降維技術&#xff0c;例如 tSNE 和 UMAP&#xff0c;來可視化和探索這些數據集。這些算法的目標是學習數據集中的底層結構&#xff0c;以便將相似的細胞放在低維空間中…

__vueParentComponent和__vue__獲取dom元素上的vue實例

vue2: 使用__vue__ const el document.querySelector(.xxx); const vueInstance el.__vue__;vue3: 使用 __vueParentComponent const el document.querySelector(.xxx); const vueInstance el.__vueParentComponent;

Python錯題集-4:NameError:(變量名錯誤)

1問題描述 Traceback (most recent call last): File "D:\pycharm\projects\1-可視化學習\8.3更改小提琴圖的中位數、均值、顏色等.py", line 8, in <module> violin_parts plt.violinplot(data, showmediansTrue, showmeansTrue) …

代碼隨想錄算法訓練營第四十四天 完全背包 、零錢兌換 II 、組合總和 Ⅳ

代碼隨想錄算法訓練營第四十四天 | 完全背包 、零錢兌換 II 、組合總和 Ⅳ 完全背包 題目鏈接&#xff1a;題目頁面 (kamacoder.com) 解釋一、01背包 一維 &#xff1a;為什么要倒序遍歷背包&#xff1f; 首先要明白二維數組的遞推過程&#xff0c;然后才能看懂二維變一維的…

【MATLAB源碼-第150期】基于matlab的開普勒優化算法(KOA)機器人柵格路徑規劃,輸出做短路徑圖和適應度曲線。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 開普勒優化算法&#xff08;Kepler Optimization Algorithm, KOA&#xff09;是一個虛構的、靈感來自天文學的優化算法&#xff0c;它借鑒了開普勒行星運動定律的概念來設計。在這個構想中&#xff0c;算法模仿行星圍繞太陽的…

項目風險:測試大佬結合實例告訴你如何應對!

項目有風險 今天下午15點&#xff0c;團隊成員D向他的主管Z反饋他測試的項目有風險&#xff1a;項目在測試周期內&#xff0c;但在用例評審時發現有一處功能邏輯有爭議&#xff0c;需要產品經理跟業務方確認&#xff0c;可能出現的情況有&#xff1a; 1 不變更需求&#xff0…

【技巧】SpringCloud Gateway實現多子域(單個應用開放多個端口)

0. 目錄 1. 需求背景2. 實現3. 額外 - 其它Servlet容器實現3.1 Undertow3.2 Tomcat 4. 相關 1. 需求背景 瀏覽器針對單個網站地址(ipport)存在“6個請求”限制&#xff1b;通過多子域配置可以突破這個限制&#xff0c;增加網站的響應效率&#xff0c;尤其是針對三維服務這類大…

【深入了解設計模式】組合設計模式

組合設計模式 組合模式是一種結構型設計模式&#xff0c;它允許你將對象組合成樹狀結構來表現“整體-部分”關系。組合模式使得客戶端可以統一對待單個對象和組合對象&#xff0c;從而使得代碼更加靈活和易于擴展。 概述 ? 對于這個圖片肯定會非常熟悉&#xff0c;上圖我們可…

Carla自動駕駛仿真九:車輛變道路徑規劃

文章目錄 前言一、關鍵函數二、完整代碼效果 前言 本文介紹一種在carla中比較簡單的變道路徑規劃方法&#xff0c;主要核心是調用carla的GlobalRoutePlanner模塊和PID控制模塊實現變道&#xff0c;大體的框架如下圖所示。 一、關鍵函數 1、get_spawn_point(),該函數根據指定r…

c語言字符串函數之strcpy函數,strnpy函數

strcpy函數 語法格式 strcpy(字符數組1,字符串2&#xff09; 它的作用是把字符串2復制到字符數組1里面 #include<stdio.h> #include<string.h> int main() {char c[]"河南";char d[]"安徽";char d[];printf("%s\n",strcpy(c,d));…

力扣hot100題解(python版41-43題)

41、二叉樹的層序遍歷 給你二叉樹的根節點 root &#xff0c;返回其節點值的 層序遍歷 。 &#xff08;即逐層地&#xff0c;從左到右訪問所有節點&#xff09;。 示例 1&#xff1a; 輸入&#xff1a;root [3,9,20,null,null,15,7] 輸出&#xff1a;[[3],[9,20],[15,7]]示例…

【C語言結構體】用戶自定義類型--結構體,結構體傳參,位段,聯合體和枚舉【圖文詳解】

歡迎來CILMY23的博客喔&#xff0c;本篇為【C語言結構體】用戶自定義類型--結構體&#xff0c;結構體傳參&#xff0c;位段&#xff0c;聯合體和枚舉【圖文詳解】&#xff0c;感謝觀看&#xff0c;支持的可以給個一鍵三連&#xff0c;點贊關注收藏。 前言 上一篇&#xff08;ht…

GO—函數

Go 語言支持普通函數、匿名函數和閉包&#xff0c;從設計上對函數進行了優化和改進&#xff0c;讓函數使用起來更加方便。 Go 語言的函數屬于“一等公民”&#xff08;first-class&#xff09;&#xff0c;也就是說&#xff1a; 函數本身可以作為值進行傳遞。支持匿名函數和閉…

Leetcode.2369 檢查數組是否存在有效劃分

題目鏈接 Leetcode.2369 檢查數組是否存在有效劃分 rating : 1780 題目描述 給你一個下標從 0 0 0 開始的整數數組 n u m s nums nums &#xff0c;你必須將數組劃分為一個或多個 連續 子數組。 如果獲得的這些子數組中每個都能滿足下述條件 之一 &#xff0c;則可以稱其為…

推薦6款SSH遠程連接工具

1、Xshell 介紹&#xff1a; xshell是一個非常強大的安全終端模擬軟件&#xff0c;它支持SSH1, SSH2, 以及Windows平臺的TELNET 協議。Xshell可以在Windows界面下用來訪問遠端不同系統下的服務器&#xff0c;從而比較好的達到遠程控制終端的目的。 業界最強大的SSH客戶機 官…