0
Tải bản đầy đủ (.pdf) (113 trang)

Bài tốn Flexible Job Shop Scheduling

Một phần của tài liệu PHƯƠNG PHÁP LOCAL SEARCH CHO MỘT BÀI TOÁN GIAO HÀNG TRONG THỰC TẾ (Trang 31 -47 )

3.3.1. Phát biu bài tốn

Bài tốn Flexible Job Shop Scheduling là một mở rộng của bài tốn Job Shop Scheduling và cũng là một bài tốn NP-khĩ [58]. Trong bài tốn này, ta cĩ:

- Một tập m máy (machine)

- Một tập n cơng việc (job) J = {J1, J2,…, Jn}, mỗi cơng việc Ji sẽ bao gồm một dãy cĩ thứ tự ni thao tác (operation) , trong đĩ, mỗi thao tác sẽ được thực hiện trên một máy nào đĩ, các thao tác này phải được thực hiện theo đúng thứ tự của dãy.

- là hạn chĩt của cơng việc Ji, nghĩa là tất cả các thao tác của cơng

việc Ji phải kết thúc việc xử lí trước thời điểm

- là thời điểm bắt đầu sớm nhất của cơng việc Ji, nghĩa là thao tác

đầu tiên của cơng việc Ji chỉ được phép thực hiện tại ngay hoặc sau thời điểm

- Mỗi thao tác của cơng việc Ji sẽ cĩ một tập các máy đi kèm, đĩ là tập các máy cĩ thể xử lí được thao tác (lưu ý là các tập cĩ thể giao nhau). Thời gian xử lí của thao tác trên một máy ! được kí hiệu là

"#.

Bài tốn FJSP cĩ hai yêu cầu:

- Yêu cầu thứ nhất - routing task: gán các thao tác của các cơng việc vào các máy thích hợp (gán mỗi thao tác vào một máy ! tương ứng).

- Yêu cầu thứ hai - sequencing task

thích hợp, cần sắp xếp thứ tự xử lí lí (đảm bảo thứ tự thực hiện đ cơng việc )

Hình 3.3 minh họa một ví dụ của b

Hình

Hai yêu cầu trên sẽ được thực hiện dựa t của bài tốn FJSP đều được lấy từ b [51]:

- Cực tiểu hĩa thời gian kết t

