Một số công trình tiêu biểu

Một phần của tài liệu Song song hoá bài toán JSP trên một số môi trường tính toán song song và phân tán luận văn thạc sĩ (Trang 55 - 62)

6. Phương pháp nghiên cứu

1.3.3.Một số công trình tiêu biểu

“Parallel Simulated Annealing Algorithms” của nhóm tác giả D. Janaki

Ram, T. H. Sreenivas, và K. Ganapathy Subramaniam. [10]

Thuật toán mô phỏng luyện kim được coi là một công cụ tốt để giải quyết các bài toán tối ưu phi tuyến phức tạp. Kỹ thuật được áp dụng rộng rãi trong nhiều vấn đề nhưng nhược điểm lớn nhất của mô phỏng luyện kim chính là sự hội tụ của nó rất chậm.

Trong bài báo, nhóm tác giả giới thiệu hai thuật toán phân tán mô phỏng luyện kim để giải quyết nhược điểm trên. Thuật toán thứ nhất gọi là thuật toán phân nhóm (clustering agorithm – CA). Thuật toán thứ hai gọi là thuật toán phân nhóm di truyền (genetic clustering algorithm – GCA).

- Thuật toán phân nhóm

Trong thuật toán phân nhóm thì một nhóm các bộ xử lý làm việc trên không gian tìm kiếm của thuật toán mô phỏng luyện kim. Các thí nghiệm về thuật toán mô phỏng luyện kim trước đây chỉ ra rằng nếu thuật toán bắt đầu thực hiện với một lịch trình khả thi ban đầu tốt thì sự hội tụ diễn ra mau chóng hơn. Do đó thuật toán phân tán đã dựa vào đặc điểm này để triển khai. Ban đầu, n bộ xử lý trong mạng sẽ thực hiện thuật toán mô phỏng luyện kim với những lịch trình ban đầu khác nhau. Khi đã cố định một số bước lặp, thì các bộ xử lý bắt đầu trao đổi những phần kết quả cho nhau để có được một phần kết quả tốt nhất. Sau đó các bộ xử lý tiếp tục nhận phần kết quả tốt này và thực hiện thuật toán mô phỏng luyện kim dựa trên phần kết quả vừa thu được. Như vậy, việc trao đổi kết quả giữa các bộ xử lý sẽ giúp hội tụ đến một lịch trình tốt.

Mô tả thuật toán: ▪ Đầu vào thuật toán:

n = số bộ xử lý trên mạng

p = tham số trao đổi kết quả từng phần

r = tham số giảm cho số lần lặp trước khi trao đổi kết quả từng phần i = đồ thị vào của lịch trình

Một bộ xử lý sẽ phân chia n lịch trình ngẫu nhiên ban đầu và điều phối đến n bộ xử lý.

Khi nhận được kết quả hội tụ đầu tiền từ bất kỳ bộ xử lý nào đó thì dừng thuật toán mô phòng luyện kim trên tất cả các bộ xử lý

▪ Công việc thực hiện trên các bộ xử lý: Nhận lịch trình ban đầu được phân phối về Lặp:

o Thực hiện mô phỏng luyện kim với tham số trao đổi p. Trao đổi kết quả từng phần giữa các bộ xử lý. Chấp nhận kết quả từng phần tốt nhất.

o P = p-r* (số lần lặp) Cho đến khi (p <= 0)

Thực hiện mô phỏng luyện kim với lịch trình tốt nhất tìm thấy như là lịch trình ban đầu.

Gửi giá trị hội tụ về bộ xử lý điều phối ban đầu.

- Thuật toán phân nhóm di truyền

Trong thuật toán thứ hai, thuật toán phân nhóm di truyền là sự kết hợp của thuật toán mô phỏng luyện kim và thuật toán di truyền, thuật toán di truyền áp dụng để tìm n lịch trình tốt ban đầu, các lịch trình này được xem như điểm khởi đầu để sử dụng thuật toán mô phỏng luyện kim trên n bộ xử lý khác nhau của mạng. Hai thuật toán này đã được áp dụng cho bài lập lịch cửa hàng công việc (JSS) và bài toán người đi giao hàng (TSP). Cả hai thuật toán cho thấy hiệu suất tốt về chi phí thời gian và chất lượng lịch trình.

