Mục đích nghiên cứu Mục đích nghiên cứu của đề tài: tìm hiểu thuật toán phỏng luyện kim, cải tiến thuật toán thích hợp để giải quyết bài toán lập lịch thi đấu nhằm tìm ra các kết quả tố
Trang 1MỤC LỤC
PHẦN MỞ ĐẦU 4
1 Lý do chọn đề tài 4
2 Mục đích nghiên cứu 4
3 Nhiệm vụ nghiên cứu 4
4 Những đóng góp của khóa luận 5
4.1 Ý nghĩa khoa học 5
4.2 Ý nghĩa thực tiễn 5
5 Cấu trúc khóa luận 5
CHƯƠNG 1 GIẢI THUẬT PHỎNG LUYỆN KIM 6
1.1 Bài toán NP-Khó 6
1.1.1 Bài toán NP-Khó 6
1.1.2 Bài toán lập lịch 8
1.2 Giải thuật phỏng luyện kim 9
1.2.1 Lịch sử vấn đề 9
1.2.2 Thuật toán 9
1.2.3 Biểu diến toán học các thành phần trong giải thuật 11
1.2.4 Sơ đồ chung của thuật toán phỏng luyện kim 15
1.2.5 Một số trường hợp của giải thuật 18
1.2.6 Khung giải thuật phỏng luyện kim tuần tự 21
CHƯƠNG 2 GIẢI THUẬT PHỎNG LUYỆN KIM SONG SONG 26
2.1 Song song hóa giải thuật phỏng luyện kim 26
2.2 Di chuyển song song cho giải thuật phỏng luyện kim 28
2.2.1 Cơ bản về di chuyển song song 28
2.2.2 Mô hình thực hiện 29
2.3 Khung thuật toán phỏng luyện kim song song 34
Trang 2CHƯƠNG 3 THỬ NGHIỆM GIẢI BÀI TOÁN LẬP LỊCH THI ĐẤU
BẰNG GIẢI THUẬT PHỎNG LUYỆN KIM 36
3.1 Bài toán lập lịch thi đấu 36
3.1.1 Vấn đề lập lịch thi đấu thể thao 36
3.1.2 Giới thiệu bài toán 37
3.2 Giải bài toán lập lịch thi đấu với giải thuật phỏng luyện kim 38
3.2.1 Định nghĩa bài toán 38
3.2.2 Thuật toán phỏng luyện kim cho bài toán lập lịch thi đấu 40
3.3 Cài đặt thuật toán 49
3.3.1 Hàm đọc vào dữ liệu của bài toán 49
3.3.2 Khởi tạo lời giải 50
3.3.3 Sinh lời giải láng giềng 52
3.3.4 Tính số ràng buộc 53
3.3.5 Hàm sức khỏe 55
3.4 Kết quả thực nghiệm 57
PHẦN KẾT LUẬN 59
TÀI LIỆU THAM KHẢO 60
Trang 3DANH MỤC HÌNH VẼ
Hình 1.1: Sơ đồ bước nhảy trong không gian lời giải 10
Hình 1.2: Sơ đồ thuật toán 11
Hình 1.3: Chu trình nhiệt độ T 13
Hình 1.4: Giá trị hàm sức khỏe tăng khi nhiệt độ giảm 13
Hình 2.1: Biểu đồ hoạt động của mô hình đồng bộ toàn cục 30
Hình 2.2: Biểu đồ thực hiện cho mô hình không đồng bộ toàn cục 31
Hình 2.3: Cấu trúc gói di chuyển và lân cận 33
Hình 3.1: Giả mã thuật toán SA cho bài toán lập lịch thi đấu 42
Hình 3.2: Giả mã hàm khởi tạo lời giải 51 Hình 3.3: Bảng kết quả của bài toán lập lịch thi đấu trên môi trường tuần tự 58
Trang 4PHẦN MỞ ĐẦU
1 Lý do chọn đề tài
Trong thực tế, ta gặp không ít những bài toán không có giải thuật để giải hoặc có giải thuật để giải nhưng độ phức tạp tính toán lại quá lớn Khi đó người ta phải áp dụng những phương pháp tính toán phi truyền thống Với những giải thuật này, thường ta chỉ đạt được nghiệm chấp nhận được chứ ít khả năng đạt được nghiệm tối ưu Giải thuật phỏng luyện kim là một trong những giải thuật như thế
Bài toán lập lịch thi đấu thể thao là một bài toán thuộc loại NP-Khó Với các giải thuật thông thường không thể có được lời giải trong phạm vi thời gian thực tế cho phép Có thể có nhiều cách giải phi truyền thống để tìm lời giải chấp nhận được cho bài toán này Trong khuôn khổ của một luận văn thạc sỹ, tôi chọn cách giải bằng giải thuật phỏng luyện kim nhằm minh họa
cho phần lý thuyết Tên đề tài luận văn: “Thuật toán phỏng luyện kim với bài toán lập lịch thi đấu thể thao”
2 Mục đích nghiên cứu
Mục đích nghiên cứu của đề tài: tìm hiểu thuật toán phỏng luyện kim, cải tiến thuật toán thích hợp để giải quyết bài toán lập lịch thi đấu nhằm tìm ra các kết quả tốt nhất cho bài toán Từ đó, sẽ đưa ra được các ứng dụng để giải quyết bài toán lập lịch thi đấu thể thao
3 Nhiệm vụ nghiên cứu
Những nhiệm vụ chính của việc nghiên cứu đề tài này:
- Nghiên cứu tổng quan thuật toán mô phỏng luyện kim
- Tìm hiểu về khung thuật toán phỏng luyện kim
- Trên cơ sở khung thuật toán đã tìm hiểu, viết và cải tiến các hàm
để sử dụng cho bài toán lập lịch thi đấu Tối ưu các cách giải quyết đề đưa ra lời giải tốt nhất
Trang 54 Những đóng góp của khóa luận
Áp dụng được bài toán đã giải quyết vào việc lập lịch thi đấu trong thực
tế để đem lại hiệu quả và doanh thu cho nền kinh tế
5 Cấu trúc khóa luận
Cấu trúc của khóa luận bao gồm 3 phần:
Phần mở đầu: Giới thiệu lý do chọn đề tài, cấu trúc đề tài, nhiệm vụ và
kết quả của đề tài
Phần nội dung: Trình bày nội dung cụ thể của đề tài, bao gồm 3
chương:
CHƯƠNG 1 Giải thuật phỏng luyện kim
Giới thiệu tổng quan về bài toán NP-Khó, thuật toán phỏng luyện kim
CHƯƠNG 2 Giải thuật phỏng luyện kim song song
Tìm hiều giải thuật phỏng luyện kim song song: Song song hóa giải thuật phỏng luyện kim, Di chuyển song song cho giải thuật phỏng luyện kim, Khung thuật toán phỏng luyện kim song song
CHƯƠNG 3 Thử nghiệm giải bài toán lập lịch thi đấu bằng giải thuật phỏng luyện kim
Áp dụng khung thuật toán phỏng luyện kim trong chương 1 để giải quyết bài toán lập lịch thi đấu
Phần kết luận: Đưa ra kết luận và hướng phát triển cho luận văn
Trang 6CHƯƠNG 1 GIẢI THUẬT PHỎNG LUYỆN KIM 1.1 Bài toán NP-Khó
1.1.1 Bài toán NP-Khó
1.1.1.1 Lớp bài toán P
Định nghĩa Ta Chúng ta gọi P là lớp các bài toán có thể giải được
trong thời gian đa thức, NP là lớp các bài toán quyết định mà để xác định câu trả lời “yes” của nó chúng ta có thể đưa ra các bằng chứng ngắn gọn dễ kiểm tra, co-NP là lớp các bài toán quyết định mà để xác định câu trả lời “no” của
nó chúng ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra
Ví dụ: Bài toán cây khung nhỏ nhất giải được nhờ thuật toán Prim với
thời gian 0(n2) thuộc lớp bài toán P
1.1.1.2 Lớp bài toán NP
Định nghĩa Ta gọi NP là lớp các bài toán quyết định mà để xác nhận
câu trả lời ‘yes’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra
Ví dụ: Bài toán kiểm tra tính hợp số: “Có phải n là hợp số không?”, để
xác nhận câu trả lời ‘yes’ cho đầu vào n ta có thể đưa ra một ước số b (1< b < n) của n Để kiểm tra xem b có phải là ước số của n hay không ta có thể thực hiện phép chia n cho b sau thời gian đa thức Trong ví dụ này dễ thấy b là bằng chứng ngắn gọn (b<n) và dễ kiểm tra (có thuật toán thời gian tính đa thức để kiểm tra xem b có là ước số của n)
1.1.1.3 Lớp bài toán NP- khó (NP-Hard)
Một cách ngắn gọn có thể hiểu bài toán NP-khó là bài toán mà không
có thuật toán thời gian tính đa thức để giải nó trừ khi P = NP, mà chỉ có các thuật toán giải trong thời gian hàm mũ Sau đây là định nghĩa chính thức của
bài toán NP-khó
Trang 7Định nghĩa Một bài toán A được gọi là NP- khó (NP-hard) nếu như
sự tồn tại thuật toán đa thức để giải nó kéo theo sự tồn tại thuật toán đa thức
để giải mọi bài toán trong NP
Một số bài toán NP-khó tiêu biểu như:
1 Bài toán bè cực đại (MaxClique): Cho một đồ thị vô hướng G = (V, E) V là tập các đỉnh, E là tập các cạnh tương ứng các đỉnh trong V Cần tìm
bè lớn nhất của G Bè là tập các đỉnh trong đồ thị mà đôi một có cạnh nốivới
nhau (là một đồ thị con đầy đủ trong đồ thị G)
2 Bài toán tập độc lập (Independent set): Cho đồ thị vô hướng G = (V, E) và số nguyên K, hỏi có thể tìm được tập độc lập S với |S| ≥ K Tập độc lập
là tập các đỉnh trong đồ thị mà chúng đôi một không có cạnh nối với nhau
3 Bài toán phủ đỉnh (Vertex cover): Ta gọi một phủ đỉnh của đồ thị vô
hướng G = (V, E) là một tập con các đỉnh của đồ thị S V sao cho mỗi cạnh của đồ thị có ít nhất một đầu mút trong S Bài toán đặt ra là: Cho đồ thị vô hướng G = (V, E) và số nguyên k Hỏi G có phủ đỉnh với kích thước k hay
không?
Một cách không hình thức, có thể nói rằng nếu ta có thể giải được một
cách hiệu quả một bài toán NP-khó cụ thể, thì ta cũng có thể giải hiệu quả bất
kỳ bài toán trong NP bằng cách sử dụng thuật toán giải bài toán NP-khó như
một chương trình con
Từ định nghĩa bài toán NP-khó có thể suy ra rằng mỗi bài toán NP-đầy
đủ đều là NP-khó Tuy nhiên một bài toán NP-khó không nhất thiết phải là NP-đầy đủ
Cũng từ bổ đề nêu trên, ta có thể suy ra rằng để chứng minh một bài
toán A nào đó là NP-khó, ta chỉ cần chỉ ra phép qui dẫn một bài toán đã biết
là NP-khó về nó
Trang 8Từ phần trình bày trên, ta thấy có rất nhiều bài toán ứng dụng quan
trọng thuộc vào lớp NP-khó, và vì thế khó hy vọng xây dựng được thuật toán
đúng hiệu quả để giải chúng Do đó, một trong những hướng phát triển thuật toán giải các bài toán như vậy là xây dựng các thuật toán gần đúng
1.1.2 Bài toán lập lịch
1.1.2.1 Tìm hiểu chung
Lập lịch có thể được định nghĩa là một bài toán tìm kiếm chuỗi tối ưu
để thực hiện một tập các hoạt động chịu tác động của một tập các ràng buộc cần phải được thỏa mãn Người lập lịch thường cố gắng thử đến mức tối đa sự
sử dụng các cá thể, máy móc và tối thiểu thời gian đòi hỏi để hoàn thành toàn
bộ quá trình nhằm sắp xếp lịch Vì thế bài toán lập lịch là một vấn đề rất khó
để giải quyết Hiện nay có nhiều khả năng để phát triển các kỹ thuật hiện tại
để giải quyết bài toán này Những kỹ thuật đó bao gồm: các tiếp cận Trí tuệ nhân tạo như hệ thống tri thức cơ sở (knowledge-based systems), bài toán thoả mãn ràng buộc, hệ chuyên gia, mạng Nơron và các tiếp cận của các Nghiên cứu hoạt động: lập trình tính toán, lập trình động, tìm kiếm nhánh và đường biên, kỹ thuật mô phỏng, tìm kiếm Tabu và phương pháp nút cổ chai
1.1.2.2 Các đặc tính của bài toán lập lịch
Tài nguyên: đó là các nguồn dữ liệu đầu vào của bài toán Các tài nguyên này có thể phục hồi hoặc không
Tác vụ: được đánh giá qua các tiêu chuẩn thực hiện như thời gian thực hiện, chi phí, mức tiêu thụ nguồn tài nguyên
Ràng buộc: đây là những điều kiện cần thỏa mãn để bài toán có thể đưa ra lời giải tốt nhất
Mục tiêu: đánh giá độ tối ưu của lịch trình lời giải của bài toán Khi các mục tiêu được thỏa mãn thì các ràng buộc cũng phải được thỏa mãn
Trang 91.2 Giải thuật phỏng luyện kim
1984 Năm 1982 Cerny đã phát triển việc thực thi một giải thuật mô phỏng dựa trên nhiệt động lực học mà sau này cũng được gọi là SA Tuy nhiên, ông không công bố việc này cho đến năm 1984, hai năm sau Kirl_partich, nên nghiên cứu của ông không được đề cập rộng rãi SA còn được đưa ra bởi C.D.Gelatt và M.P.Vechi năm 1983
SA có nguồn gốc từ cơ học hệ thống, SA thực thi đơn giản và tương tự quá trình luyện kim vật lý trong tự nhiên Trong luyện kim vật lý người ta nung kim loại tới một nhiệt độ rất cao và làm lạnh từ từ để nó kết tinh ở cấu hình năng lượng thấp nhằm tăng kích thước của tinh thể và giảm những khuyết điểm của chúng Nếu việc làm lạnh không diễn ra từ từ thì chất rắn không đạt được trạng thái có cấu hình năng lượng thấp và sẽ đông lạnh đến một trạng thái không ổn định (cấu trúc tối ưu địa phương)
1.2.2 Thuật toán
SA là một thuật toán tìm kiếm xác suất di truyền, là phương pháp tối ưu hóa, được áp dụng để tìm tối ưu hóa toàn cục của hàm chi phí và tránh tối ưu hóa địa phương bằng việc chấp nhận cả 2 di truyền uphill và downhill (chấp nhận một lời giải tồi hơn) với xác suất phụ thuộc vào nhiệt độ T Điều này được thể hiện như sơ đồ 1.1.
Trang 10Hình 1.1: Sơ đồ bước nhảy trong không gian lời giải
SA sử dụng một biến điều khiển toàn cục là biến T Ban đầu T được khởi tạo ở giá trị rất cao và sau đó được giảm dần xuống Trong quá trình tìm kiếm SA thay lời giải hiện thời bằng cách chọn ngẫu nhiên lời giải láng giềng với một xác suất phụ thuộc vào sự chênh lệch giữa giá trị hàm mục tiêu và tham số điều khiển T
Quá trình tối ưu hóa được tiếp tục cho tới khi cực tiểu toàn cục được tìm thấy hoặc tổng số bước chuyển vượt quá một số tối đa các bước chuyển
đã được định trước Sự chuyển tiếp ở một nhiệt độ kết thúc khi đạt tới trạng thái cân bằng nhiệt Sau khi đạt tới trạng thái cân bằng nhiệt thì nhiệt độ được giảm thấp hơn Nếu hệ thống không đông lạnh và cũng không tìm được cực tiểu toàn cục thì vòng lặp vẫn tiếp tục và chỉ số k tăng Hệ thống đông lạnh khi T tiến tới nhiệt độ Tcuối do người dùng đưa ra
Trang 11Ta có sơ đồ thuật toán như hình 1.2
Hình 1.2: Sơ đồ thuật toán
1.2.3 Biểu diến toán học các thành phần trong giải thuật
1.2.3.1 Không gian trạng thái
SA thực thi trong một không gian trạng thái Không gian trạng thái là một tập hợp các trạng thái, mỗi trạng thái đại diện cho một cấu hình Kí hiệu không gian trạng thái là S, số phần tử của không gian trạng thái là |S|
Một quan hệ láng giềng trên S: S S
- Các phần tử của µ được gọi là các di chuyển
- (s, s’) Є µ kết nối qua một di chuyển được gọi là láng giềng
- (s, s’) Є µk kết nối qua một tập k di chuyển Uk1k SS
Trang 12Tập trạng thái kết nối với trạng thái đã cho si Є S được kí hiệu là Ni, số phần tử của Ni gọi là cấp độ của si Ni là tập các láng giềng của si
Có hai trạng thái si và si-1 và xác suất để si là trạng thái hiện thời phụ thuộc vào hàm chi phí của si và hàm chi phí của si-1 và nhiệt độ T
Có ba trạng thái liên tiếp si-1, si, si+1 thì trạng thái si-1 và si+1 không phục thuộc vào nhau
Xác suất mà s’ là trạng thái kế tiếp của s kí hiệu là P(s,s’,T) gọi là xác suất chuyển tiếp
' ) ' , ( ) ), ' ( ), ( ( )
, ' ,
s
s s s
s T s s T
s s
α: hàm xác suất chấp nhận (acceptance probability function)
β: hàm xác suất lựa chọn (selection probability function)
β cho phép chỉ một cặp trạng thái trong μ được lựa chọn
Xác suất lựa chọn không bao giờ bằng 0 cho một cặp trạng thái được kết nối bởi một di chuyển đơn
',(
0)',()
',(
N
S s
s s s
s
s s s
Trang 13Hình 1.3 là sơ đồ chu trình làm lạnh
Hình 1.3: Chu trình nhiệt độ T 1.2.3.3 Hàm chi phí và hàm sức khoẻ
Hàm đánh giá cost là hàm xác định chi phí được dùng để ước lượng một lời giải đã cho Hàm chi phí của lời giải s kí hiệu là cost(s)
Hàm sức khoẻ Fitness được định nghĩa:
% 100
* cost 1
Giá trị hàm sức khoẻ tăng khi nhiệt độ giảm thể hiện trong biểu đồ:
Hình 1.4: Giá trị hàm sức khỏe tăng khi nhiệt độ giảm
To : nhiệt độ khởi đầu
Tn: nhiệt độ kết thúc
Ti: nhiệt độ vòng i khi
i = 1, ,N
N N i
T
T T T
Trang 141.2.3.4 Sự phân bố trạng thái giới hạn
Cho πTk(si) là xác suất mà si là lời giải hiện thời sau k bước của thuật toán ở nhiệt độ T
Vectơ xác suất trạng thái: πTk = (πTk(s1), πTk(s2),…,πTk(si),…) Cho chuỗi Markov, vector xác suất trạng thái hội tụ tới 1 véctơ xác suất giới hạn
T Tk
S Tk
k exp( ( )/ )
) / ) ( exp(
) ( lim
(Phân bố Boltzmann)
Phân bố giới hạn cho T 0
- Cân nhắc 2 lời giải si và sj với f(si) < f(sj) Trong trường hợp này
) / ) ( exp(
) (
)
T i s f j s f T
j s f
T i s f k
j
S Tk
i
S Tk
- Sự khẳng định cuối cùng là giả thiết ( ) ( )0
i s f j s f
- Hội tụ tới ∞ chỉ có thể xảy ra nếu có: lim lim ( ) 0
- Chứng minh rằng: Cho lời giải khả thi s, k∞ và T0 xác suất πTk
(s) hội tụ tới 0, nếu s không phải lời giải tối ưu lim ( ) 0
( lim
0 lim
opt S
s Tk T
Trang 151.2.3.5 Sự hội tụ và điều kiện dừng
()
()
(T ij T j T ji T
Trong đó πi(T) là sự phân bố ổn định của trạng thái si ở nhiệt độ T
Sự phân phối ổn định là một vectơ
π(T) = (π1(T), π2(T), …, π|s|(T)) Thỏa mãn phương trình: πT(T)*P(T) = πT(T)
P(T): ma trận chuyển tiếp
πT: Hoán vị của π
|S| : là số phần tử của không gian trạng thái S
Nếu P là tối giản và không có chu kỳ thì tồn tại một xác suất ổn định duy nhất π Điều kiện đủ cho tính không chu kỳ là tồn tại trạng thái si є S sao cho Pii ≠ 0
Điều kiện dừng
Thuật toán dừng khi đã tìm được một lời giải đủ tốt và T là quá nhỏ mà xác suất tránh được là không đáng kể
Một tiêu chuẩn kết thúc khác là chi phí trung bình thay đổi không đáng
kể ở một vài giá trị liên tiếp nhau của T Và trong mỗi bài toán cụ thể lại có thể có điều kiện dừng khác nhau
1.2.4 Sơ đồ chung của thuật toán phỏng luyện kim
Tất cả các bài toán giải bằng SA đều được thực hiện theo các bước: Bước 1: Khởi tạo một lời giải cho bài toán
Bước 2: Liệt kê các láng giềng có thể có của lời giải hiện thời
Trang 16Bước 3: Tiến hành ước lượng hàm mục tiêu hiện thời và hàm mục tiêu của láng giềng vừa tìm được
Bước 4: Sinh một biến ngẫu nhiên thường là phân bố mũ có các tham
số phụ thuộc vào hiệu quả của các giá trị hàm mục tiêu và tham số T
Bước 5: Nếu biến ngẫu nhiên lớn hơn hoặc nhỏ hơn một ngưỡng cho trước thì chấp nhận láng giềng vừa tìm được làm phương án hiện tại
Bước 6: Giảm nhiệt độ T
Bước 7: Quay trở lại từ đầu
Đã chứng minh được khi T 0 thì tìm được lời giải tối ưu toàn cục Tại những giá trị nhiệt độ cao các bước chuyển được chấp nhận một cách ngẫu nhiên bất luận là chúng là bước chuyển có cải thiện hàm chi phí hay không Khi nhiệt độ được giảm xuống xác suất chấp nhận lời giải có cải thiện tăng lên và xác suất chấp nhận lời giải không có cải thiện giảm xuống
Một vòng lặp quan trọng trong thuật toán SA là vòng lặp Metropolis, vòng lặp này lặp đi lặp lại cho tới khi đạt được trạng thái cân bằng nhiệt
Giả mã của vòng lặp Metropolis :
Algorithm Metropolis (S, T, M) (* Trả lại giá trị giảm của hàm chi phí *) Begin
Repeat
M = M + 1 ; NewS neighbor(S) ; (*sinh ra lời giải mới NewS *) gain Gain(NewS, S); (* chênh lệch hàm chi phí *)
If ((gain > 0) or (random < e gain/K B T )) then {
S NewS; (* Chấp nhận lời giải *)
If (cost(NewS) < cost(BestS)) then
Trang 17BestS NewS;
} Until (M mod MarkovChain_length == 0);
- Hàm neighbor sinh ra lời giải mới NewS của lời giải S
- Hàm Gain: độ chênh lệch hàm chi phí của lời giải S và lời giải mới
NewS tức là gain = chi phí của S – chi phí của NewS
- Random là một số ngẫu nhiêu từ 0 đến 1
- Nếu chi phí NewS thấp hơn chi phí của S thì chấp nhận lời giải NewS
còn nếu chi phí NewS lớn hơn chi phí của S thì vẫn chấp nhận lời giải NewS
nhưng với xác suất là random < e gain/K B T
- Nếu NewS được chấp nhận sẽ so sánh với BestS Nếu cost(BestS)>Cost(NewS) thì BestS được thay thế bới NewS Còn không thì vẫn giữ nguyên lời giải BestS và tiếp tục thực hiện vòng lặp
Giả mã của thuật toán SA
Trang 18Until (T=0) Lời giải tốt nhất được tìm thấy
End
Trong đó
- alpha : tốc độ làm lạnh
- Thuật toán SA ban đầu khởi tạo nhiệt độ T và lời giải S0
- Gọi hàm Metropolis để tìm lời giải tốt nhất BestS Sau khi đã tìm
được lời giải tốt nhất thì cập nhật lại nhiệt độ T theo thông số alpha Thực hiện vòng lặp cho tới khi T = 0 sẽ tìm được lời giải tốt nhất toàn cục của bài toán
1.2.5 Một số trường hợp của giải thuật
1.2.5.1 Phỏng luyện kim nguyên thủy (Original Simulated Annealing)
Được Kirk_Partrick đề xuất năm 1983 Thuật toán này đạt sự tối ưu hóa riêng biệt và không chứng minh hội tụ với chu trình làm lạnh:
T k = α * T k-1 = α kT o với α ϵ [0, 1]
1.2.5.2 Phỏng luyện kim Botlzmann (Botlzmann Simulated Annealing)
German đưa ra điều kiện cần và đủ cho sự hội tụ năm 1984 với chu
trình làm lạnh: Tk =
) ln(
k
s s
x
) ( 0 2
2
1),(
Trang 191)
,(
i k i
e s
x g
0
11
)1ln(
0 ) 1 ln(
0
1
) 1 ln(
0
k k k
C
e k C
Trong đó C0 là hằng số bất kỳ, K0 là một chu trình làm lạnh bất kỳ Chỉ số i là kích thước tập các biến tối ưu hóa
1.2.5.3 Phỏng luyện kim nhanh ( Fast Simulated Annealing)
Là sự tìm kiếm nửa địa phương và gồm có những bước nhảy dài không
thường xuyên Làm lạnh với chu trình Tk =
) 1 (
s
2 2 0
Hàm phân bố Cauchy có xác suất cao hơn cho giá trị x từ x0 so với phân bố Gaussian Vì vậy xác suất các bước nhảy dài không thường xuyên được sinh ra và để cho cực tiểu địa phương thích hợp hơn
0
),(
i
i k k
s x
x
s s
x g
2 0
0 0
k k
n
i
s x
x k
s
Trang 201.2.5.4 Phỏng luyện kim rất nhanh (Very Fast Simulated Re_annealing)
Năm 1989 Ingber đề xuất cho phép chu trình làm lạnh theo hàm số mũ, trong khi Fast Annealing chỉ làm lạnh nghịch đảo và Boltzmann Annealing chỉ làm lạnh theo logarit nghịch đảo
Với chu trình làm lạnh là: Tk = T0*exp(-C*k1/n), C là hằng số tỷ lệ Phân bố:
k
s s
2
1)
0 '
x x x
x x x
1,
k k
n
i
i k
i k i
k
k
k
s s
x
s x
0 '
exp
11
ln2
i i
k s
s x
1
k k
n
k T
C
Trang 21k k
k T
C
1.2.6 Khung giải thuật phỏng luyện kim tuần tự
Khung của thuật toán SA được sử dụng để giải quyết một lớp các bài toán sử dụng thuật toán SA Trong phần này chúng ta sẽ đề cập đến khung chung giải quyết các bài toán trên môi trường tuần tự
Khung SA tuần tự vẫn gồm hai lớp là Required và Provided Tuy nhiên, trong phần Provided chỉ sử dụng đến lớp Solver mà không dùng đến Solver_Lan Khi người sử dụng muốn giải quyết bài toán trên môi trường tuần tự thì tạo ra một đối tượng tương ứng sau đó gọi tới thủ tục run()
Gọi hàm solver.run();
Lời giải tốt nhất = solver.global_best_solution();
Sức khỏe của lời giải tốt nhất = solver.global_best_solution().fitness();
}
Sau đây là chi tiết việc cài đặt thủ tục run() cho khung tuần tự
Void Solver_Seq::run()
Trang 22{
While (current_trial() < params.independent_runs())
Run(params.max_evaluations());
}
Thủ tục run() gọi đến thủ tục run(unsigned long int max_evaluations)
Trong thủ tục khởi tạo các tham số của bài toán sau đó gọi thủ tục DoStep
Void Solver_Seq::run(unsigned long int max_evaluations)
Apply(tentative);//Cập nhật lời giải mới
Tentfit tentative.fitness();//Tính giá trị hàm sức khỏe của lời giải
Trang 23Curfit tentfit //giá trị hàm sức khỏe là tentfit }
K k + 1 ;
If(k>=MarkovChain_length())
{
UpdateT(currentTemperature,current_iteration()/params.Marko vChain_length(); //Cập nhật nhiệt độ T
K = 0; //k trở về 0 để tiếp tục vòng lặp mới với nhiệt độ vừa cập nhật }
If(display_state()) show_state();
}
Hàm quan trọng:
* Hàm DoStep(): Các máy con thực hiện hàm này để tìm ra lời giải tốt
nhất và giá trị sức khỏe tốt nhất với cách thực hiện như khung chung của thuật toán SA Trong hàm này thiết lập máy 0 là máy gửi dữ liệu sau đó kiểm tra xem các máy khác có sẵn sàng nhận dữ liệu hay không Nếu sẵn sàng nhận thì gửi gói lời giải tới các máy nhận Thực hiện hàm cooperation() để lấy giá trị của biến received, nếu received = false thì cập nhật lời giải mới
Sau đó tính giá trị sức khỏe của lời giải này, nếu chấp nhận lời giải mới thì lời giải mới trở thành lời giải hiện tại Sau một số bước lặp nhất định bằng MarkovChain_length thì cập nhật nhiệt độ mới
Trang 24Double tentfit = tentative.fitness();
If(AcceptQ(tentfit, curfit, currentTemperature))
} }
* Hàm run(): thực hiện việc tính toán để đưa ra kết quả
Void Solver_Lan::run(const unsigned long int max_evaluations)
{
StrartUp(); //khởi tạo các biến If(mypid!=0) //các máy con thực hiện {
Trang 25While (!final_phase && (current_iteration()< max_evaluations)
&& !(TerminateQ(problem,*this.params)))
//điều kiện kết thúc chưa thỏa mãn và số bước lặp hiện tại //còn nhỏ hơn số bước lặp cho trong file cấu hính (max_evaluations)
DoStep();
Send_local_state_to(-1); //kết thúc việc gửi dữ liệu }
Else { Check_for_refresh_global_state(); //máy chủ thực hiện hàm này }
_netstream<<barrier; //đợi cho đến khi tất cả các tiến trình đều
ở trong barrier
Reset();
}
Trang 26CHƯƠNG 2 GIẢI THUẬT PHỎNG LUYỆN KIM SONG SONG
Giải thuật phỏng luyện kim nằm trong lớp các bài toán meta-heurtics
và là công cụ tốt để giải quyết các bài toán tối ưu tổ hợp trong nhiều lĩnh vực khác nhau Chúng ta có thể sử dụng thuật toán phỏng luyện kim để giải các bài toán lập lịch, thời khóa biểu, phân bố tần số cho các trạm phát thanh và truyền hình… Vì thế, thuật toán phỏng luyện kim được nghiên cứu khá kỹ và cài đặt bằng thuật toán tuần tự để giải quyết một số bài toán ứng dụng Tuy nhiên do bản chất của thuật toán phỏng luyện kim là: thời gian chạy càng lâu (tức là thực hiện được nhiều vòng lặp) thì kết quả càng tối ưu Khi đó, với các
bộ dữ liệu lớn hơn hoặc kết quả sẽ không được tối ưu như mong muốn hoặc
sẽ mất rất nhiều thời gian Giải pháp tốt nhất là phát triển thuật toán phỏng luyện kim trên môi trường song song bởi vì khi đó công việc sẽ được chia đều cho các máy nên các bài toán được giải trong thời gian chấp nhận được với kết quả tối ưu
Mục đích của chương này: trình bày một số phương pháp tiếp cận để song song hóa thuật toán phỏng luyện kim, cũng như các mô hình làm việc của nó Từ đó, sẽ chọn một cách tiếp cận để xây dựng khung thuật toán phỏng luyện kim trên môi trường song song
2.1 Song song hóa giải thuật phỏng luyện kim
Một loạt các kiến trúc song song đã được đề xuất và phát triển trong
thời gian gần đây, chúng có thể được phân thành: SIMD (single instruction
stream-multiple data stream) – hệ thống thực hiện một xử lý trên nhiều dữ
liệu khác nhau hoặc MIMD (multiple instruction stream-multiple data
stream) – hệ thống thực hiện nhiều xử lý trên nhiều dữ liệu Phương pháp trao
Trang 27đổi thông tin bao gồm: hệ thống bộ nhớ tập trung (siêu máy tính) hoặc hệ thống bộ nhớ phân tán (thực hiện qua chuyển thông báo)
Nghiên cứu mô phỏng luyện kim song song bao gồm 5 nhóm: a chia
để trị, b dự đoán luyện kim song song, c di chuyển song song (PM – Parallel Moves), d song song mô phỏng luyện kim và e thực hiện nhiều xử lý độc lập (MIR – Multiple Independent Run)
Nguyên tắc hoạt động song song mô phỏng luyện kim là: áp dụng nhiều
di chuyển đến nhiều cấu hình cùng một lúc và luôn phải duy trì một cấu hình duy nhất trên toàn cục Trên hệ thống bộ nhớ tập trung, mọi xử lý hoạt động trên một cấu hình riêng lẻ, được lưu trong bộ nhớ chính nên tất cả các hoạt động khi xử lý không có vấn đề về sửa đổi cấu hình Trái lại, trên hệ thống bộ nhớ phân tán, mỗi bộ xử lý thường giữ cho mình bản sao của các cấu hình địa phương Vì vậy, một thuật toán phỏng luyện kim song song trên một hệ thống
bộ nhớ phân tán cần được trang bị một cơ chế áp dụng di chuyển từ xa và duy trì một cấu hình toàn cầu
Điểm giống nhau giữa hai hệ thống bộ nhớ: trên bộ nhớ chính sẽ lưu lại chi phí mới mỗi khi thực hiện một di chuyển song song và được gọi là lược
đồ tích lũy Chi phí mới này được tính bằng chi phí cũ cộng với phần biến Lược đồ tích lũy có thể giúp cho việc giảm thời gian tìm kiếm nhưng có thể làm mất đi hiệu quả hoạt động của quá trình luyện kim Phỏng luyện kim chấp nhận tất cả các di chuyền downhill, còn khi chấp nhận di chuyển uphill sẽ với một xác suất giảm với các kích cỡ của di chuyển
Ứng dụng phương pháp song song không yêu cầu một thuật toán sử dụng được trên cả hai hệ thống Với hệ thống bộ nhớ tập trung có nhiều ưu điểm và thực hiện việc tính toán song song sẽ cho kết quả tốt hơn nhưng không được áp dụng nhiều trong thực tế do siêu máy tính rất đắt và chỉ có
Trang 28trong các viện nghiên cứu Ngược lại, hệ thống bộ nhớ phân tán được sử dụng rộng rãi trong thực tế và trở nên phổ biến
Phần tiếp theo sẽ đi tìm hiểu chi tiết phương pháp tiếp cận di chuyển
song song cho thuật toán SA sử dụng kiến trúc MIMD trên hệ thống bộ nhớ phân tán
2.2 Di chuyển song song cho giải thuật phỏng luyện kim
2.2.1 Cơ bản về di chuyển song song
Di chuyển song song viết tắt là Parallel Moves (PM), là phương pháp tiếp cận song song sử dụng cho thuật toán phỏng luyện kim
Với phương pháp này mỗi bộ xử lý nhận được một cấu hình khởi tạo từ máy chủ Tất cả các bộ xử lý đồng thời làm việc trên các cấu hình đó như tính chi phí, tính giá trị sức khỏe Sau khi kết thúc việc tính toán, các cấu hình sẽ sinh ra các lân cận và gửi kết quả về máy chủ Chu trình di chuyển lại được bắt đầu lại
Có ba mô hình khác nhau của di chuyển song song: đồng bộ toàn cục
(Synchronous Global), không đồng bộ toàn cục (Asynchronous Global), và địa phương (Local)
Trong đó:
* Mô hình đồng bộ toàn cục đòi hỏi các bộ xử lý thực hiện một cách đồng bộ
* Mô hình không đồng bộ toàn cục không yêu cầu các bộ xử lý thực hiện đồng bộ
* Các mô hình địa phương sẽ duy trì các cấu hình riêng biệt trên mỗi bộ xử lý
Giải thuật chung:
B1: Tạo ra một hoặc nhiều di chuyển địa phương
B2: Thay đổi sự di chuyển
B3: Áp dụng các di chuyển từ xa
B4: Nếu kết quả là không khả thi, sửa chữa cấu hình
Trang 29B5: Cập nhật các tham số luyện kim
Cả 3 thuật toán sẽ được thực hiện theo hình thức chung như trong giải thuật, nghĩa là: Đầu tiên, tạo ra một hoặc một bộ di chuyển trên mỗi bộ vi xử
lý, thực hiện việc kiểm tra tính khả thi của các cấu hình và tính toán các chi phí liên quan, các hoạt động đó được tạo ra bởi một bộ xử lý trên cấu hình địa phương và được gọi là hoạt động địa phương Việc di chuyển sẽ được thay đổi trong các phần xác định của bộ xử lý Mỗi bộ xử lý cập nhật các cấu hình của địa phương của nó bằng cách áp dụng các di chuyển nhận từ máy chủ Các kết quả cấu hình sau đó sẽ được sửa chữa nếu cần thiết, và các tham số luyện kim sẽ được cập nhật
Các bước thực hiện cho mô hình đồng bộ toàn cục
B1: Máy chủ và máy thợ thực hiện các hoạt động địa phương
B2: Kiểm tra tính khả thi và chi phí tính toán
B3: Gửi tất cả tính toán đến máy chủ
B4: Máy chủ sẽ ứng dụng các di chuyển từ xa
B5: Truyền cấu hình
Thuật toán bắt đầu bằng cách cố định một số cấu hình địa phương trên mỗi bộ xử lý Các thông tin sẽ được tính toán trên máy thợ, sau đó sẽ được truyền từ máy thợ cho máy chủ Lúc này, máy chủ sẽ cập nhật cấu hình khả thi và các tham số cho thuật toán luyện kim Sau đó, máy chủ sẽ đồng bộ hóa
Trang 30các máy thợ bằng việc gửi các cấu hình đã được cập nhật và các máy thợ lại bắt đầu quá trình tính toán
Quá trình này kết thúc khi tìm được giải pháp tốt nhất cho bài toán
Master
Make Moves Recv Moves Apply Moves Housekeeping Send Conf
Slaves
Hình 2.1: Biểu đồ hoạt động của mô hình đồng bộ toàn cục
Ở đây, các máy thợ sẽ có nhiều thời gian rỗi, đó là khi máy chủ cập nhật thông tin cấu hình Vì vậy, việc triển khai thực hiện phương pháp này không đưa lại được kết quả tốt nhất về thời gian cho các bài toán
2.2.2.2 Mô hình không đồng bộ toàn cục
Mô hình không đồng bộ toàn cục ra đời nhằm khắc phục hạn chế của
mô hình đồng bộ toàn cục, mục đích là giảm thời gian nhàn rỗi của các bộ xử
lý máy thợ Trong mô hình này, cho phép các máy thợ thực hiện di chuyển và lưu giữ thông tin di chuyển trong bộ nhớ địa phương cho tới khi có tín hiệu từ máy chủ Các tín hiệu này sẽ yêu cầu chúng gửi các thông tin di chuyển hoặc nhận được các thông tin cấu hình đã được cập nhật Khi đó, các máy thợ luôn bận rộn còn máy chủ chỉ thực hiện việc gửi nhận cấu hình và gửi các thông điệp cho máy thợ