Chương 3: THIẾT KẾ CHUỖI CUNG ỨNG BẰNG GIẢI THUẬT DI TRUYỀN
3.2. Thuật giải di truyền giải bài toán thiết kế chuỗi cung ứng
3.2.1 Sự biểu diễn của cá thể
Sự biểu diễn của cá thể là một trong những vấn đề quan trọng ảnh hưởng tới hiệu năng của các thuật toán di truyền. Sự biểu diễn dạng cây là một cách để trình
bày những bài toán về mạng. Về cơ bản, có 3 cách mã hóa cây: (1) mã hóa dựa trên cạnh, (2) mã hóa dựa trên đỉnh và (3) mã hóa dựa trên cạnh và đỉnh [1]
Ứng dụng đầu tiên của GAs cho bài toán vận tải/phân phối đã được tiến hành bởi [13]. Trong cách thiếp cận này, các tác giả đã sử dụng sự biểu diễn dạng ma trận theo cách mã hóa dựa trên cạnh để trình bày quá trình vận tải. Khi |K| and |J| là số nguồn và kho chứa, tương ứng với ma trận |K| * |J| chiều. Mặc dù đây là một sự biểu diễn trực tiếp của quá trình vận tải, nhưng cách biểu diễn này sẽ gây nên sự dư thừa bộ nhớ và cần tới những cơ chế di truyền đặc biệt thì mới có thể đạt được những giải pháp khả thi.
Sự biểu diễn khác của quá trình vận tải được trình bày trong [12]. Cách biểu diễn này theo sự mã hóa dựa trên đỉnh và chỉ cần |K| + |J| – 2 số để thể hiện một quá trình vận tải với các nguồn và các kho. Mặc dù cách tiếp cận này thực sự được phát triển để mã hóa các cây bao trùm, và được ứng dụng thành công cho những bài toán vận chuyển, tuy nhiên nó cần tới một số kỹ thuật sửa chữa để đạt tới các giải pháp khả thi sau những thao tác di truyền cổ điển.
Trong nghiên cứu này, để tránh việc phải tiến hành những kỹ thuật sửa chữa trong quá trình tìm kiếm của thuật toán GA, chúng tôi sử dụng mã hóa dựa trên độ ưu tiên đã được phát triển và trình bày trong [12]. Cách mã hóa này đã ứng dụng thành công đối với bài toán tìm đường đi ngắn nhất và bài toán lập lịch trình dự án.
Ứng dụng đầu tiên của cấu trúc mã hóa này đối với bài toán vận chuyển đơn lẻ đã được tiến hành và sự mở rộng của nó trong việc thiết kế chuỗi cung ứng đa sản phẩm, đa giai đoạn đã được trình bày trong [1]. Như được biết, một gen trong một cá thể được biểu thị đặc điểm bởi hai yếu tố: (i) vị trí của gen nằm trong cấu trúc của cá thể, (ii) giá trị mà gen mang. Trong kiểu mã hóa dựa trên độ ưu tiên, vị trí của gen được sử dụng để thể hiện một điểm nút (nguồn/ kho chứa trong quá trình vận tải) và
giá trị được sử dụng để đại diện cho độ ưu tiên tương ứng của các nút nhằm xây dựng một cây.
Trong một bài toán vận chuyển, một cá thể gồm có những quyền ưu tiên của những nguồn và kho chứa thu được quá trình vận tải chiều dài của cây bằng toàn bộ số nguồn (|K|) và kho chứa (|J|), tức là bằng |K| + |J|. Quá trình vận tải tương ứng với một cá thể đã cho sẽ được sinh ra bởi một dãy tuần tự các cung nối giữa nguồn và kho chứa. Tại mỗi bước, chỉ một cung được thêm vào cây, lựa chọn một nguồn (kho chứa) với quyền ưu tiên cao nhất và nối nó với một kho chứa (nguồn) xem xét cực tiểu chi phí. Hình 4 minh họa một quá trình vận tải với 3 nguồn và 4 kho chứa, ma trận giá và mã hóa dựa trên độ ưu tiên
Hình 4: Ví dụ về quá trình vận tải và sự mã hóa của nó
Thuật toán giải mã của mã hóa dựa trên độ ưu tiên được thể hiện ở thủ tục 1.
Bảng 1 mô tả sự phát triển của thủ tục giải mã để thu được quá trình vận tải trong hình 4.
Thủ tục 1: Giải mã cá thể cho quá trình vận tải Đầu vào:
- K: Tập các nguồn - J: Tập các kho
- bj: nhu cầu của kho j, j J - ak: năng lực của nguồn k, k K
- ckj: giá thành vận chuyển một đơn vị hàng hóa từ nguồn k đến kho j,
k K , j J
- v(k+j): cá thể, k K , j J
Đầu ra: gkj: tổng sản phẩm thực tế vận chuyển từ nguồn k đến kho j
Bước 1: gkj 0 k K , j J
Bước 2:
- l := arg max{v(t), t|K | + |J |} ; - Lựa chọn một node
Bước 3: if l K then k* := l;Lựa chọn một nguồn
j* := arg min {ckj | v(j) 0, j J }; Lựa chọn một kho với chi phí thấp nhất
else j* := l; Lựa chọn một kho
k* := arg min {ckj | v(j) 0, k K }; Lựa chọn một nguồn với chi phí thấp nhất
Bước 4: gk*j* := min {ak*, bj*};
Gán tổng số hàng hóa sẵn sàng. Cập nhật tính hiệu lực cho nguồn k* và kho j*
ak* = ak* - gk*j* bj* = bj* - gk*j*
Bước 5: If ak* = 0 then v(k*) = 0
If bj* = 0 then v(j*) = 0
Bước 6: If v(|K| + j) = 0, j J then tính và trả về tổng chi phí vận chuyển
else quay trở lại bước 1
Bảng 1: Bảng phác họa thủ tục giải mã
Trong bài toán thiết kế chuỗi cung ứng, một cá thể có 3 đoạn, mỗi đoạn được sử dụng để thu được một quá trình vận tải của một giai đoạn trong chuỗi cung ứng, tức là đoạn thứ r của cá thể sẽ tương ứng với giai đoạn thứ r trong chuỗi cung ứng.
Chúng tôi dùng hai phương pháp mã hóa khác nhau để thiết kế chuỗi cung ứng. Mã hóa dựa trên độ ưu tiên được sử dụng ở giai đoạn đầu tiên và giai đoạn thứ 2. Mã hóa nguyên được sử dụng cho trường hợp mỗi khách hàng của sản phẩm được gán chỉ với một trung tâm phân phối ở giai đoạn cuối của bài toán. Chiều dài của đoạn cuối cùng trên cá thể sẽ bằng số khách hàng trong chuỗi cung ứng. Vị trí của một gen trên đoạn đại diện cho một khách hàng và giá trị của nó đại diện cho trung tâm phân phối tương ứng với khách hàng được gán. Tại một thời điểm, giá trị của gen sẽ chỉ ra trung tâm phân phối nào sẽ được mở. Cá thể của chuỗi cung ứng được giải mã theo hướng ngược lại. Đầu tiên, quá trình vận tải giữa nhưng trung tâm phân phối đang mở và khách hàng thu được bằng cách giải mã đoạn cuối cùng của cá thể. Ở bước tiếp theo, đầu tiên phải đưa ra quyết định những nhà máy nào sẽ được mở.
Những nhà máy xem xét độ ưu tiên của nó được mở liên tục cho đến khi đạt đến số lượng nhà máy tối đa được mở hoặc tổng năng lực của nhà máy lớn hơn hoặc bằng tổng yêu cầu. Sau đó, đoạn thứ hai sẽ được giải mã và thu được quá trình vận tải giữa các trung tâm phân phối được mở và những nhà máy được mở. Đồng thời, số lượng sản phẩm được sản xuất trong các nhà máy đang mở và tổng số yêu cầu vật liệu thô của mỗi nhà máy cũng được xác định ở giai đoạn này. Cuối cùng, quá trình vận tải giữa các nhà cung cấp và các nhà máy đang mở sẽ thu được với việc giải mã đoạn đầu tiên của cá thể. Cần đặc biệt chú ý đưa ra quyết định những trung tâm phân phối và nhà máy nào sẽ được mở trong khi giải mã đoạn thứ 3 và thứ 2 của cá thể.
Nếu số trung tâm phân phối hoặc nhà máy đang mở lớn hơn giới hạn trên của nó hoặc năng lực không đủ đáp ứng yêu cầu khách hàng, những đoạn tương ứng được sửa đổi để đạt được quá trình vận tải khả thi cho mỗi giai đoạn trong chuỗi cung
một chuỗi có 3 nhà cung cấp, 3 nhà máy, 4 trung tâm phân phối, 4 khách hàng và giới hạn số nhà máy và trung tâm phân phối được mở tối đa là 3. Cần đặc biệt chú ý đến bài toán vận tải không cân bằng ở mỗi giai đoạn của chuỗi cung ứng (tức là tổng năng lực của các nguồn lớn hơn tổng yêu cầu của các kho chứa ở mỗi giai đoạn). Nó đạt được sự cân bằng bằng cách sử dụng một kho chứa giả ở mỗi đoạn của cá thể.