báo cáo tối ưu lập kế hoạch back tracking with branch and bound

14 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo tối ưu lập kế hoạch back tracking with branch and bound

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Cụ thể, khách hàng từ tuyến đườngi r0sẽ được loại bỏ khỏir0và chèn vào tuyến đườngr1tại vị trí , nơi màp r0=r1và0 ≤ p ≤ |r1|.Ví dụ, trong Hình 0.7, khách hàngc4được di chuyển từ tuyến đ

Trang 1

0.1 Back tracking with branch and bound

Ý tưởng: Sử dụng 2 mảngxvàyđể lưu thứ tự khách hàng được phục vụ Trong đó,•ykchỉ khách hàng đầu tiên được phụ vụ bởi nhân viênk, vớik= 1, , K.•xichỉ khách hàng sau được phục vụ sau khách hàngi, vớii= 1, N

Hình 0.1: Ví dụ cho biểu diễn phương pháp quay lui.

Trang 2

Algorithm 1: Backtracking for Vehicle Routing Problem

Input: Cost matrix , Number of vehicles , Number of customersC K N

Output: Optimal routes for vehicles

Initialize arrays X, Y , andvisited;Setfbest← ∞;

Set initial routes in ;Y

whilenot all configurations trieddo

Generate new configurations for ;Y

for k ∈ {1, 2, , K} do: TryY(k);for i ∈ Y do: TryX(i, k whereY[k] = i);Update fbestif a better solution is found;

Procedure TryY( );k

foreachi∈ {0, 1, , N }do:ifCheckY(i, k)then

Y[k] ← i;visited i[ ] ← 1;

TryY(k+ 1);visited i[ ] ← 0;

Procedure TryX(i, k);

foreachv∈ {0, 1, , N }do:ifCheckX(v, i, k)then

X[i] ← v;visited[v] ← 1;

TryX(v, k);visited[v] ← 0;

Return Optimal routes as determined by X and ;Y

2

Trang 3

0.2 Local search

0.2.1 Relocate operator

Phép toán này bao gồm việc di chuyển một khách hàng từ một tuyến đường này sangmột tuyến đường khác Cụ thể, khách hàng từ tuyến đườngi r0sẽ được loại bỏ khỏir0và chèn vào tuyến đườngr1tại vị trí , nơi màp r0=r1và0 ≤ p ≤ |r1|.

Ví dụ, trong Hình 0.7, khách hàngc4được di chuyển từ tuyến đườngr1sang tuyếnđường r0

Hình 0.2: Ví dụ cho relocate operator.

0.2.2 Swap operator

Phép toán này bao gồm việc đổi chỗ hai khách hàng từ hai tuyến đường khác nhau.Nó có thể được xem như một sự di chuyển kép, trong đó các khách hàng được chèn vàovị trí tương ứng của nhau trong tuyến đường Một cách chính thức hơn, khách hàngcitạivị trípitrong tuyến đườngr0được di chuyển đến vị trípjtrong tuyến đường , trong khir1khách hàngcjtại vị trípjtrong tuyến đườngr1được di chuyển đến vị trípitrong tuyếnđường r0

Trong hình 0.7, khách hàngc6từ tuyến đườngr1và khách hàngc5từ tuyến đườngr0được đổi chỗ theo vị trí tương ứng của họ.

3

Trang 4

Hình 0.3: Ví dụ cho swap operator.

0.2.3K-Exchange operator

Phép toán này, còn được gọi là k-opt, bao gồm việc loại bỏkcạnh trong cùng mộttuyến đường và sau đó kết nối lại các đoạn đường còn lại bằng các cạnh khác Kết quảlà, một số đoạn có thể được đảo ngược Một cách chính thức, nó bao gồm việc loại bỏkcạnh mà các điểm cuối của chúng nằm ở các vị trí< p0p1 pk>trên tuyến đường.Mục tiêu là kết nối lại các đoạn đường theo một trật tự khác nhau Phép toán này có thểđược định nghĩa cho bất kỳ số lượng cạnh nào bắt đầu từ hai Tuy nhiên, việc tính toántất cả các sự trao đổi có thể đòi hỏi rất nhiều tài nguyên Vì vậy, phép toán thường đượcgiới hạn ở sự trao đổi 2-cạnh hoặc 3-cạnh.

Ví dụ về phép toán trao đổi 2-cạnh và trao đổi 3-cạnh được mô tả trong Hình 0.8.Trong trường hợp đầu tiên, hai cạnh được loại bỏ vớic1vàc7là điểm cuối Tuyến đườngkết quả là một tuyến đường mới chứa đoạn bắt đầu từc1và kết thúc ởc3theo hình thứcđảo ngược.

Trong trường hợp thứ hai, các cạnh này cóc1,c4vàc6là điểm cuối Do đó, chúng tathu được hai đoạn đường bắt đầu từc1vàc4và kết thúc tạic2vàc7tương ứng Đoạn thứhai được theo dõi trước tiên theo cùng một trật tự Sau đó, đoạn đầu tiên được theo dõitheo trật tự đảo ngược.

4

Trang 5

Hình 0.4: Ví dụ cho relocate operator.