Mô tả thuật toán:

▪ Bộ xử lý trung tâm tạo ra n lịch trình khả thi ban đầu bằng thuật toán di truyền. Để làm được việc này thì thuật toán di truyền cần trải qua số bước lặp cố định t.

o Chọn quần thể ban đầu với kích thước cố định và đặt i = 1 o While (i <= t)

Tiến hành tạo ra hai thế hệ con từ hai lịch trình cha mẹ được chon ngẫu nhiên và thay thế cha mẹ bằng hai lịch trình tốt nhất trong số 4 lịch trình.

i = i+1 End

o Bộ xử lý trung tâm gửi n lịch trình tốt nhất được chon đến các bộ xử lý con khác trong mạng.

o Mỗi bộ xử lý con nhận được lịch trình được gửi đến sẽ tiến hành thực mô phỏng luyện kim với lịch trình nhận được này o Đến khi nhận được một kết quả từ bộ xử lý con nào đó thì bộ

xử lý trung tâm sẽ dừng thực hiện thuật toán.

“Thuật toán lập lịch trong môi trường phân tán theo tiếp cận agent” của

nhóm các giả Từ Minh Phương, Trịnh Hữu Kiên, Nguyễn Nam Phong. [4]

Công trình nghiên cứu của nhóm tác giả thực hiện dựa trên cơ sở phân công công việc cho nhân viên theo một số ràng buộc cụ thể. Cụ thể cần phải sắp xếp để công việc được thực hiện trong những khoảng thời gian nhất định gọi là ca (ví dụ với cơ sở đạo tạo thì thời gian đó gọi là tiết học). Nhân viên được phân việc vào những ca cụ thể cho từng tuần hoặc từng tháng.

Nói chung với yêu cầu đặt ra thì nhóm tác giả đã thực hiện công việc tập trung. Cách thứ nhất các nhân viên thông báo khả năng, nguyện vọng về công việc và thời gian cho một điều phối viên. Người này sau khi có thông tin tất cả sẽ lập lịch bằng tay với sự trợ giúp của máy tính. Cách thứ hai, là lập lịch phân tán, được thực hiện như sau: mỗi nhân viên có một agent, agent được thông báo các thông tin về chủ của mình và kế hoạch công việc của tổ chức, các agent sau đó sẽ phối hợp với nhau tính toán lịch sao cho tạo ra một lịch tổng thể tối ưu theo một hàm mục tiêu nào đó. (adsbygoogle = window.adsbygoogle || []).push({});

Đây là dạng bài toán lập lịch thỏa mãn ràng buộc phân tán, mặc dù thuật toán đưa ra xử lý trông giống như thuật toán song song cho bài toán ràng buộc, nhưng lý do và mục đích lại hoàn toàn khác nhau. Trong thuật toán song song, yêu cầu hàng đầu là tốc độ và hiệu quả, mục đích nghiên cứu là phân rã bài toán và lựa chọn kiến

trúc máy tính song song phù hợp. Còn bài toán thỏa mãn ràng buộc phân tán xuất hiện trong trường hợp thông tin hoặc tri thức vốn đã được phân tán.

Bài toán được mô tả như sau: có n nhân viên N1,…, Nn; m ca C1,…,Cm và t công việc V1,…Vt. Lịch công tác được lập dưới dạng mảng hai chiều Xn x m, trong đó mỗi dòng tương ứng với một nhân viên, mỗi cột tương ứng với một ca. Các phần tử xij của mảng có thể nhận các giá trị là số nguyên trong khoảng [0..t]. xij=k, k>0, nếu nhân viên Ni được phân việc Vk trong ca; Cj.xij=0 nếu nhân viên Ni không được phân việc vào ca Cj.

Thuật toán tìm kiếm lịch:

