1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

Đ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

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 1,49 MB

Nội dung

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.

Thuật toán:

• Sử dụng thuật toán quy lui để duyệt qua lân lượt các phần tử trong mảngYvới điều kiện giá trị các phần tử tăng dần

• Sau khi chọn xong phần tử thứKthì duyệt qua mảngXtheo thứ tự các khách hàng được bảo trì từ các nhân viên

• Sau khi nhân viên điểm 0 tức kho hàng Thì chuyển qua xét nhân viên tiếp theo

1

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 sang một tuyến đường khác Cụ thể, khách hàng từ tuyến đườngi r0sẽ được loại bỏ khỏir0

và 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ào

vị 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ại

vị trípitrong tuyến đườngr0được di chuyển đến vị trípjtrong tuyến đường , trong khir1 khá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.3 K-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ột tuyế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án tấ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 được giớ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 đường kế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 ta thu đượ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õi theo 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úng bằ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 programming

0.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

•pk

iđể 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ếuxk

i,j = 1 thì 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.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 X k=1

N X i=0

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

N X i=0

xi,jk =

N X i=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

N X j=1

xk0,j= yk

N X j=1

xk

• 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 (5)

• 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)

Nếuxk i,j= 1thìpjk≥ pi

k+ 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ân viê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ông hoạ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≥

N X i=0

N X i=0

xki,j× (dj+ ti,j) , ∀k = 1, , K (8)

• Miền giá trị của các biến

xki,j∈ {0 1, },

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

pk

ii∈ {0, ∞} ∀, i= 0, , N; k = 1, , K (11)

0.3.3 Hàm mục tiêu

• Cực tiểu hóamax_work_time

0.4 MIP

0.4.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

•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ếuxk

i,j = 1 thì 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 X k=1

N X i=0

xk

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

N X i=0

xk i,j=

N X i=0

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

7

Trang 8

N X j=1

xk 0,j= yk

N X j=1

• 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 ≤ pk

j

∀ 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ân viê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ông hoạ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≥

N X i=0

N X i=0

xk i,j× (dj+ ti,j) , ∀k = 1, , K (20)

• Miền giá trị của các biến

xki,j∈ {0 1, },

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

pkii∈ {0, ∞} ∀, i= 0, , N; k = 1, , K (23)

0.4.3 Hàm mục tiêu

• Cực tiểu hóamax_work_time

8

Trang 9

0.5 Tham lam

0.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ủa hà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ật

Algorithm 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êm

cvà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ật

Algorithm 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 ;k

k← (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 sang một tuyến đường khác Cụ thể, khách hàng từ tuyến đườngi r0sẽ được loại bỏ khỏir0

và 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

9

Trang 10

đường r0

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

0.6.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ào

vị 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ại

vị trípitrong tuyến đườngr0được di chuyển đến vị trípjtrong tuyến đường , trong khir1 khá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ọ

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

10

Trang 11

0.6.3 K-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ột tuyế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án tấ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 được giớ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 đường kế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 ta thu đượ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õi theo 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úng bằ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ình củ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 ;S

r2← chuyến bất kì khác r1trong ;S

sub1← đ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′;

if Stốt hơn S then

Thay thế S bởiS′;

0.8 Giải thuật di truyền (GA)

0.8.1 Mã hóa lời giải

Mỗi cá thể được biểu diễn bởi một mảng có kích thước(N + K − 1)gồm các số từ1 đếnN+ K − 1, trong đó, các số từ1đếnNchỉ khách hàng, các số còn lại điểm ngăn

12

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 ;S

r2← chuyến bất kì khác r1trong ;S

sub1← đ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′;

if Stốt hơn S then

Thay thế S bởiS′;

cách giữa các tuyến Hình 0.10 minh hoạ cho một cá thể hợp lệ vớiN= 5, K= 2, cá thể tương ứng với lời giải:0− − 2 − 01 và0− − − 4 − 03 5

Hình 0.10: Ví dụ biểu diễn của một các thể

0.8.2 Toán tử di truyền

Trong báo cáo này, hai toán tử di truyền được sử dụng là: lai ghép thứ tự và đột biến đổi vị trí Việc áp dụng hai toán tử này đảm bảo cá thể con sinh ra là một cá thể hợp lệ Hình 0.11 và 0.12 minh họa cho hai toán tử

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

13

Trang 14

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

0.8.3 Tham số

Tham số của giải thuật được trình bày trong Bảng 1

Kích thước quần thể 100

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

14

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

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w