0.2.4 Cross operator

Phép toán này cắt hai tuyến đường khác nhau thành hai phần và tái cấu trúc chúngbằng cách sử dụng các cạnh chéo Một cách chính thức, nó trao đổi các đoạn từ tuyếnđườngr1vàr2bắt đầu từ khách hàngcivàcjtương ứng và kết thúc ở kho, nơir1= r2.

Hình 0.5: Ví dụ cho relocate operator.

5

Trang 6

0.3 Constraints programming0.3.1 Biến

•ykđể chỉ trạng thái hoạt động của nhân viên k, nếuyk= 1tức là nhân viên hoạtkđộng, ngược lại,yk= 0nhân viênkkhông hoạt động.

i,j= 0thì cung(i, j)không thuộc hành trình của nhân viên k

•max_work time_ Thời gian làm việc lớn nhất của một nhân viên nào đó.

0.3.2 Ràng buộc

• Mỗi khách hàng chỉ được bảo trì bởi một nhân viên.K

xi,jk =NXi=0

xkj,i,∀j = 0, , N; k= 1, , K (2)• Mỗi nhân viên bắt đầu từ 0 và kết thúc tại 0.

xk0,j= yk

jđược bảo trì sau khách hàngi).Nếuxk

i,j= 1thìpjk≥ pik+ 1,

∀ i= j;i= 0, , N j = 1; , , N; k= 1, , K (6)• Để tối ưu thời gian chạy code, giả sử các nhân viên được sắp xếp sao cho nếu nhânviên k hoạt động thì nhân viên k+1 cũng phải hoạt động (dồn tất cả nhân viên khônghoạt động lên đầu, để tránh trường hợp hoán vị).

6

Trang 7

y ≤y ,∀k = 1, , K − 1 (7)• Thời gian làm việc lớn nhất.

max work_ _time≥NXi=0

xki,j× (dj+ ti,j) , ∀k = 1, , K (8)• Miền giá trị của các biến.

•ykđể chỉ trạng thái hoạt động của nhân viên k, nếuyk= 1tức là nhân viên hoạtkđộng, ngược lại,yk= 0nhân viênkkhông hoạt động.

•pikđể chỉ thứ tự của khách hàng thứ trong hành trình của nhân viên i k•xk

i,jchỉ cung(i, j)có thuộc hành trình của nhân viênkhay không Nếuxki,j = 1thì cung(i, j)thuộc hành trình của nhân viên Ngược lại,k xk

i,j= 0thì cung(i, j)không thuộc hành trình của nhân viên k

•max_work time_ Thời gian làm việc lớn nhất của một nhân viên nào đó.

0.4.2 Ràng buộc

• Mỗi khách hàng chỉ được bảo trì bởi một nhân viên.K

• Đến và rời khỏi khách hàng bởi cùng một nhân viên.N

j,i,∀j = 0, , N; k= 1, , K (14)

7

Trang 8

xk0,j= yk

• Nhân viên cần di chuyển đến các khách hàng.xk

i,i= 0,∀i= 0, , N; ∀k= 1, , K (17)• Loại bỏ sub-tour (Nếu cung(i, j)thuộc hành trình của nhân viên thì khách hàngk

jđược bảo trì sau khách hàngi).

M xi,jk− 1 + pik+ 1 ≤ pkj

∀ i= j; j = 1, , N; i= 1, , N; k= 1, , K (18)• Để tối ưu thời gian chạy code, giả sử các nhân viên được sắp xếp sao cho nếu nhânviên k hoạt động thì nhân viên k+1 cũng phải hoạt động (dồn tất cả nhân viên khônghoạt động lên đầu, để tránh trường hợp hoán vị).

• Thời gian làm việc lớn nhất.

max work_ _time≥NXi=0

i,j× (dj+ ti,j) , ∀k = 1, , K (20)• Miền giá trị của các biến.

Trang 9

0.5 Tham lam0.5.1 Greedy 1

• Ý tưởng: Tập các khách hàng chưa được phục vụ được sắp xếp theo thứ tự tăng dần

về thời gian (thời gian di chuyển + thời gian bảo trì) so với công ty0("gần") Sauđó các khách hàng được thêm vào các tuyến của nhân viên sao cho làm giá trị củahàm mục tiêu tăng ít nhất Nếu không làm tăng giá trị hàm mục tiêu, khách hàngđược thêm vào tuyến của nhân viên đang có thời gian làm việc ngắn nhất.

• Sơ đồ giải thuậtAlgorithm 2: Greedy 1

P← tập khách hàng;

Sắp xếp theo thứ tự "gần" công ty;

while P khác rỗng do

Lấy khách hàng đầu c trong ;P

Q← tập các nhân viên có hành trình làm tăng ít giá trị hàm mục tiêu nhất nếu thêmcvào hành trình;

Lựa chọn nhân viên đang có thời gian làm việc nhỏ nhất trongk Q;Thêm c vào hành trình của ;k

Loại bỏ c khỏi ;P

0.5.2 Greedy 2

• Ý tưởng: Tại mỗi bước, mỗi nhân viên sẽ chọn khách hàng tốn ít thời gian nhất để