trong đĩ là thời gian kết thúc của - Cực tiểu hĩa tổng độ trong đĩ là trọng số thể hiện độ việc Ji: - Cực tiểu hĩa tổng (cĩ tr trong đĩ là trọng số thể hiện độ Ji trễ ( 3.3.2. Biu din li gii b

Xét về thời gian xử lí của các

sequencing task: sau khi đã gán các thao tác

ợp, cần sắp xếp thứ tự xử lí của các thao tác trên từng máy một cách hợp ảm bảo thứ tự thực hiện đã quy định sẵn của các thao tác thu

ọa một ví dụ của bài tốn FJSP, trong đĩ

Hình 3.3. Hình minh họa một bài tốn FJSP

ợc thực hiện dựa tên một hàm mục tiêu cụ thể, các h ợc lấy từ bài tốn JSP, sau đây là các hàm thơng d

ực tiểu hĩa thời gian kết thúc trễ nhất của các cơng việc : ời gian kết thúc của cơng việc Ji

ộ trễ (cĩ trọng số) của các cơng việc : ọng số thể hiện độ ưu tiên của cơng việc i, là đ

ng (cĩ trọng số) số lượng cơng việc bị trễ:

ọng số thể hiện độ ưu tiên của cơng việc i, = 1 n ngược lại = 0

ng Disjunctive Graph

ề thời gian xử lí của các thao tác tại mỗi máy , ta cĩ 2 trư

thao tác vào các máy ừng máy một cách hợp thuộc cùng một

ụ thể, các hàm mục tiêu ài tốn JSP, sau đây là các hàm thơng dụng nhất

,

, là độ trễ của cơng

, = 1 nếu cơng việc

- Trường hợp 1: Các "# trùng nhau với mọi ! , nghĩa là thời gian xử lí của mỗi thao tác trên mỗi máy thuộc tập là như nhau, khi đĩ, giá trị "# khơng phụ thuộc vào chỉ số k nên sẽ được thay bằng kí hiệu "

- Trường hợp 2: Các "# khơng trùng nhau

Trong khuơn khổ luận văn này, bài tốn FJSP được xét tới là bài tốn của trường hợp 1. Khi đĩ, các máy trong tập đều tương đương nhau và ta cĩ thể biểu diễn lời giải của bài tốn bằng loại đồ thị cĩ tên là Disjunctive Graph [51]. ðồ thị này cĩ các đặc điểm sau (các kí hiệu của bài tốn FJSP đã phát biểu bên trên được sử dụng lại trong phần này):

- Là một đồ thị cĩ hướng với tập đỉnh $ , trong đĩ mỗi đỉnh đại diện cho một thao tác của bài tốn FJSP, mỗi đỉnh sẽ gắn liền với giá

trị " – giá trị cho biết thời gian xử lí của thao tác

- ðồ thị cĩ hai tập cạnh:

+ Tập Conjunctive Arcs, hay cịn gọi là tập Job Arcs: là tập cạnh cĩ hướng biểu diễn mối liên hệ giữa các thao tác trong cùng một cơng việc , một Conjunctive Arc nối từ đỉnh đến đỉnh khi và chỉ khi thao tác nằm trước thao tác

# trong dãy các thao tác của cơng việc .

+ Tập Disjunctive Arcs, hay cịn gọi là tập Machine Arcs: là tập cạnh cĩ hướng biểu diễn mối liên hệ giữa các thao tác được xử lí trên cùng một máy, một Disjunctive Arc nối từ đỉnh đến đỉnh " khi và chỉ khi thao tác và thao tác %&

cùng được xử lí trên cùng một máy, và được xử lí trước %&..

Bài tốn FJSP đã cho ta biết mối liên hệ giữa các thao tác thuộc cùng một cơng việc , nghĩa là ta đã biết trước tập cạnh Conjunctive Arcs. Tuy nhiên, tập cạnh Disjunctive Arcs thì ta chưa biết và cần phải đi tìm, bài tốn chỉ cho biết hai đỉnh nào cĩ “khả năng” được nối với nhau bằng một Disjunctive Arc: hai đỉnh và " cĩ thể được nối với nhau bằng một Disjunctive Arc nếu và chỉ nếu ' %&( ). Do vậy, mục tiêu của bài tốn FJSP là đi xác định tập Disjunctive Arcs sao cho lời giải thu được là một lời giải hợp lệ: đĩ là tập Disjunctive Arcs mà khi kết hợp với tập

Trong đồ thị Disjunctive Graph của bài tốn FJSP, tập Conjunctive Arcs sẽ được biểu diễn bởi các cạnh nét liền, cịn tập các Disjunctive Arc ứng cử viên sẽ được biểu diễn bởi các cạnh nét đứt. Như vậy, mỗi cặp đỉnh và " mà cĩ ' %& ( ) sẽ được nối với nhau bởi hai Disjunctive Arc ứng cử viên với chiều ngược nhau (vì cĩ thể được xử lí trước %& hoặc ngược lại).

Hình 3.4minh họa Disjunctive Graph của một bài tốn FJSP và Hình 3.5 minh họa

Disjunctive Graph của một lời giải của bài tốn (các đỉnh U, V1, V2, V3 là các đỉnh ảo

được thêm vào để tính tốn và sẽ được giải thích chi tiết ở phần 3.3.3.

Hình 3.4. Hình minh họa Disjunctive Graph của một bài tốn FJSP

3.3.3. Thut tốn Critical path cho bài tốn FJSP

Thuật tốn Critcal path để tính thời gian kết thúc của các cơng việc :

Trong khuơn khổ luận văn này, hàm mục tiêu mà ta xét tới là: Cực tiểu hĩa tổng độ trễ của các cơng việc :

*!,-+,

trong đĩ + là độ trễ của cơng việc Ji và được tính bằng cơng thức:

+ ./01 2 3

Chất lượng của một lời giải được xác định dựa trên giá trị của hàm mục tiêu, nghĩa là ta cần phải tính được các giá trị + tương ứng của lời giải đang xét. Phương pháp thơng dụng nhất hiện nay để tính được các giá trị + là phương pháp Critical Path [53] dựa trên Disjunctive Graph của lời giải. Trước tiên, ta thêm vào đồ thị hiện tại các đỉnh sau:

- Một đỉnh nguồn (source node) 11 vào đồ thị và nối đỉnh này với mỗi đỉnh đại diện cho thao tác đầu tiên của mỗi cơng việc bằng một Conjunctive Arc. Tiếp đĩ, lọc ra danh sách các cơng việc được xử lí đầu tiên trên mỗi máy và nối đỉnh nguồn với đỉnh đại diện cho thao tác đầu tiên của mỗi cơng việc này bằng một Disjunctive Arc.

- n đỉnh đích (sink node) 4 , 4 ,…, 4 vào đồ thị, đỉnh đại diện cho thao tác cuối cùng của mỗi cơng việc Ji sẽ được nối với đỉnh đích 4 tương ứng bằng một Conjunctive Arc. Tiếp đĩ, lọc ra danh sách các cơng việc mà cĩ thao tác cuối của cơng việc là thao tác kết thúc chuỗi xử lí của một máy bất kì và nối đỉnh đại diện cho thao tác cuối của mỗi cơng việc này với đỉnh đích tương ứng của cơng việc bằng một Disjunctive Arc.

Các đỉnh vừa thêm chỉ là các đỉnh ảo (dummy node) được bổ sung vào đồ thị để hỗ trợ cho việc tính tốn, do đĩ, thời gian xử lí của các thao tác tương ứng với các đỉnh ảo này sẽ được quy ước là 0 ("55 = "4 ="4 …= "4 = 0)

Ví dụ như ở Hình 3.4 và Hình 3.5, đỉnh U là đỉnh nguồn, và các đỉnh V1, V2, V3 là các đỉnh đích

Khơng mất tính tổng quát, ta giả sử 6 1 với mọi ! , -. ðặt là thời điểm sớm nhất mà thao tác tương ứng với đỉnh cĩ thể bắt đầu được xử lí và quy ước

Ta thấy thời điểm kết thúc của cơng việc Ji chính là 4, nghĩa là:

+ 47 ! , -

Thuật tốn Critical Path được đề nghị trong [53] sẽ giúp ta tính được giá trị các giá trị

. Cụ thể từng bước của thuật tốn được trình bày ở Hình 3.6. Các kí hiệu được sử dụng trong Hình 3.6 gồm:

- 8: đỉnh tương ứng với thao tác nằm ngay liền trước thao tác trên cùng một máy (nghĩa là cĩ một Disjunctive Arc nối từ đỉnh 8 đến đỉnh ), với giá trị của thao tác tương ứng được kí hiệu là 9. Lưu ý là với đỉnh nguồn 11 thì 118 khơng tồn tại.

- 8 3 : đỉnh tương ứng với thao tác 8 - thao tác ngay liền trước

trên dãy xử lí của cơng việc Ji (nghĩa là cĩ một Conjunctive Arc nối từ đỉnh

3 đến đỉnh , với giá trị của thao tác tương ứng được kí hiệu là

8. Lưu ý là với đỉnh nguồn 11 thì 118 khơng tồn tại.

- :: đỉnh tương ứng với thao tác nằm ngay liền sau thao tác trên cùng một máy (nghĩa là cĩ một Disjunctive Arc nối từ đỉnh đến đỉnh :), với giá trị của thao tác tương ứng được kí hiệu là ;. Lưu ý là với các đỉnh đích 4 thì 4 : khơng tồn tại 7 ! , -

- : < : đỉnh tương ứng với thao tác : - thao tác ngay liền sau

trên dãy xử lí của cơng việc Ji (nghĩa là cĩ một Conjunctive Arc nối từ đỉnh đến đỉnh < ), với giá trị của thao tác tương ứng được kí hiệu là

Hình 3.6. Thuật tốn Critical Path để tính

Hình 3.7. Hình minh họa của một lời giải cho bài tốn FJSP

Hình 3.7 minh họa các giá trị (các số được đĩng khung hình chữ nhật) tính được từ phương pháp Critical Path.

Xác định các Critical Operation:

Thời gian kết thúc của các cơng việc vừa được tính ở trên cũng chính là độ dài đường đi dài nhất từ đỉnh nguồn tới đỉnh đích của mỗi cơng việc , các đường đi này được gọi là các criticalpath của các cơng việc . Các thao tác nằm trên các criticalpath được gọi là criticaloperation. Các thao tác này cĩ đặc điểm là thời điểm sớm nhất mà thao tác cĩ thể bắt đầu cũng trùng với thời điểm trễ nhất mà thao tác phải bắt đầu, nếu như thao

1. Gán 2. Gán 3. ðặt 4. while ( ) do 5. Lấy bất kì thuộc 6. Gán 7. if ( tồn tại và ) then 8. if tồn tại và ) then 9. endwhile

tác bắt đầu trễ hơn thời điểm này, thời gian kết thúc của cơng việc tương ứng với critical path đĩ sẽ bị tăng lên, nghĩa là cơng việc sẽ phải kết thúc trễ hơn.

Trong khi các thao tác khác thì khơng như vậy, các thao tác này cĩ thể bắt đầu trễ hơn giá trị r tương ứng một khoảng thời gian nhất định mà vẫn khơng ảnh hưởng đến thời điểm kết thúc của các cơng việc .

Như vậy, các critical operation cĩ thể xem là một yếu tố quan trọng để cải thiện chất lượng của một lời giải, nghĩa là để cực tiểu hĩa tổng độ trễ của các cơng việc . ðể xác định được thao tác nào là critical, ta cần xác định được thời điểm bắt đầu trễ nhất cĩ thể của từng thao tác. Gọi là thời điểm trễ nhất mà thao tác cần phải bắt đầu. Ta cĩ [51]: thao tác = là critical khi và chỉ khi >

Ta tính giá trị của các cơng việc bằng một thuật tốn tương tự như thuật tốn tính

, nhưng quét theo chiều ngược lại: từ các đỉnh đích lần ngược về lại đỉnh nguồn. Chi tiết thuật tốn được trình bày ở Hình 3.8.

Hình 3.8. Thuật tốn Critical Path để tính >

Hình 3.9 minh họa các cặp giá trị (các số được đĩng khung hình chữ nhật) và (các số được khoanh hình trịn) của một lời giải của bài tốn FJSP, từ các giá trị

trên, ngoại trừ các đỉnh nguồn và đích, ta thấy lời giải cĩ các Critical Operation sau: (1,1), (2,1), (3,1), (1,2), (2,2), (1,3) 1. Gán 4? 47 ! , - 2. Gán @7 (4 3. ðặt A B; ( @ 4. while (A ( )) do 5. Lấy bất kì thuộc A 6. Gán .CDE; ;F 3 " 7. if ( 8 tồn tại và 9; ( @) then A A G 8 8. if 8 tồn tại và 9; ( @) then A A G 8 9. endwhile

Hình 3.9. Hình minh họa và > của một lời giải của bài tốn FJSP

Chương 4. Thuật giải đề nghị

Thuật giải mà luận văn đề nghị là một metaheurisitc dựa trên local search, thuật giải gồm cĩ bốn bước, mỗi bước sẽ tập trung giải quyết bài tốn theo một hướng khác nhau:

- Bước 1: tạo ra một lời giải của bài tốn VRP nhưng bỏ qua vấn đề xếp lịch vào kho của các xe, nghĩa là ta sẽ giả sử một kho cĩ thể cho bao nhiêu xe cùng vào lấy hàng cùng lúc cũng được. Lời giải thu được từ bước 1 sẽ này cho ta một ước lượng về số xe tối thiểu cần phải dùng cho bài tốn.

- Bước 2: từ lời giải thu được từ bước 1, giữ nguyên thơng tin về các xe và các chuyến đã tạo, ta sẽ tìm cách xếp lịch vào kho cho các xe sao cho ràng buộc xe phải về trạm xuất phát trước 15h vẫn được đảm bảo.

- Bước 3: Nếu lời giải thu được từ bước 2 vẫn cịn vi phạm ràng buộc xe phải về trạm trước 15h thì tại bước 3 này, ta sẽ tìm cách chỉnh sửa thơng tin của các chuyến của các xe để giải quyết vi phạm.

- Bước 4: Nếu lời giải thu được từ bước 3 vẫn cịn vi phạm ràng buộc xe phải về trạm trước 15h, ta sẽ tìm trong danh sách các xe chưa được chọn một xe thích hợp để thêm vào lời giải hiện tại, sau đĩ, quay trở lại các bước trước để tìm cách giải quyết vi phạm ràng buộc. Nếu sau khi quay lại các bước trước mà vẫn cịn tồn tại xe về trễ, một xe mới lại được thêm vào lời giải hiện tại,.. Quá trình

Hình 3.9. Hình minh họa và > của một lời giải của bài tốn FJSP

Chương 4. Thuật giải đề nghị

Thuật giải mà luận văn đề nghị là một metaheurisitc dựa trên local search, thuật giải gồm cĩ bốn bước, mỗi bước sẽ tập trung giải quyết bài tốn theo một hướng khác nhau:

- Bước 1: tạo ra một lời giải của bài tốn VRP nhưng bỏ qua vấn đề xếp lịch vào kho của các xe, nghĩa là ta sẽ giả sử một kho cĩ thể cho bao nhiêu xe cùng vào lấy hàng cùng lúc cũng được. Lời giải thu được từ bước 1 sẽ này cho ta một ước lượng về số xe tối thiểu cần phải dùng cho bài tốn.

- Bước 2: từ lời giải thu được từ bước 1, giữ nguyên thơng tin về các xe và các chuyến đã tạo, ta sẽ tìm cách xếp lịch vào kho cho các xe sao cho ràng buộc xe phải về trạm xuất phát trước 15h vẫn được đảm bảo.

- Bước 3: Nếu lời giải thu được từ bước 2 vẫn cịn vi phạm ràng buộc xe phải về trạm trước 15h thì tại bước 3 này, ta sẽ tìm cách chỉnh sửa thơng tin của các chuyến của các xe để giải quyết vi phạm.

- Bước 4: Nếu lời giải thu được từ bước 3 vẫn cịn vi phạm ràng buộc xe phải về trạm trước 15h, ta sẽ tìm trong danh sách các xe chưa được chọn một xe thích hợp để thêm vào lời giải hiện tại, sau đĩ, quay trở lại các bước trước để tìm cách giải quyết vi phạm ràng buộc. Nếu sau khi quay lại các bước trước mà vẫn

Một phần của tài liệu PHƯƠNG PHÁP LOCAL SEARCH CHO MỘT BÀI TOÁN GIAO HÀNG TRONG THỰC TẾ (Trang 31 -47 )

×