Tại mỗi bước lặp của thuật toán ALNS, thao tác hủy sẽ loại bỏ một số lượng các yêu cầu vận tải của khách hàng trên lộ trình hoặc loại bỏ toàn bộ lộ trình. Thao tác hủy do đó được phân thành 2 loại theo vào mức độ yêu cầu loại bỏ: mức khách hàng và mức lộ trình. Đối với mức khách hàng, chỉ tiến hành loại bỏ các yêu cầu vận tải của khách hàng trên lộ trình. Ngược lại đối với mức lộ trình, loại bỏ cả lộ trình nhưng giữ nguyên thứ tự yêu cầu vận tải trong lộ trình đó. Việc lựa chọn mức để áp dụng thao tác hủy được điều chỉnh trong suốt quá trình của thuật toán nhằm giữ cân bằng giữa khai phá không gian tìm kiếm theo chiều sâu và chiều rộng.
● Thao tác hủy ở mức khách hàng: thuật toán sử dụng 2 thao tác hủy: thao tác hủy ngẫu nhiên và thao tác hủy chi phí tồi nhất (worst-cost). Để áp dụng thao tác hủy, trước tiên một trong ba loại hàng hóa sẽ được lựa chọn theo xác suất được quy định:
o Đối với loại hàng hóa e2c, xác suất lựa chọn tỷ lệ với |𝐶𝐷|/𝑛; o Đối với loại hàng hóa c2e, xác suất lựa chọn tỷ lệ với |𝐶𝑃|/𝑛;
o Đối với loại hàng hóa c2c, xác suất lựa chọn tỷ lệ với (|𝐶𝑐2𝑐𝑃 | + |𝐶𝑐2𝑐𝐷 |)/𝑛; (n: là tổng số yêu cầu vận tải của khách hàng)
Tức là hàng hóa nào nhiều hơn thì sẽ được thuật toán ưu tiên dành nhiều thời gian tính toán hơn. Sau khi xác định được loại yêu cầu vận tải của khách hàng cần loại bỏ, thì tiếp tục xác định số lượng yêu cầu vận tải của khách hàng (𝑛𝑟) cần loại bỏ. Số lượng yêu cầu này được lựa chọn trong khoảng [𝑛ℓ, 𝑛𝑢]. Trong đó, 𝑛ℓ và 𝑛𝑢 là thông số đầu vào của thuật toán. Lưu ý, trong trường hợp yêu cầu c2c được lựa chọn, thì khi thực hiện loại bỏ sẽ loại bỏ gồm yêu cầu nhận hàng và yêu cầu chuyển hàng tương ứng. Chi tiết của thao tác hủy ngẫu nhiên và thao tác hủy chi phí tồi nhất:
o Thao tác hủy ngẫu nhiên: các yêu cầu vận tải được lựa chọn và loại bỏ ngẫu
nhiên. Quá trình chọn ngẫu nhiên tạo ra nhiều lời giải khác nhau và đảm bảo sự đa dạng lời giải và tránh vấn đề tối ưu cục bộ;
87
o Thao tác hủy chi phí tồi nhất: đầu tiên, thuật toán sẽ tính giá trị sai lệch của mỗi
yêu cầu vận tải theo loại hàng hóa đã được chọn. Giá trị sai lệch của yêu cầu vận tải i được định nghĩa như sau:
𝐷(𝑧, 𝑖) = 𝑓(𝑧) − 𝑓(𝑧, 𝑖) với
▪ 𝑓(𝑧) là giá trị của lời giải hiện tại z;
▪ 𝑓(𝑧, 𝑖) là giá trị của lời giải z khi đã loại bỏ yêu cầu vận tải i.
Có thể thấy, giá trị sai lệch của một yêu cầu vận tải thể hiện sự ảnh hưởng của yêu cầu vận tải đó đối với lời giải hiện tại. Yêu cầu vận tải có giá trị sai lệch lớn hơn có xác suất được lựa chọn để hủy cao hơn. Sau khi đã tính toán các giá trị sai lệch của các yêu cầu vận tải, 𝑛𝑟 yêu cầu vận tải được lựa chọn xác suất dựa theo giá trị sai lệch để tiến hành loại bỏ.
● Thao tác hủy ở mức lộ trình: tương tự thao tác hủy ở mức khách hàng, sau khi lựa
chọn loại lộ trình để loại bỏ thì sẽ lựa chọn số lượng lộ trình cần loại bỏ (𝑛𝑟). Giá trị 𝑛𝑟 được lựa chọn ngẫu nhiên trong khoảng [𝑛ℓ, 𝑛𝑢]. Trong đó, 𝑛ℓ và 𝑛𝑢 là thông số đầu vào của thuật toán. Đối với thao tác hủy ở mức lộ trình, khi thực hiện loại bỏ một lộ trình ra khỏi hành trình, các lộ trình còn lại vẫn giữ nguyên thứ tự và sẽ được nối lại với nhau để thu được hành trình mới. Lộ trình bị loại bỏ sẽ được lưu giữ lại để chuẩn bị thực hiện cho thao tác sửa chữa ở tiếp theo (chú ý rằng, các yêu cầu vận tải của hành khách trên lộ trình này là không thay đổi). Như vậy, sau khi áp dụng thao tác hủy ở mức lộ trình, ta sẽ thu được 𝑛𝑟 lộ trình bị tách ra riêng. Thuật toán sử dụng 2 loại thao tác hủy cho mức lộ trình, mỗi thao tác có chiến lược riêng để lựa chọn các lộ trình cần loại bỏ. Cụ thể:
o Thao tác hủy giá trị sử dụng tồi nhất (worst-utilization): giá trị sử dụng của một
lộ trình được định nghĩa là tỷ lệ giữa chi phí của lộ trình và tổng số yêu cầu vận tải thuộc lộ trình đó. Có thể thấy rằng, giá trị sử dụng thể hiện chi phí cần bỏ ra để phục vụ một yêu cầu vận tải. Do đó, lộ trình có giá trị sử dụng càng lớn thì có xác suất được lựa chọn để hủy càng cao. Bước đầu tiên của thao tác này sẽ tính toán giá trị sử dụng của tất cả các lộ trình có cùng loại lộ trình đã chọn. Sau đó, lựa chọn 𝑛𝑟 lộ trình theo xác suất dựa vào giá trị sử dụng để loại bỏ;
o Thao tác hủy dựa vào thời gian (time-related): Giá trị khoảng cách Hamming
giữa hai lộ trình r và 𝑟′ được định nghĩa:
88
Với 𝑆𝑇[𝑟] và 𝐸𝑇[𝑟] là các thời điểm bắt đầu phục vụ yêu cầu vận tải đầu tiên và thời điểm bắt đầu phục vụ yêu cầu vận tải cuối cùng thuộc lộ trình 𝑟. 𝑆𝑇[𝑟′] và 𝐸𝑇[𝑟′] cũng có ý nghĩa tương tự với lộ trình 𝑟′. Giá trị khoảng cách Hammning giữa hai lộ trình thể hiện tính chất tương tự về khung thời gian phục vụ giữa chúng. Giá trị này càng nhỏ, thì hai lộ trình càng tương tự nhau về khung thời gian phục vụ. Mục tiêu của thao tác hủy này là loại bỏ các lộ trình có khung thời gian phục vụ tương tự nhau, giúp cho các lộ trình này ở thao tác chỉnh sửa sẽ có nhiều lựa chọn hơn cho việc chèn lại vào các hành trình, nhờ đó hi vọng chất lượng lời giải sẽ được cải thiện. Thao tác hủy bắt đầu bằng cách lựa chọn ngẫu nhiên một lộ trình. Sau đó, thực hiện tính giá trị khoảng cách Hamming của tất cả lộ trình cùng loại đối với lộ trình này. Cuối cùng, lựa chọn 𝑛𝑟 lộ trình theo xác suất dựa vào giá trị khoảng cách Hamming để loại bỏ. Giá trị Hamming càng nhỏ thì xác suất lộ trình đó được lựa chọn để loại bỏ càng cao.