đi đến Thứ tự chọn khách hàng của nhân viên được thực hiện lần lượt.

• Sơ đồ giải thuậtAlgorithm 3: Greedy 2

Khởi tạo hành trình của mỗi nhân viên bắt đầu tại 0;k← 1;

while Tồn tại khách hàng chưa được phục vụ do

Lựa chọn khách hàng tốn ít thời gian nhất thêm vào hành trình của ;kk← (k + 1)%K;

0.6 Tìm kiếm cục bộ0.6.1 Relocate operator

Phép toán này bao gồm việc di chuyển một khách hàng từ một tuyến đường này sangmột tuyến đường khác Cụ thể, khách hàng từ tuyến đườngi r0sẽ được loại bỏ khỏir0và chèn vào tuyến đườngr1tại vị trí , nơi màp r0=r1và0 ≤ p ≤ |r1|.

Ví dụ, trong Hình 0.7, khách hàngc4được di chuyển từ tuyến đườngr1sang tuyến9

Trang 10

Trong hình 0.7, khách hàngc6từ tuyến đườngr1và khách hàngc5từ tuyến đườngr0được đổi chỗ theo vị trí tương ứng của họ.

Hình 0.7: Ví dụ cho swap operator.

10

Trang 11

0.6.3K-Exchange operator

Phép toán này, còn được gọi là k-opt, bao gồm việc loại bỏkcạnh trong cùng mộttuyến đường và sau đó kết nối lại các đoạn đường còn lại bằng các cạnh khác Kết quảlà, một số đoạn có thể được đảo ngược Một cách chính thức, nó bao gồm việc loại bỏkcạnh mà các điểm cuối của chúng nằm ở các vị trí< p0p1 pk>trên tuyến đường.Mục tiêu là kết nối lại các đoạn đường theo một trật tự khác nhau Phép toán này có thểđược định nghĩa cho bất kỳ số lượng cạnh nào bắt đầu từ hai Tuy nhiên, việc tính toántất cả các sự trao đổi có thể đòi hỏi rất nhiều tài nguyên Vì vậy, phép toán thường đượcgiới hạn ở sự trao đổi 2-cạnh hoặc 3-cạnh.

Ví dụ về phép toán trao đổi 2-cạnh và trao đổi 3-cạnh được mô tả trong Hình 0.8.Trong trường hợp đầu tiên, hai cạnh được loại bỏ vớic1vàc7là điểm cuối Tuyến đườngkết quả là một tuyến đường mới chứa đoạn bắt đầu từc1và kết thúc ởc3theo hình thứcđảo ngược.

Trong trường hợp thứ hai, các cạnh này cóc1,c4vàc6là điểm cuối Do đó, chúng tathu được hai đoạn đường bắt đầu từc1vàc4và kết thúc tạic2vàc7tương ứng Đoạn thứhai được theo dõi trước tiên theo cùng một trật tự Sau đó, đoạn đầu tiên được theo dõitheo trật tự đảo ngược.

Hình 0.8: Ví dụ cho relocate operator.

11

Trang 12

0.6.4 Cross operator

Phép toán này cắt hai tuyến đường khác nhau thành hai phần và tái cấu trúc chúngbằng cách sử dụng các cạnh chéo Một cách chính thức, nó trao đổi các đoạn từ tuyếnđườngr1vàr2bắt đầu từ khách hàngcivàcjtương ứng và kết thúc ở kho, nơir1= r2.

Hình 0.9: Ví dụ cho relocate operator.

0.7 Tham lam kết hợp tìm kiếm cục bộ

• Ý tưởng: Sử dụng Giải thuật 2 hoặc Giải thuật 3 để tạo ra lời giải ban đầu, sau đó

tiến hành tìm kiếm các lời giải láng giếng bằng việc hoán đổi một đoạn hành trìnhcủa nhân viên đang có thời gian dài nhất cho một nhân viên khác bất kì.

• Sơ đồ giải thuật

Algorithm 4: GLS1

Khởi tạo lời giải ban đầuSbằng Giải thuật 2;

while Điều kiện dừng chưa thỏa mãn do

r1← chuyến có thời gian nhiều nhất trong ;Sr2← chuyến bất kì khác r1trong ;Ssub1← đoạn hành trình trên r1;sub2← đoạn hành trình trên r2;

Hoán đổi sub1và sub2tạo thành lời giải mớiS′;

Trang 13

Algorithm 5: GLS2

Khởi tạo lời giải ban đầuSbằng Giải thuật 3;

while Điều kiện dừng chưa thỏa mãn do

r1← chuyến có thời gian nhiều nhất trong ;Sr2← chuyến bất kì khác r1trong ;Ssub1← đoạn hành trình trên r1;sub2← đoạn hành trình trên r2;

Hoán đổi sub1và sub2tạo thành lời giải mớiS′;

Hình 0.11: Lai ghép thứ tự

13

Trang 14

Hình 0.12: Đột biến hoán điểm

Bảng 1: Tham số cho giải thuật di truyền.

14

Ngày đăng: 13/06/2024, 10:49