1. Trang chủ
  2. » Công Nghệ Thông Tin

Thuật toán phỏng luyện kim với bài toán lập lịch thi đấu thể tha

61 227 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 575,98 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

MỤ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 2

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 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 3

DANH 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 4

PHẦ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 5

4 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 6

CHƯƠ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 8

Từ 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 9

1.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 10

Hì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 11

Ta 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 Uk1kSS

Trang 12

Tậ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 13

Hì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 14

1.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à T0 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 15

1.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 16

Bướ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 17

BestS 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 18

Until (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 19

1)

,(

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 20

1.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 21

k 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 23

Curfit 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 24

Double 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 25

While (!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 26

CHƯƠ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 28

trong 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 29

B5: 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 30

cá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ợ

Ngày đăng: 16/04/2017, 17:21

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Quách Tuấn Ngọc, Ngôn ngữ lập trình C++, Nhà xuất bản thống kế Tài liệu Tiếng Anh Sách, tạp chí
Tiêu đề: Ngôn ngữ lập trình C++
Nhà XB: Nhà xuất bản thống kế Tài liệu Tiếng Anh
1. D.T. Connelly (1992). General Purpose Simulated Annealing. Journal of Operations Research, 43, 1992 Sách, tạp chí
Tiêu đề: D.T. Connelly (1992). General Purpose Simulated Annealing. "Journal of Operations Research
Tác giả: D.T. Connelly
Năm: 1992
2. K. Easton, G. Nemhauser and M.Trick (2001), The traveling tournament problem description and benchmarks. In Seventh International Confernce on the Principles and Practice of Constraint Programming (CP’99), 580–589, Paphos, Cyprus, 2001.Springer-Verlag, LNCS 2239 Sách, tạp chí
Tiêu đề: Seventh International Confernce on the Principles and Practice of Constraint Programming (CP’99)
Tác giả: K. Easton, G. Nemhauser and M.Trick
Năm: 2001
3. S. Krikpatrick, C. Gelatt and M. Vecchi (1983). Optimization by Simulated Annealing. Science, 220: 671-680, 1983 Sách, tạp chí
Tiêu đề: Science
Tác giả: S. Krikpatrick, C. Gelatt and M. Vecchi
Năm: 1983
4. T. Benoist, F. Laburthe, and B. Rottembourg. LagrangeRelaxation and Constraint Programming Collaborative Schemes for Travelling Tournament Problems. In CP-AI-OR’2001, Wye College (Imperial College), Ashford, Kent UK, April 2001 Sách, tạp chí
Tiêu đề: CP-AI-OR’2001
5. Juan A. D’iaz and Elena Fern andez. A tabu serch heurustic for the generalized assignment problem. European Journal of Operational Research, 132(1): 22-38, July 2001 Sách, tạp chí
Tiêu đề: European Journal of Operational Research
6. F. Glover and M. Laguna. Tabu Search. Kluwer Academic Publishers, 1997 Sách, tạp chí
Tiêu đề: Tabu Search
7. M. Laguna, J.P. Kelly, Gonzalez-Velarde, and F. Glover. Tabu search for the multilevel generalized assignment problems.European Journal of Operational Research, 42:667-687, 1995 Sách, tạp chí
Tiêu đề: European Journal of Operational Research

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w