Việc tìm kiếm phương án lịch được thực hiện dựa trên ý tưởng các thuật toán tìm kiếm cục bộ (local search). Tìm kiếm cục bộ sử dụng trong công trình này tương tự như thuật toán tìm kiếm cục bộ đã nêu ở mục 1.2.1.1. Tuy nhiên có điểm khác biệt trong nằm ở chỗ chuyển biến từ lịch trình ban đầu sang các lịch trình lân cận. Cụ thể như sau: thuật toán bắt đầu từ một lịch trình ban đầu s0 (được ta ra ngẫu nhiên) ,sau đó một chuyển động trong không gian lời giải từ một lời giải sang một trong các láng giềng của lời giải này. Việc chọn chuyển động cụ thể cho mỗi trạng thái và điều kiện kết thúc tìm kiếm phụ thuộc vào thuật toán tìm kiếm cụ thể. Tuy nhiên trong mọi trường hợp, việc chọn chuyển động phụ thuộc vào việc tính lại giá trị một hàm đánh giá chất lượng lời giải. Trong công trình này, hàm mục tiêu f0 sẽ được sử dụng để đánh giá chất lượng lời giải.

Hàm mục tiêu: yêu cầu của lập lịch là chọn phương án điền ma trận X sao cho các ràng buộc cứng được thỏa mãn đồng thời giảm tối thiểu số lượng ràng buộc mềm bị vi phạm. Để thuận lợi cho thuật toán tìm kiếm, hàm mục tiêu được chọn bằng tổng số lượng ràng buộc bị vi phạm nhân với trọng số của ràng buộc đó. Các ràng buộc cứng được gán trọng số lớn hơn rất nhiều so với ràng buộc mềm. Trong các thực nghiệm của công trình này thì nhóm tác giả đã chọn trọng số cho các ràng buộc cứng là 20, ràng buộc mềm là 1 Các trọng số này có thể thay đổi trong trường hợp cụ thể khác nhau. Ràng buộc cứng là các ràng buộc bắt buộc phải thỏa mãn như ràng buộc về yêu cầu công việc, khả năng nhân viên, …. Ràng buộc mềm như là các nguyện vọng của nhân viên, thời lượng, khoản cách giữa các ca.

fi = wYPY +wAPA+WDPD+WGPG +WLHPLH (1)

trong đó WY, WA, WD, WG, WLH tương ứng là trọng số của các ràng buộc a, b, c, e và d. PY, PA, PD, PG, PLH tương ứng là số lượng các vi phạm đối với ràng buộc a, b, c, e và d cho tất cả nhân viên. Công thức (1) là công thức tính hàm mục tiêu của riêng từng nhân viên, trong lịch phân tán thì với n nhân viên sẽ có n hàm mục tiêu. Do đó cần tổng hợp lại hàm mục tiêu như sau:

f0 = wyPy + (2)

Với fi là hàm mục tiêu của agent thứ j và được tính theo công thức: fi = wAPAj +wDPDj+WGPGj+WLHPLHj (3)

PAj, PDj, PGj, PLHj là số lượng vi phạm các ràng buộc loại b, c, e, d nếu xét riêng Nj.

Như đã đề cập ở trên thì mỗi nhân viên có các agent riêng, vấn đề đặt ra bây giờ phải làm sao để liên lạc trao đổi thông tin giữa các agent có thể điều phối và tạo ra lịch phân công công việc. Để có thể trao đổi thông tin qua lại giữa các agent thì nhóm tác giả đề xuất hai phương pháp: “phương pháp liên lạc trực tiếp” và “liên lạc sử dụng agent trung gian”.

- Phương pháp liên lạc trực tiếp

Phương pháp liên lạc trực tiếp hoạt động dựa vào một hàm gọi là Đổi_Chỗ. Hàm này có tác dụng di chuyển giữa các trạng thái. Hàm được định nghĩa như sau:

Đổi_Chỗ: xét một ca Ch, hai nhân viên Ni và Nj được phân các việc xih=k1 và xjh=k2

(k1 ≠ k2). Đổi_Chổ <h,i,j> là gán xih=k2 và xjh=k1. Hiệu quả của việc Đổi_Chỗ tương đương với việc hai nhân viên đổi việc cho nhau trong cùng một ca. Và khi tiến hành Đổi_Chỗ thì trạng thái mới tạo ra không được vi phạm ràng buộc.

Mô tả phương pháp liên lạc trực tiếp: trong phương pháp thì mỗi agent nhân viên Uc chỉ cần biết lịch của mình. Các agent liên lạc trực tiếp với nhau bằng cách gửi thông điệp (message passing). Để có thể gửi thông điệp, mỗi agent đều biết tên hoặc địa chỉ các agent còn lại.

