Giải thuật di truyền song song và ứng dụng giải bài toán max- sat
Trang 1BÁO CÁO KHOA HỌC
ĐỀ TÀI:
GIẢI THUẬT DI TRUYỀN SONG SONG VÀ ỨNG DỤNG GIẢI
BÀI TOÁN MAX- SAT
Giảng viên hướng dẫn : Thầy Đỗ Trung Kiên
Sinh viên thực hiện : Nguyễn Thị Lụa – K54C
Đỗ Văn Quang – K55B
Trần Đăng Doanh- K55B
Trang 2MỤC LỤC
LỜI MỞ ĐẦU………2
Chương I : Tổng quan ….……… 3
1 Tổng quan thuật toán di truyền ………4
1.1 Khái niệm……… 4
1.2 Cấu trúc của thuật toán di truyền ……….7
2 Ví dụ minh họa………12
2.1 Bài toán Max-sat ……….12
2.2 Giải thuật di truyền giải quyêt bài toán Max-sat……… 14
Chương II : Xây dựng thuật toán di truyền ……… 14
1 Khung thiết kế thuật toán di truyền ……… 15
1.1 Lớp provides – lớp cung cấp……… 15
1.2 Lớp Requide – Lớp yêu cầu ……… 16
2 Khung thuật toán tuần tự ……….20
3 Khung thuật toán song song ……….22
3.1 Lựa chọn phần cứng ……….22
3.2 Lựa chọn phần mềm……….22
Chương III : sử dụng khung thuật toán di truyền giải quyết bài toán Maxsat……26
1 cài đặt bài toán Max-sat……… 26
1.1 file cấu hình cfg……….26
1.2 file đầu vào dat ……….26
2 Sử dụng khung thuật toán di truyền giải bài toán Max-sat……… 27
Chương III : Kết quả thực nghiệm ……… 28
1 kết quả tuần tự ……… 28
2.Kết quả song song……….28
Trang 3LỜI MỞ ĐẦU
Với khả năng hiện nay, máy tính đã giúp giải được rất nhiều bài toán khó màtrước đây thường bó tay Mặc dù vậy vẫn có một số lớn các bài toán thú vị màchưa có giải thuật hợp lý để giải chúng Trong đó các bài toán tối ưu là nững bàitoán thường gặp trong thực tiễn
Trong thực tiễn, có nhiều bài toán tối ưu quan trọng đòi hỏi những thuật toán
có chất lượng cao Ví dụ ta có thể dùng phương pháp mô phỏng luyện thép để
giải quyết bài toán tìm đường đi ngắn nhất cho xe cứu hỏa hay bài toán người dulịch… Cũng có nhiều bài toán tối ưu tổ hợp (trong đó có nhiều bài toán được
chúng minh là NP - đủ) có thể giải gần đúng trên máy tính hiện đại bằng kỹ thuật
Monte - Carlo
Nói chung bài toán tối ưu có thể xem như bài toán tìm kiếm giải pháp tốtnhất trong không gian vô cùng lớn các giải pháp Khi không gian tìm kiếm nhỏ,những phương pháp cổ điển như trên cũng đủ thích hợp, nhưng khi không giantìm kiếm lớn phải dùng kỹ thuật trí tuệ nhân tạo đặc biệt Thuật giải di truyền(GA) là một trong những kỹ thuật đó
Trang 4Có một quần thể thỏ, trong đó có một số con nhanh nhẹn và thông minh hơnnhững con khác Những chú thỏ nhanh nhẹn và thông minh có xác suất bị chồncáo ăn thịt nhỏ hơn, do đó cũng tồn tại dể làm những gì tốt nhất có thể : Tạothêm nhiều thỏ tốt Dĩ nhiên, một số thỏ chậm chạp đần độn cũng sống sót vìmay mắn Quần thể những chú thỏ còn sống sót sẽ bắt đầu sinh sản Việc sinh
sản này sẽ tạo ra một hỗn hợp tốt về "nguyên liệu di truyền thỏ" Một số thỏ
chậm chạp có con với những con thỏ nhanh, một số nhanh nhẹn có con với thỏnhanh nhẹn, một số thông minh với thỏ đần độn… Và trên tất cả thiên nhiên lạiném vào một con thỏ "hoang dã" bằng cách làm đột biến nguyên liệu di truyềnthỏ Những chú thỏ con do kết quả này sẽ nhanh hơn và thông minh hơn nhữngcon thỏ trong quần thể gốc vì có nhiều bố mẹ nhanh nhẹn và thông minh hơn đãthoát chết khỏi chồn cáo
Khi tìm kiếm lời giải tối ưu , thuật toán di truyền cũng thực hiện các bước tương ứng với câu chuyện đấu tranh sinh tồn của loài thỏ.
Trang 5Thuật toán di truyền sử dụng các thuật ngữ vay mượn của di truyền học Ta
có thể nói về các cá thể (hay kiểu gen, cấu trúc) trong một quần thể, những cá thể này cũng còn được gọi là chuỗi hay các nhiễm sắc thể.
Mỗi kiểu gen (ta gọi là một nhiễm sắc thể) sẽ biểu diễn một lời giải của bàitoán đang giải (ý tưởng của một nhiễm sắc thể cụ thể được người sử dụng xácđịnh trước), một tiến trình tiến hóa được thực hiện trên một quần thể các nhiễmsắc thể tương ứng với một quá trình tìm kiếm lời giải trong không gian lời giải.Tìm kiếm đó cần cân đối hai mục tiêu: Khai thác những lời giải tốt nhất và khảosát không gian tìm kiếm Leo đồi là một ví dụ về chiến lược cho phép khai thác
và cải thiện lời giải tốt nhất hiện hành nhưng leo đồi lại bỏ qua việc khảo sátkhông gian tìm kiếm Ngược lại, tìm kiếm ngẫu nhiên là một ví dụ điển hình củachiến lược khảo sát không gian tìm kiếm mà không chú ý đến việc khai thác
những vùng đầy hứa hẹn của không gian Thuật toán di truyền (GA) là phương
pháp tìm kiếm (độc lập miền) tạo được sự cân đối đáng kể giữa việc khai thác vàkhảo sát không gian tìm kiếm
Thực ra, GA thuộc lớp các thuật giải xuất sắc, nhưng lại rất khác những thuậtgiải ngẫu nhiên vì chúng kết hợp các phần tử tìm kiếm trực tiếp và ngẫu nhiên.Khác biệt quan trọng giữa tìm kiếm của GA và các phương pháp tìm kiếm khác
là GA duy trì và xử lý một tập các lời giải (ta gọi là một quần thể)
Theo đề xuất của giáo sư John Holland, một vấn đề bài toán đặt ra sẽđược mã hóa thành các chuỗi với chiều dài bit cố định Nói một cách chính xác
là các thông số của bài toán sẽ được chuyển đổi và biểu diễn lại dưới dạng cácchuỗi nhị phân Các thông số này có thể là các biến của một hàm hoặc hệ số của
một biểu thức toán học Người ta gọi các chuỗi bít này là mã genome ứng với
mỗi cá thể, các genome đều có cùng chiều dài Nói ngắn gọn, một lời giải sẽđược biểu diễn bằng một chuỗi bít, cũng như mỗi cá thể đều được quy định bằnggen của cá thể đó vậy Như vậy, đối với thuật giải di truyền, một cá thể chỉ có
Trang 6một gen duy nhất và mọt gen cũng chỉ phục vụ cho một cá thể duy nhât Do đó,gen chính là cá thể và cá thể chính là gen.
Ban đầu, ta sẽ phát sinh một số lượng lớn, giới hạn các cá thể có gen ngẫunhiên - nghĩa là phát sinh một tập hợp các chuỗi bit ngẫu nhiên Tập các cá thể
này được gọi là quần thể ban đầu (initial population) Sau đó, dựa trên một hàm nào đó, ta sẽ xác định được một giá trị có độ thích nghi - Fitness Giá trị này, để
đơn giản cho đơn giản chính là độ "tốt" của lời giải hay đọ cao trong tìm kiếmtheo kiểu leo đồi Vì phát sinh ngẫu nhiên nên độ "tốt" của lời giải hay tính thíchnghi của cá thể trong quần thể ban đầu là không xác định
Để cải thiện tính thích nghi của quần thể người ta tìm cách tạo ra quần thểmới Có hai cách thao tác thực hiện trên thế hệ hiện tại để tạo ra một thế hệ khácvới độ thích nghi tốt hơn
Thao tác đầu tiên là sao chép nguyên mẫu một nhóm các cá thể tốt từ thế hệ trước rồi đưa sang thế hệ sau (selection) Thao tác này đảm bảo độ thích nghi
của thế hệ sau luôn được giữ ở một mức độ hợp lý Các cá thể được chọn thôngthường là các cá thể có độ thích nghi cao nhất
Thao tác thứ hai là tạo ra cá thể mới bằng cách thực hiện các thao tác sinh sản trên một số cá thể được chọn từ thế hệ trước, thông thường cũng là những cá
thể có độ thích cao Có hai loại thao tác sinh sản: một là thao tác lai tạo
(crossover), hai là đột biến (mutalion) Trong thao tác lai tạo, từ gen của hai cá
thể được chọn trong thế hệ trước sẽ được phối hợp với nhau (theo một quy tácnào đó) để tạo thành hai gen mới
Thao tác chọn lọc và lai tạo giúp tạo ra thế hệ sau Tuy nhiên, nhiều khi dothế hệ khởi tạo ban đầu có đặc tính chưa phong phú và chưa phù hợp nên các cáthể không rải đều được không gian của bài toán (tương tự như trường hợp leođồi, các người leo đồi tập trung dồn vào một góc trên vùng đất) Từ đó, khó cóthể tìm ra lời giải tối ưu cho bài toán Thao tác đột biến sẽ giúp giải quyết được
Trang 7vấn đề này Đó là sự biến đổi ngẫu nhiên một hoặc nhiều thành phần gen củamột cá thể ở thế hệ trước tạo ra một cá thể hoàn toàn mới ở thế hệ sau Nhưngthao tác này chỉ được phép sảy ra với tần xuất rất thấp (thường dưới 0.01), vìthao tác này có thể gây xáo trộn và làm mất đi những cá thể chọn lọc và lai tạo
có tính thích nghi cao, dẫn đến thuật toán không còn hiệu quả
Thế hệ mới được tạo ra lại được xử lý như thế hệ trước cho đến khi có một cáthể đạt được giải pháp mong muốn hoặc đạt đến thời gian giới hạn
1.2 Cấu trúc của giải thuật di truyền như sau:
1 t = 0
Trang 83 evaluate structures in P(t)
4 while not end do
Khởi tạo quần thể (initialize): Quần thể đầu tiên được khởi tạo một cách ngẫu
nhiên từ tập hợp những cá thể riêng lẻ Kích cỡ của quần thể đầu tiên phụ thuộcvào yếu tố tự nhiên của bài toán, nhưng nhìn chung thì một bài toán có đến hàngtrăm hay hàng nghìn giải pháp hợp lý Tập hợp những giải pháp hợp lý cho vấn
đề được gọi là không gian tìm kiếm (search space) Trước một bài toán áp dụng
thuật toán di truyền, ta cần phải xác định rõ nhiễm sắc thể và cá thể cho vấn đề,
và thông thường đó sẽ là kết quả cuối cùng Việc phân tích sẽ dựa trên kết quả
cơ bản tốt nhất.
Hàm định nghĩa độ thích nghi (evaluate): Các quá trình tiến hóa diễn ra trong
vòng lặp While, tại thế hệ thứ t, thuật toán di truyền duy trì một tập lời giải P(t) =
{xt
1, xt
2, ,…, xt
n } Mỗi lời giải xt
i được đánh giá "độ thích nghi ", hay độ "tốt" của
lời giải
Phép chọn lọc (select): Phép chọn là quá trình loại bỏ các cá thể xấu trong quần
thể để chỉ dữ lại trong quần thể các cá thể tốt
Phép chọn được mô phỏng:
Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần
Trang 9 Loại bỏ các cá thể cuối dãy để chỉ giữ lại n cá thể tốt nhất Giả sử ở đâyquần thể có kích thước cố định n.
Có nhiều phương pháp chọn lọc Nhiễm sắc thể:
o Chọn lọc Roulette (Roulett Wheel Selection)
o Chọn lọc xếp hạng (Rank Selection)
o Chọn lọc cạnh tranh (Tournament Selection)
Quá trình sinh sản: Có hai loại thao tác sinh sản
Phép lai tạo (Crossover): là quá trình hình thành nhiễm sắc thể mới trên cơ
sở nhiễm sắc thể cha mẹ bằng cách ghép một hay nhiều đoạn gen của hai haynhiều nhiễm sắc thể cha mẹ với nhau
Có những phương pháp lai ghép sau:
o Lai ghép ánh xạ từng phần (PMX Partial Mapped Crossover)
o Lai ghép có trật tự (OX order Crossover)
o Lai ghép dựa trên vị trí (Position Based Crossover)
o Lai ghép dựa trên thứ tự (Order Base Crossover)
o Lai ghép có chu trình (CX cycle Crossover)
o Lai ghép thứ tự tuyến tính (LOX Linear order Crossover)
Phép lai tạo xảy ra với xác suất pc, được mô phỏng như sau:
Chọn ngẫu nhiên một hay nhiều cá thể bất kỳ trong quần thể Giả
sử các nhiễm sắc thể của cha mẹ đều có m gen
Tạo một số ngẫu nhiên trong khoảng từ 1 đến m - 1 (được gọi làđiểm lai) Điểm lai chia các chuỗi cha mẹ có độ dài m thành hainhóm chuỗi con với độ dài m1, m2 hai chuỗi nhiễm sắc thể mới là
m11 + m12 và m21 + m22
Trang 10 Đưa hai cá thể mới vào quần thể để tham gia các quá trình tiếnhóa tiếp theo.
Ví dụ : Hai nhiễm sắc thể cha mẹ :
Phép đột biến (mutalion): Phép đột biến là hiện tượng cá thể con mang một
(hoặc một số) tính trạng có trong mã di truyền của cha mẹ, tức là sự sửa đổi mộthoặc một vài gen của một nhiễm sắc thể chọn bằng cách thay đổi ngẫu nhiên vớixác suất là tỷ lệ đột biến
Không ai có thể đánh giá được phương pháp đột biến nào tốt hơn, do đó cómột vài phương pháp đơn giản, cũng có vài trường hợp khá phức tạp Người tathường chọn một trong những phương pháp sau :
Trang 11o Đột biến đảo ngược (Inversion Mutation).
o Đột biến chèn (Insertion Mutation)
o Đột biến thay thế (Displacement Mutation)
o Đột biến tương hỗ (Reciprocal Exchange)
o Đột biến chuyển dịch (Shift Mutation)
Phép đột biến xảy ra với xác suất pm nhỏ hơn rất nhiều so với xác suất lai pc.
Phép đột biến có thể được mô phỏng:
Chọn ngẫu nhiên một cá thể bất kỳ cha mẹ trong quần thể
Tạo một số ngẫu nhiên k trong khoảng từ 1 đến m với 1≤ k ≤ m
Thay đổi gen thứ k và trả cá thể này về quần thể để tham gia vào quátrình tiến hóa tiếp theo
NST1
NST1
Một thuật giải di truyền, giải một bài toán được cho phải có năm thành phần:
Một cấu trúc dữ liệu biểu diễn không gian lời giải của bài toán
Phương pháp khởi tạo quần thể ban đầu P(0)
Hàm định nghĩa độ thích nghi evaluate đóng vai trò môi trường
Các phép toán di truyền như đã mô phỏng trên
Trang 12 Và các tham số thuật toán di truyền sử dụng (kích thước, quần thể, xácsuất lai, đột biến…)
Điều kiện kết thúc
Thoát ra quá trình tiến hóa quần thể, dựa vào bài toán mà có các cách kết thúcvấn đề khác nhau, một khi đã đạt đến mức yêu cầu Một vài trường hợp thôngthường như sau:
Kết thúc theo kết quả: một khi đạt đến mức giá trị yêu cầu thì chấm dứtngay quá trình thực hiện
Kết thúc dựa vào số thế hệ: chọn số thế hệ, quá trình sẽ dừng lại đúngngay số thế hệ đã qui định trước, không cần biết kết quả như thế nào
Tính theo thời gian: Không cần biết đã bao nhiêu thế hệ hay kết quả thếnào, chỉ cần dựa vào số giờ qui định mà kết thúc
Tổ hợp: dung nhiều phương án khác nhau cho vấn đề, chẳng hạn như:chạy theo số thế hệ xong sau đó đánh giá cho chạy theo kết quả, hoặcngược lại
2 Một số ví dụ minh họa.
2.1 Bài toán Max-sat.
Vấn đề bài toán SAT (SATisfiability) là vấn đề có tính ứng dụng rộng rãi cảtrong lý thuyết độ phức tạp, trong Trí tuệ nhân tạo hay những lĩnh vực thực tếkhác… Mà cần đưa ra những giải pháp tốt để giải quyết
Bài toán SAT: Cho tập m mệnh đề C= {C1, C2, C3, …,Cm} bao gồm n giá trịbiến x1 x2, …, xn Bài toán SAT giải quyết vấn đề có tồn tại hay không? Sự phân
bố trên các biến sao cho các mệnh đề thỏa mãn đồng thời Bài toán Max-Sat
(Maximum Satisfiability) là bài toán tìm sự phân bố trên các biến sao cho các
Trang 13mệnh đề thỏa mãn là lớn nhất Vấn đề giải quyết cả hai bài toán SAT và Maxsat
là thuộc bài toán NP- khó
Có rất nhiều giải thuật thuật được đề xuất và đã đạt được những tiến bộ quantrọng Những giải thuật này được chia thành hai lớp: Giải thuật đầy đủ (chínhxác) và giải thuật chưa đầy đủ
Thuật giải đầy đủ:Giải thuật được coi là tốt dựa trên thủ tục DPLP SAT2
là ví dụ khá nổi tiếng về giải thuật đủ Giải thuật Nhánh cận và kết nốidựa vào thủ tụ DPLP là một trong những giải thuật chính xác và mạnhnhất để giải quyết bài toán Max-Sat Giải thuật BnB có thể được vận dụngvới mức độ khó vừa phải, được định nghĩa bởi tỉ số mệnh đề trên số biếncủa bài toán Max-Sat
Giải thuật chưa đầy đủ: Chủ yếu dựa vào tìm kiếm cục bộ và giải thuậttiến hóa Tìm kiếm Tabu, mô phỏng luyện thép, giải thuật di truyền,GRASP, đó là những ví dụ về giải thuật chưa đầy đủ để giải quyết bàitoán Max-Sat Tìm kiếm dựa vào heuristics là phương pháp giải quyết tốt
để tìm kiếm giải pháp tương đối cho những bài toán không biết được vàkhông thỏa mãn lời giải
Nói chung, phương pháp đầy đủ đảm bảo được một lời giải tối ưu, nhưngthời gian thực thi của bài toán thì tỉ lệ thuận với kích thước bài toán Vì vậy chỉ
có những bài toan nhỏ thật sự có thể giải quyết đươc Để giải quyết những bài
toán lớn, chỉ có khả năng giải quyết bằng cách sử dụng tìm kiếm heuristics tìm
kiếm một giải pháp tương đối tối ưu cho các bài toán lớn trong thời gian giớihạn, nhưng khả năng tối ưu thì không được đảm bảo Thực tế thì đó là những sự
cố gắng khác nhau để kết hợp những giải pháp chính xác và tìm kiếm heuristics.Mục đích tìm giải pháp tối ưu cho bài toán Max-Sat tương đối khó khănchúng ta đề xuất giải pháp lai ghép gồm có Thuật giải di truyền là thuật giải chưađầy đủ kết hợp với chiến lược đầy đủ của đơn vị nhân bản
Trang 142.2 Giải thuật di truyền giải quyết bài toán Max-Sat:
o Biểu diễn cá thể: Một cá thể được biểu diễn bới chuỗi X (n vecto) mỗithành phần Xi nhận giá trị 0 (False) hoặc 1 (True)
o Lai ghép: là phép toán mục đích xây dựng một quần thể mới (quần thểcon) từ quần thể ban đầu
o Đột biến: là phép toán dùng phát sinh cá thể mới
CHƯƠNG II : XÂY DỰNG KHUNG THUẬT TOÁN DI TRUYỀN
Để giải quyết các bài toán với độ phức tạp rất lớn hoặc những bài toán cóNP-khó thì một giải pháp là sử dụng các thuật toán chẳng hạn như thuật toán ditruyền Xây dựng khung chương trình (Skeletons) cần thiết cho những ngườimuốn áp dụng các thuật toán nổi tiếng để giải bài toán khó, khi giải quyết nhữngbài toán tương đối giống nhau cùng sử dụng một tư tưởng của của thuật giải, sửdụng các hàm và thư viện giống nhau, việc viết đi viết lại những hàm và thư việnnày khiến mất thời gian và công sức Xây dựng khung chương trình nhằm giảmthiểu quá trình code cho người sau, cho những người sau thử nghiệm bài toán lậptrình song song để hiểu bài toán mà chưa cần hiểu sâu về code và quá trình pháttriển..
1 Thiết kế khung thuật toán di truyền.