Chiến lược tiến hóa song song
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO NGHIÊN CỨU KHOA HỌC
Đề tài: Chiến Lược Tiến Hóa Song Song
Giảng viên : Đỗ Trung Kiên
Sinh viên: Cao Thị Việt Hòa
Lớp K54B
Cao Thị Việt Hòa- Lớp K54B- Khoa CNTT- Trường ĐHSPHN
1
Chiến lược tiến hóa song song
Phụ lục
CHƯƠNG I: TỔNG QUAN VỀ CHIẾN LƯỢC TIẾN HOÁ………………..3
1. Tổng quan giải thuật di truyền………………………………………3
2. Tổng quan về chiến lược tiến hóa…………………………………...4
2.1 Chiến lược tiến hóa là gì……………………………………4
2.2 Lịch sử phát triển của thuật toán chiến lược tiến hóa………5
2.3 Tính chất của thuật toán chiến lược tiến hóa. ……………...5
2.4 Kỹ thuật chiến lược tiến hóa……………………………….5
2.5 Giải thuật chiến lược tiến hóa………………………………6
3. Ví dụ minh họa……………………………………………...............6
CHƯƠNG II: XÂY DỰNG KHUNG ES………………………………………..7
1. Thiết kế khung ES………………………………………………….7
1.1 Các lớp đòi hỏi (Requires)……………………………………...7
1.2 Các lớp cung cấp (Provided)…………………………………...8
2. Khung thuật toán tuần tự………………………………………….14
3. Khung thuật toán song song……………………………………….16
3.1 Mô hình phần cứng………………………………………….....16
3.2 Mô hình phần mềm…………………………………………….16
3.2.1. Mô hình máy chủ-khách (Master-slave)………………...16
3.2.2. Mô hình đảo (Island model)…………………………….17
3.2.3. Mô hình khuếch tán (Diffusion model)…………………17
CHƯƠNG III: SỬ DỤNG KHUNG CHIẾN LƯỢC TIẾN HÓA ĐỂ GIẢI
QUYẾT BÀI TOÁN SPHERE…………………………………………………17
1. Sử dụng khung ES giải quyết bài toán sphere…………………….17
1.1 Định nghĩa bài toán Sphere……………………………………17
1.2 Khung bài toán Sphere………………………………………...18
2. Kết quả thực nghiệm………………………………………………..20
Cao Thị Việt Hòa- Lớp K54B- Khoa CNTT- Trường ĐHSPHN
2
Chiến lược tiến hóa song song
LỜI NÓI ĐẦU
Ngày nay song song với qúa trình phát triển khoa học công nghệ va kỹ thuật
thì ngành khoa học tính toán đã đóng vai trò quan trọng. Nó đã đạt được nhiều
thành tựu rực rỡ với những bước tiến nhảy vọt. Việc áp dụng các thành tựu này vào
các lĩnh vực đời sống, xã hội của con người ngày càng tăng và có ảnh hưởng tới hầu
hết các công việc trong đời sống hàng ngày, công nghệ thông tin là một trong những
ngành khoa học đó. Trên thế giới cũng như ơ Việt Nam, công nghệ thông tin đã trở
thành một ngành công nghiệp mũi nhọn, nó là một ngành khoa học không thể thiếu
trong việc áp dụng vào các hoạt động xã hội như: Quản lý, Kinh tế, Thông tin…đặt
biệt là để giải quyết các vấn đề mà trước đây tưởng như không thể làm được.
Tối ưu hóa là một trong những bài toán kinh điển trong nhiều lĩnh vực của
cuộc sống từ nhu cầu đơn giản của từng cá nhân đến nhu cầu phức tạp của các tổ
chức kinh tế, chính trị và xã hội. Tuy nhiên các bài toán tố ưu trên thực tế lại hiếm
khi đòi hỏi sự tối ưu tuyệt đối mà chỉ đòi hỏi sự tối ưu đủ tốt theo một tiêu chuẩn
nào đó. Hơn nữa, việc tìm ra sự tối ưa tuyệt đối nhiều lúc không thể thực hiện được
do bài toán đặt ra quá phức tạp. Chẳng hạn trong sản xuất kinh doanh, người ta
thường tìm cách tối thiểu chi phí sản xuất. Và dĩ nhiên, họ chỉ cần một giải pháp mà
theo đó, chi phí giảm đến một mức độ nào đó là đủ chứ không nhất thiết phải thực
sự thấp nhất. Đây chính là một điều kiện rất thuận lợi để áp dụng “chiến lược tiến
hóa”.
Xuất phát từ một số nhược điểm của giải thuật di truyền: Các cá thể trong quần thể
trong thuật toán di truyền chỉ là các chuỗi nhị phân. Do đó, rất khó khăn khi áp dụng
thuật toán di truyền cổ điển cho các bài toán trong không gian nhiều chiều và mỗi
NST có độ dài rất lớn,…Vì thế mà các nhà khoa học đã tìm kiếm các phát triển của
giải thuật di truyền để khắc phục các nhược điểm này. Trong khóa Đề tài nghiên
cứu khoa học này tôi đi sâu vào nghiên cứu “Chiến lược tiến hóa”.
Chiến lược tiến hóa là một phát triển của giải thuật di truyền, là một kỹ thuật tối ưu
hóa dựa trên những ý tưởng của sự thích nghi và tiến hóa.
CHƯƠNG I: TỔNG QUAN VỀ CHIẾN LƯỢC TIẾN HOÁ
Cao Thị Việt Hòa- Lớp K54B- Khoa CNTT- Trường ĐHSPHN
3
Chiến lược tiến hóa song song
1. Tổng quan giải thuật di truyền.
Thuật toán di truyền (Genetic Algorithms) là kỹ thuật giúp giải quyết bài
toán bằng cách mô phỏng theo sự tiến hóa của con người hay của sinh vật nói chung
(dựa trên thuyết tiến hóa muôn loài của Darwin) trong điều kiện luôn thay đổi của
môi trường sống. Thuật toán di truyền là một hướng tiếp cận tính toán gần đúng,
nghĩa là mục tiêu của thuật toán di truyền không nhằm đưa ra lời giải chính xác tối
ưu mà là đưa ra lời giải tương đối tối ưu. Thuật toán di truyền về bản chất là thuật
toán tìm kiếm dựa theo quy luật của quá trình tiến hóa tự nhiên. Giải thuật kết hợp
sự sống sót của cấu trúc khỏe nhất trong số các cấu trúc biểu diễn các nhiễm sắc thể
với một sự trao đổi thông tin được lựa chọn ngẫu nhiên để tạo thành một thuật toán
tìm kiếm. Thuật toán di truyền nằm trong lĩnh vực tính toán tiến hóa, sử dụng các
biểu diễn nhị phân và các sơ đồ để mô hinhg hóa sự chọn lọc, lai ghép và đột biến.
Các phát triển của giải thuật di truyền:
- Các chiến lược tiến hóa (Evolution strategy) viết tắt là ESs.
- Lập trình tiến hóa (Evolutionary Programming) viết tắt là EP.
- Lập trình di truyền (Genetic Programming) viết tắt là GP.
- Các chương trình tiến hóa (Evolution Programs) viết tắt là Eps.
Ưu điểm của giải thuật di truyền:
• Thuật toán di truyền duy trì một tập hợp các lời giải có thể do đó có nhiều
cách để chọn lời giải thích hợp.
• Thuật toán di truyền giúp tìm ra lời giải tối ưu trong điều kiện thời gian và
không cho phép.
• Thuật toán di truyền duyệt xét toàn bộ các lời giải của vấn đề, thay vì chỉ để
ý đến lời giải chính xác và duy nhất như toán học giải thích đã dùng trước
đây.
Nhược điểm của giải thuật di truyền:
• Thuật toán di truyền cổ điển đòi hỏi biểu diễn lời giải dưới dạng xâu nhị
phân. Trong khi đó, lời giải của các bài toán trong thực tế thường có cấu trúc
tự nhiên như mảng, bản ghi, cây.
• Các kết quả mà Thuật toán di truyền mang lại không được chính xác như các
phương pháp tìm kiếm khác.
• Các cá thể trong quần thể trong thuật toán di truyền chỉ là các chuỗi nhị
phân. Do đó, rất khó khăn khi áp dụng thuật toán di truyền cổ điển cho các
bài toán trong không gian nhiều chiều và mỗi NST có độ dài rất lớn.
• Đối với những bài toán có nhiều ràng buộc phức tạp thì các bài toán từ di
truyền truyền thống tỏ ra kém hiệu quả.
Cao Thị Việt Hòa- Lớp K54B- Khoa CNTT- Trường ĐHSPHN
4
Chiến lược tiến hóa song song
• Nếu chọn mô hình không phù hợp, thuật tóan di truyền sẽ hội tụ sớm hơn và
cuộc tìm kiếm lời giải chấm dứt sau một thời gian ngắn. Những cuộc tìm
kiếm ngắn thường không tạo ra kết quả tốt, cũng giống như những gì đã xảy
ra trong thực tế.
Để khắc phục những nhược điểm trên, Ingo Rechenberg(1973) đã đưa ra một kỹ
thuật tối ưu hóa dựa trên những ý tưởng của sự thích nghi và tiến hóa đó là
“Chiến lược tiến hóa”.
2. Tổng quan về chiến lược tiến hóa
Chiến lược tiến hóa là một phát triển của thuật toán di truyền cổ điển còn có
tên gọi là phương pháp tính toán tiến hóa.
2.1 Chiến lược tiến hóa là gì?
Trong khoa học máy tính, chiến lược tiến hóa (ES) là một kỹ thuật tối ưu hóa
dựa trên những ý tưởng của sự thích nghi và tiến hóa.
Chiến lược tiến hóa là một lớp con của việc tìm kiếm trực tiếp rất tự nhiên
(và tối ưu), là những phương thức thuộc vào lớp của những thuật toán tiến hóa
(EAs). Nó sử dụng sự đột biến, sự lai ghép, và sự lựa chọn thích ứng tới một quần
thể của những cá thể chứa những giải pháp được đề xuất theo trình tự để tiến hóa
lặp lại tốt hơn và những giải pháp tốt hơn.
Dữ liệu đặc trưng của từng cá thể là những tham số sẽ được tối ưu hóa trong
một quá trình tiến hóa cơ bản. Những tham số sẽ được sắp xếp trong những vector
của những số thực, những thao tác cho sự lai ghép(tréo hóa) và đột biến được định
nghĩa.
2.2 Lịch sử phát triển của thuật toán chiến lược tiến hóa
- Chiến lược tiến hóa (ES) được phát triển tại trường đại học Kỹ Thuật
Berlin vào những năm 1960 và 1970 bởi Ingo Rechenberg (Rechenberg 1973).
Hans Peter Schwefel (Schwefel 1981), giới thiệu sự lai ghép và những quần thể với
nhiều hơn một cá thể, và cung cấp được sự so sánh của ESs với kỹ thuật tối ưu hóa
truyền thống hơn.
2.3 Tính chất của thuật toán chiến lược tiến hóa
- Chiến lược tiến hóa không dựa vào sự mô phỏng chi tiết của những
phương pháp được tìm thấy với sự tiến hóa tự nhiên. Mà có thể đã được kết luận
bởi việc quan sát những thuật ngữ: tiến hóa và chiến lược.
- Trong sự tiến hóa không có chiến lược.
- Chiến lược tiến hóa đơn thuần tập chung vào dịch những cơ chế cơ bản
của sự tiến hóa sinh học cho những vấn đề kỹ thuật tối ưu.
2.4 Kỹ thuật chiến lược tiến hóa
Có 5 kỹ thuật chính như sau:
Cao Thị Việt Hòa- Lớp K54B- Khoa CNTT- Trường ĐHSPHN
5
Chiến lược tiến hóa song song
- Đưa ra những vector giá trị thực.
- Lai ghép: riêng biệt hay trung bình.
- Đột biến: Đột biến Gaussian.
- Lựa chọn cha mẹ: lựa chọn ngẫu nhiên và duy nhất.
- Lựa chọn cá thể phát sinh (µ,λ) hoặc (µ+λ).
2.5 Giải thuật chiến lược tiến hóa.
Sau đây là giải thuật chiến lược tiến hóa:
procedure ES;{
t =0;
initialize population P(t);
evaluate P(t);
until (done) {
t =t + 1;
parent_selection P(t);
recombine P(t)
mutate P(t);
evaluate P(t);
survive P(t);
} }
3. Ví dụ minh họa:
Chiến lược tiến hóa được áp dụng để giải bài tóan Sphere
Tìm một vector giá trị X để tối giản biểu thức sau đây (Sphere Function):
CHƯƠNG II: XÂY DỰNG KHUNG ES
* Lý do:
Chúng ta phải đi xây dựng khung thuật toán vì:
- Giảm thiểu quá trình code cho những người đi sau.
- Cho những người chưa nắm vững về thuật toán vẫn có thể thử nghiệm bài.
1. Thiết kế khung ES
Khung thuật toán gồm hai phần cơ bản là Provides và Requires.
Lớp Required chỉ định thông tin liên quan đến vấn đề (bài toán). Để cho toàn
bộ khung hoạt động thì các lớp này phải được bổ xung thông tin về bài toán phụ
thuộc .
Lớp Provided thực thi phía bên trong khung bao hàm các thủ tục chung cho
các bài toán giải bằng giải thuật di truyền. Thông thường đối với mỗi giải thuật thì
thường có một số giải pháp, tất cả các mô hình tuần tự được nhóm vào lớp
Cao Thị Việt Hòa- Lớp K54B- Khoa CNTT- Trường ĐHSPHN
6
Chiến lược tiến hóa song song
Solver_Seq. Các mô hình song song được nhóm vào các lớp Solver_Lan và
Solver_Wan.
1.1 Các lớp đòi hỏi (Requires)
Các lớp đòi hỏi được sử dụng để lưu trữ dữ liệu cơ bản của thuật toán. Ta có
thể hình dung các lớp Requre được xây dựng giống như một cái sườn, cái mẫu, và
đối với từng bài toán cụ thể lại phải đắp thêm những thông tin riêng của bài toán đó
cho hoàn chỉnh.
Nhóm các lớp Requires bao gồm các lớp sau:
• Lớp bài toán (Problem)
Diễn tả thông tin bài toán cần giải quyết. Dưới đây là các thủ tục chính trong
lớp bài toán
Trong đó:
- Toán tử chồng cout: Đưa ra các thông số của bài toán pbm theo luồng os.
- Toán tử chồng cin: nhận vào các thông số của bài toán pbm từ luồng is.
• Lớp lời giải (Solution)
Lớp lời giải diễn tả lời giải của bài toán, trong quá trình tiến hoá, chúng ta luôn
duy trì một quần thể các lời giải có thể của bài toán và áp dụng các thao tác của quá
trình tiến hoá lời giải trên quần thể để tìm ra lời giải tối ưu cho bài toán. Dưới đây là
các thủ tục chính trong lớp lời giải:
Trong đó
- operator<< đưa ra các thông số của một lời giải theo os.
- operator>> nhận vào các thông số của một lời giải theo luồng is.
- char *to_String(): Chuyển nhiễm sắc thể biểu diễn lời giải thành một xâu ký
tự
- initialize(): Hàm khởi tạo bộ giá trị ngẫu nhiên cho các phần tử trong lời giải
- fitness (): Hàm tính độ thích nghi làm cơ sở đánh giá lời giải.
• Lớp toán tử người sử dụng (Uer_Operator)
Thừa kế từ lớp Intra_Operator.
• Lớp kiểm tra điều kiện dừng (StopCondition)
Để xác định điều kiện dừng của bài toán, trong từng bài toán thì điều kiện
dừng sẽ khác nhau, thường căn cứ vào một hoặc một vài tham số như số thế hệ, thời
gian chạy, các điều kiện đặc thù của bài toán.
- Lớp provided thi hành bên trong bộ khung của bài toán, nó tạo ra nhiều
các phương án cho bài toán.
1.2 Các lớp cung cấp (Provided)
Bao gồm các thủ tục chung cho các bài toán giải bằng giải thuật ES. Ta có thể
hình dung các lớp loại provide giống như một thư viện, và khi giải các bài toán chỉ
việc gọi nó ra.
Trong file .pro gồm các lớp chính là: Intra_Operator, Crossover, Mutation,
StopCondition, SetUpParams, Statics, Population, Inter_Operator, Migration,
Selection, Selection_Tournament, Selection_Roulette_Wheel, Selection_Rank,
Selection_Best, Selection_Worst, Operator_Pool, Solver, Solver_Seq, Solver_Lan.
Cao Thị Việt Hòa- Lớp K54B- Khoa CNTT- Trường ĐHSPHN
7