Mỗi agent sẽ thực hiện phân công lịch của mình bằng cách chọn một ca h và tìm cách thực hiện Đổi_Chỗ h, c, j (j ≠ c) bằng cách gửi yêu cầu đổi cho tất cả các agent còn lại. Sau khi nhận được yêu cầu từ Uc mỗi agent Uj (j≠c) tự tính lại hàm mục tiêu theo công thức (1) của mình cho yêu cầu đổi và thông báo lại cho agent Uc giá trị này.

Agent Uc sử dụng các fi nhận từ agent khác để tính hàm mục tiêu chung f0 theo công thức (2) cho các phương án đổi. Phương án được chọn là phương án có giá trị nhỏ nhất sau khi đổi (nếu có nhiều phép đổi cho giá trị f0 bé nhất thì chọn bất kỳ trong số đó).

Sau khi lựa chọn được agent để đổi, Uc gửi kết quả đổi cho tất cả các agent. Các agent cập nhật lại lịch theo thông báo từ Uc.

Một agent tiếp theo trong danh sách được chọn làm agent Uc. Quá trình được lặp lại. Quá trình thực hiện sẽ kết thúc khi sau một số bước thực hiện liên tiếp mà giá trị f0 không được cải thiện.

Trong phương pháp liên lạc trưc tiếp thì vai trò các agent là hoàn toàn bình đẳng, việc tính toán hàm mục tiêu được phân phối đều trên các agent và có thể thực hiện song song nếu các gent tồn tại trên các máy khác nhau. Các agent chị trao đổi với nhau phương án lịch và giá trị hàm mục tiêu của mình.

- Phương pháp liên lạc qua agent trung gian

Khác với phương pháp liên lạc trực tiếp, phương pháp này sử dụng thêm agent trung gian M. Nhiệm vụ của agent trung gian M là đánh giá và chọn ra chuyển động tốt nhất cho mỗi bước lặp. Quá trình liên lạc và tìm kiếm được thực hiện như sau:

▪ Mỗi agent nhân viên Ui chứa thông tin của tất cả các ca trực của các nhân viên.

▪ Các agent nhân viên không liên lạc trực tiếp với nhau mà chỉ liên lạc với agent trung giam M.

▪ Tại mỗi thời điểm agent trung gian chọn một ca h bất kỳ và thông báo cho các agent nhân viên.

▪ Agent nhân viên tính lại hàm mục tiêu fi của mình cho trường hợp đổi chỗ với các agent trung gian. Kết quả được gửi cho agent trung gian

như một thông điệp có dạng kq<j,Improvement>, trong đó Improvement là mức độ cải thiện hàm mục tiêu nếu thực hiện đổi chỗ với agent j. Improvement dương nếu hàm mục tiêu được cải thiện và âm trong trường hợp ngược lại.

▪ Agent trung gian tổng hợp kết quả bằng cách cộng giá trị Improvement của từng đôi agent. Đôi nào cho tổng Improvement tốt nhất sẽ được thông báo lại để thực hiện đổi chỗ thật sự. Trong trường hợp nhiều đôi cho kết quả tốt giống nhau, một đôi bất kỳ sẽ được chọn. (adsbygoogle = window.adsbygoogle || []).push({});

▪ Quá trình trên sẽ lặp cho đến khi trải qua một số bước lặp liên tiếp mà hàm mục tiêu không được cải thiện.

Mục đích sử dụng thêm agent trung gian là nhằm giảm số thông điệp cần chuyển giữa các agent. Tuy nhiên vấn đề lớn ở đây là agent này dễ trở thành điểm tác nghẽn.

Nhận xét: Hai phương pháp “Liên lạc trực tiếp” và phương pháp “Liên lạc qua agent trung gian” dựa trên ý tưởng thuật toán tìm kiếm leo đồi cục bộ. Điểm bất lợi của thuật toán này không cho phép chứng minh tính tối ưu của lời giải như các phương pháp vét cạn nhưng là phương pháp thực tế khi cần giải những bài toán có kích thước lớn.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Một phần của tài liệu Song song hoá bài toán JSP trên một số môi trường tính toán song song và phân tán luận văn thạc sĩ (Trang 55 - 62)