Mục tiêu đặt ra là cung cấp dịch vụ cho N khách hàng, mỗi khách hàng có nhu cầu mi và khoảng thời gian cho phép phục vụ (ei,li) (gọi là cửa sổ thời gian) với
i=1,...N. Một đội xe tại kho (i = 0) gồm K xe giống nhau, mỗi xe có khả năng chuyên chở lớn nhất là qk với k = 1,…,K. Để đơn giản, đội xe được giả định là đồng nhất, tức là khả năng chuyên chở lớn nhất của các xe là như nhau.
Sau khi khởi tạo một lộ trình, phương pháp sử dụng hai tiêu chuẩn c1 (i,u, j) và c2(i,u,j) (sẽ được trình bày sau) cho mỗi vòng lặp để chèn một khách hàng mới u
vào giữa hai khách hàng liền kề i và j trên lộ trình hiện tại.
Thời gian phục vụ, tức là thời gian lấy hoặc phân phát hàng hóa tại khách hàng thứ i là fi . Thời gian này chỉ bắt đầu tại thời điểm ti trong cửa sổ thời gian liên kết với khách hàng đó. Vì vậy, nếu một xe đến trước thời điểm được phép phục vụ, tức trước thời điểm sớm nhất của cửa sổ, thì xe phải chờ một khoảng thời gian wi với
wi= ei - (ti +fj +tij), giả sử khách hàng j đứng trước khách hàng thứ i trên lộ trình. Thời gian tij là thời gian phải mất khi xe di chuyển từ khách hàng j đến khách hàng i và được giả sử bảng khoảng cách Euclide dij giữa hai khách hàng này. Khoảng cách này cũng được giả sử là đối xứng, tức là dij = dji. Như vậy, thời điểm xe bắt đầu phục vụ tại khách hàng thứ i là ti= max{ei, tj+ fj +tij:).
Giả sử một lộ trình Rp = (i0,i1,i2,...,im)với i0 = im = 0 chỉ kho trung tâm. Ứng với mỗi khách hàng u chưa lập lộ trình, vị trí chèn khả thi tốt nhất cho khách hàng u vào lộ trình Rp, thỏa các ràng buộc về thời gian và khả năng xe, được tính như sau:
Trong đó:
30
Hai hàm c11 và c12 là các hàm dựa trên khoảng cách và thời gian:
Trong đó: ℷ là hằng số và tju là thời điểm mới bắt đầu phục vụ tại khách hàng j
khi có khách hàng u vào lộ trình. Rõ ràng, việc chèn u vào giữa ip-1 và ip có thể làm thay đổi tất cả thời gian bắt đầu phục vụ ở các khách hàng (ip,..., im).
Khi vị trí tốt nhất để chèn mỗi khách hàng chưa có lộ trình đã được xác định, bước kế tiếp được thực hiện nhằm chọn ra khách hàng cho giá trị tối ưu nhất. Một khách hàng u* được chọn khi:
Trong đó: u là khách hàng chưa có lộ trình và khả thi; c2(i,u, j) được tính như sau:
Trong VRPTW, việc chèn một khách hàng mới vào một lộ trình luôn kéo theo phải kiểm tra tính khả thi của ràng buộc cửa sổ thời gian của các khách hàng đứng sau trong lộ trình. Việc kiểm tra tính khả thi này cho mỗi khách hàng phải mất O(N) thời gian. Điều này làm tiêu tốn nhiều thời gian tính toán khi N lớn. Chính vì vậy, Solomon[33] năm 1987 đã đề nghị thủ tục Push Forward. Giả định rằng, các xe xuất phát ở thời điểm sớm nhất có thể. Gọi tnew
ip là thời điểm mới để bắt đầu phục vụ tại khách hàng ip khi có khách hàng u trong lộ trình. Giả sử bất đẳng thức tam giác nắm
(2.13) (2.14) (2.15) (2.16) (2.17) (2.18) (2.19) (2.20)
31
giữ cả khoảng cách và thời gian di chuvển, việc chèn khách hàng u sinh ra một giá trị push forward tại ip như sau:
Hơn nữa, PFi+1 được tính là:
Nếu PFi > 0, các khách hàng ir, với p ≤ r ≤ m , có thể trở nên không khả thi. Do đó, thủ tục chỉ cần kiểm tra tuần tự những khách hàng cho tính khả thi về thời gian cho đến khi tìm thấy một khách hàng nào đó, ví dụ như ir (r < m) có giá trị PFi+1 = 0 hoặc ir không khả thi về thời gian. Tuy nhiên, trong trường hợp xấu nhất, tất cả các khách hàng ir (p ≤r≤m) được kiểm tra.
Solomon[33] đã phát biểu hình thức vấn để này như sau:
Các điều kiện cần và đủ cho khả thi về thời gian khi chèn một khách hàng u vào giữa ip-1 và ip ,1≤ p≤m trên một lộ trình khả thi đang xây dựng ( i0,i1,i2,...,im), i0=im=0 là tu≤ lu và:
Chú ý rằng có thể PFi < 0 nếu khoảng cách không Euclide điều này cho kết quả tất cả khách hàng đều khả thi về thời gian. Và bởi vì im = 0, phát biểu của Solomon luôn đảm bảo rằng xe vận chuyển sẽ về đến kho trong khoảng thời gian lập lịch.Khi không có một khách hàng nào với các thao tác chèn khả thi được tìm thấy, thủ tục chèn bắt đầu một lộ trình mới và tiếp tục cho đến khi tất cả khách hàng đã có lộ trình.
Trong hầu hết các phương pháp xây dựng lộ trình, cách chọn khách hàng đầu tiên được phục vụ là một yếu tố quan trọng ảnh hưởng đến chất lượng lời giải. Nhiều tiêu chuẩn được xây dựng nhằm chọn ra ứng viên thích hợp nhất để khởi tạo mỗi lộ trình . Rõ ràng, các tiêu chuẩn khác nhau luôn cho các kết quả khác nhau.
Phương pháp heuristic chèn của Solomon là phương pháp PFIH (Push-Forward Insertion Heuristic). Thuật toán PFIH được mô tả như sau:
(2.21)
(2.22)
32
• Bước 1: Bắt đầu với một lộ trình rỗng xuất phát từ kho. Đặt r = 1.
• Bước 2: Nếu {tất cả các khách hàng đã được lập lộ trình} thì nhảy đến bước
8. Ngược lại, ứng với mỗi khách hàng j chưa được lập lộ trình: tính chi phí chèn như nút đẩu tiên.
• Bước 3: Chọn ra khách hàng tối ưu từ danh sách trên sao cho chi phí ít nhất
và thỏa các ràng buộc về thời gian và khả năng vận chuyển của xe.
• Bước 4: Thêm j* vào cuối lộ trình hiện tại và cập nhật tải của lộ trình.
• Bước 5: Với mọi khách hàng j chưa được lập lộ trình, ứng với mỗi cạnh
{k,l}trong lộ trình hiện tại: tính chi phí chèn khách hàng j vào giữa k và l.
• Bước 6: Chọn ra khách hàng j* và cạnh {k*, l*} có chi phí ít nhất. Nếu
{việc chèn khách hàng j* giữa k* và 1* là khả thi theo các ràng buộc về thời
gian và tải trọng xe} thì chèn khách hàng vào giữa k* và l*, cập nhật lại tải của lộ trình r hiện tại và nhảy đến bước 5. Ngược lại, nhảy đến bước 7.
• Bước 7: Bắt đầu một lộ trình mới xuất phát từ kho. Đặt r = r + 1. Nhảy
đến bước 2.
• Bước 8: Tất cả các khách hàng đã được lập lộ trình. Kết xuất các kết quả.
Ngừng thuật toán.
PFIH thường cho lời giải khả thi tốt, hợp lý theo khía cạnh số xe sử dụng. Trong trường hợp xấu nhất, số lộ trình được tạo ra bằng với số khách hàng, số xe khởi tạo này sẽ cho hình dung cận trên của số lộ trình trong lời giải.