BỘ GIÁO DỤC ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG
--------o0o--------
iso 9001 : 2000
NGHIÊN CỨU TÍNH TOÁN MỀM VÀ ỨNG DỤNG
ĐỒ ÁN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY
Ngành: Công nghệ thông tin
Sinh viên thực hiện : BÙI THỊ OANH
Giáo viên hướng dẫn : PGS.TS.TRỊNH NHẬT TIẾN
Mã sinh viên : 090112
HẢI PHÒNG 2009
LỜI CẢM ƠN
Em xin chân thành cảm ơn sự giúp đỡ của PGS.TS.Trịnh Nhật Tiến, người đã
trực tiếp hướng dẫn, tận tình chỉ bảo tạo điều kiện cho em hoàn thành khóa luận
đúng thời hạn.
Em xin chân thành cảm ơn tất cả các thầy cô giáo trong khoa Công nghệ thông tin
- Trường ĐHDL Hải Phòng, những người đã nhiệt tình giảng dạy và truyền đạt
những kiến thức cần thiết trong suốt thời gian em học tập tại trường, để em hoàn
thành tốt khóa luận.
Cuối cùng em xin cảm ơn tất cả các bạn đã góp ý, trao đổi hỗ trợ cho em trong
suốt thời gian vừa qua.
Em xin chân thành cảm ơn!
Hải Phòng, tháng 07 năm 2009
Sinh viên
Bùi Thị Oanh
2
MỤC LỤC
LỜI CẢM ƠN...........................................................................................................................2
Danh mục các từ viết tắt..........................................................................................................3
LỜI NÓI ĐẦU..........................................................................................................................4
Tổng số lần xuất hiện của 15 bộ đôi đó là 0,2703 ∼ 0,27.....................................54
Nếu tính cả dấu cách (∪), thì có thêm ba bộ đôi với tần suất xuất hiện
như sau: ..........................................................................................................................54
Danh mục các từ viết tắt
NST Nhiễm sắc thể
GA Genetics Algorithms
DES Data Encryption Standard.
Danh mục các thuật ngữ thông dụng trong giải thuật di truyền
Trong tự nhiên Trong giải thuật di truyền
Gene Đặc tính, ký tự
Chromosome (Nhiễm sắc thể) Chuỗi
Allele (gene tương ứng) Giá trị của đặc tính
Locus (ổ gene) Vị trí chuỗi
Genetype (kiểu hình) Tập thông số, giải pháp luân phiên,
cấu trúc được giải mã
3
LỜI NÓI ĐẦU
Trong thực tế cuộc sống, các bài toán liên quan đến hệ thống nhận thức, tri thức
của con người, đều hàm chứa những đại lượng, thông tin, mà bản chất là không
chính xác, không chắc chắn, không đầy đủ…. cho các hệ thống ra quyết định.
Ví dụ: Sẽ chẳng bao giờ có thông tin, dữ liệu, cũng như các mô hình tính toán
đầy đủ và chính xác cho bài toán dự báo thời tiết.
Trong lĩnh vực khoa học cũng vậy, các hệ thống phức tạp trên thực tế thường
không thể mô tả đầy đủ, và chính xác bởi các phương trình toán học truyền thống.
Kết quả là những cách tiếp cận kinh điển dựa trên kỹ thuật phân tích, và các phương
trình toán học nhanh chóng không còn phù hợp. Vì thế công nghệ tính toán mềm
chính là giải pháp cần thiết trong lĩnh vực này.
Công nghệ tính toán mềm bao gồm 3 thành phần chính:
- Điều khiển mờ (Fuzzy Control)
- Mạng nơ-ron nhân tạo (Neural Network)
- Giải thuật di truyền (Genetic Algorithm)
4
Do thời gian không nhiều và khối lượng công việc tìm hiểu khá lớn nên trong
khuôn khổ đồ án tốt nghiệp này, để tìm hiểu cho sâu, em tập trung nghiên cứu giải
thuật di truyền.
Hiện nay, thuật toán di truyền cùng với logic mờ được ứng dụng rộng rãi trong
các lĩnh vực phức tạp, các vấn đề khó, sử dụng các kỹ thuật tìm kiếm lời giải, với
không gian tìm kiếm rất lớn, nhất là những bài toán cần có sự lượng giá, đánh giá sự
tối ưu của kết quả thu được. Chính vì vậy, thuật giải di truyền đã trở thành đề tài
nghiên cứu thú vị và đem đến nhiều ứng dụng trong thực tiễn.
Xuất phát từ những vấn đề trên, khóa luận đã tìm hiểu, nghiên cứu giải thuật di
truyền. Sau đó sử dụng giải thuật di truyền cổ điển kết hợp với phương pháp thống
kê ngôn ngữ học giải quyết bài toán “Dò tìm mã DES”.
Khóa luận không tránh khỏi những thiếu sót, rất mong được sự giúp đỡ, chỉ bảo
của thầy cô và các bạn!
Chương 1: TÍNH TOÁN MỀM
1.1. KHÁI NIỆM TÍNH TOÁN MỀM
Tính toán mềm (Soft Computing) khác với tính toán cứng truyền thống (Hard
Computing) ở chỗ: không như tính toán cứng, tính toán mềm cho phép sự không
chính xác, tính bất định, gần đúng, xấp xỉ trong tính toán. Các mô hình tính toán
mềm thường dựa vào kinh nghiệm của con người, sử dụng dung sai cho phép của sự
không chính xác, tính bất định, gần đúng, xấp xỉ để tìm lời giải hiệu quả - đơn giản,
dễ hiểu, dễ thực hiện, chi phí thấp.
Tính toán mềm biểu thị một sự chuyển dịch, biến hoá quan trọng trong các hướng
tính toán. Sự chuyển dịch này phản ánh sự kiện trí tuệ con người, không như máy
tính, có khả năng đáng kể trong việc lưu trữ và xử lý thông tin không chính xác và
bất định, và đây mới là những thông tin thực tế và thường gặp.
Các ứng dụng thành công của tính toán mềm cho thấy tính toán mềm ngày càng
phát triển mạnh và đóng vai trò đặc biệt trong các lĩnh vực khác nhau của khoa học
và kỹ thuật. Tính toán mềm được ứng dụng trong hầu hết các chuyên ngành kỹ thuật
5
như kỹ thuật điện, kỹ thuật điều khiển, kỹ thuật hoá học, kỹ thuật xây dựng,... Kỹ
thuật điện là lĩnh vực đầu tiên ứng dụng tính toán mềm trong các lĩnh vực như điều
khiển mờ, xử lý ảnh mờ, mạch điện tử dùng logic, người máy,....
Khái niệm “Tính toán mềm” được Zadeh đưa ra lần đầu tiên vào năm 1994 được
mô tả như sau: “Một cách cơ bản, tính toán mềm không phải là thể thống nhất các
khái niệm và kỹ thuật. Đúng ra, nó là sự kết hợp của các phương pháp riêng biệt theo
cách này hay cách khác để thích nghi với nguyên lý của nó. Tại điểm giao đó, mục
đích cuối cùng của tính toán mềm là khai thác khả năng thứ lỗi (Tolerance) cho tính
không chính xác hay tính bất định để đạt được mục tiêu với chi phí thấp”. Một cách
đơn giản hơn, “Tất cả các tính toán có bao gồm tính không chính xác một cách có
chủ đích trong tính toán ở một hay nhiều mức và cho phép tính không chính xác này
làm thay đổi (làm giảm) độ chính xác của bài toán, hay “làm mềm” mục tiêu tối ưu ở
một số bước, đều bị coi là thuộc lĩnh vực tính toán mềm”.
1.2. PHÂN BIỆT TÍNH TOÁN MỀM VÀ TÍNH TOÁN CỨNG
Tính toán truyền thống, hay còn gọi là tính toán cứng, là phương pháp sử dụng
các kỹ thuật tính toán, dựa trên dữ liệu đầu vào để đưa ra kết quả cuối cùng một cách
chính xác theo yêu cầu của bài toán.
Bảng dưới đây đưa ra một số điểm khác biệt giữa tính toán mềm và tính toán
cứng, để chúng ta có được một hình dung cụ thể hơn về tính toán mềm.
Điểm so sánh Tính toán cứng Tính toán mềm
Dữ liệu xử lý - Xử lý bài toán dựa trên số
liệu chính xác.
- Ví dụ: Giá trị của A phải
là 0 hoặc 1: {0,1}
-Không đòi hỏi dữ liệu phải chính
xác.
-Ví dụ: Giá trị của A có thể nằm
trong khoảng từ 0 đến 1: [0,1]
Kết quả đầu ra - Yêu cầu đưa ra kết quả
tối ưu (kết quả chính xác
hoàn toàn)
- Yêu cầu đưa ra kết quả gần tối
ưu (cho phép sự sai lệch nhất
định trong kết quả tìm được)
Kỹ thuật tính
toán
- Sử dụng kỹ thuật tính
toán truyền thống
- Kỹ thuật tính toán dựa trên
Heuristic được sử dụng phổ
6
biến
Thời gian tính
toán
- Thời gian tính toán
thường chậm hơn. Trong
một số trường hợp, không
thể đưa ra kết quả trong
thời gian chấp nhận được
- Thời gian tính toán nhanh hơn
với chi phí thấp hơn
Lĩnh vực áp dụng - Các bài toán yêu cầu lời
giải chính xác, không cho
phép sự sai lệch.
- Các bài toán không yêu cầu
lời giải chính xác, song phải
đưa ra kết quả trong một
khoảng thời gian nhất định
với chi phí nhất định
Bảng 1: So sánh tính toán cứng và tính toán mềm
1.3. TẠI SAO CẦN PHẢI CÓ TÍNH TOÁN MỀM
Trong thực tế cuộc sống, các bài toán liên quan đến hệ thống nhận thức, trí tuệ
của con người đều hàm chứa những đại lượng, thông tin không chính xác, không
chắc chắn, không đầy đủ. Ví dụ: sẽ chẳng bao giờ có các thông tin, dữ liệu cũng như
các mô hình tính toán đầy đủ, và chính xác cho bài toán dự báo thời tiết. Nhìn chung
con người luôn ở trong bối cảnh không có thông tin chính xác, và đầy đủ cho các hệ
thống ra quyết định.
Trong lĩnh vực khoa học kỹ thuật cũng vậy, các hệ thống phức tạp trên thực tế
thường không thể mô tả một cách đầy đủ, và chính xác bởi các phương trình toán
học truyền thống. Kết quả là những cách tiếp cận kinh điển dựa trên kỹ thuật phân
tích, và các phương trình toán học nhanh chóng tỏ ra không còn phù hợp. Vì thế,
công nghệ tính toán mềm chính là giải pháp trong lĩnh vực này.
Một số đặc điểm của công nghệ tính toán mềm:
- Tính toán mềm căn cứ trên các đặc điểm, hành vi của con người, và tự nhiên để
đưa ra quyết định hợp lý trong điều kiện không chính xác, không chắc chắn.
- Các thành phần của tính toán mềm có sự bổ sung, hỗ trợ nhau.
7
- Tính toán mềm là một hướng nghiên cứu mở, bất kỳ một kỹ thuật mới nào được
tạo ra từ việc bắt chước trí thông minh của con người, đều có thể trở thành một
thành phần mới của tính toán mềm.
- Chính nhờ những đặc điểm đó mà tính toán mềm đang được nghiên cứu và ứng
dụng rộng rãi trong nhiều lĩnh vực, đặc biệt là: trí tuệ nhân tạo, khoa học máy
tính và học máy. Cụ thể:
◊ Không phải bài toán nào cũng có thuật toán có thể giải quyết được bằng tính
toán cứng.
◊ Không phải bài toán nào có thuật toán có thể giải quyết được bằng tính toán
cứng, cũng có thể thực hiện với chi phí và thời gian chấp nhận được.
◊ Khi bản thân dữ liệu là không chính xác thì không thể giải quyết được bằng
phương pháp chính xác.
Với những ưu thế đó, tính toán mềm đang dần thể hiện vai trò của mình nhất là
trong việc giải quyết vấn đề mới.
1.4. CÁC KỸ THUẬT TRONG TÍNH TOÁN MỀM
Công nghệ tính toán mềm bao gồm 3 thành phần chính:
- Điều khiển mờ (Fuzzy Control)
- Mạng nơ-ron nhân tạo (Neural Network)
- Giải thuật di truyền (Genetic Algorithm)
1.4.1. Logic mờ (Fuzzy Logic – FL)
Khái niệm tập mờ (Fuzzy set) được Zadeh đưa ra vào năm 1965 với mục đích
cho phép các phần tử thuộc về một tập liên tục thay cho rời rạc. Kể từ đó, các ứng
dụng và phát triển dựa trên khái niệm tưởng chừng rất đơn giản này, đã mang lại
những kết quả khó có thể tin được, thậm chí khó có thể chỉ ra các ứng dụng, phát
triển hay sản phẩm nào không có liên quan đến khái niệm tập mờ. Ví dụ: chúng ta
thường nghe đến nhiều thuật ngữ như: máy giặt fuzzy, quạt fuzzy, xe máy fuzzy...
Khái niệm tập mờ có vai trò rất quan trọng trong việc giải quyết các bài toán tối
ưu, đưa ra các bài toán có tính thực tế, giải quyết bài toán với chi phí thấp và trong
thời gian nhanh hơn (mặc dầu chấp nhận việc có thể có sai số). Trong lĩnh vực an
8
toàn thông tin, tập mờ cũng được sử dụng rất rộng rãi. Tất cả các thuật toán, giải
thuật, kỹ thuật được giới thiệu dưới đây đều được xuất phát từ tập mờ.
1.4.2. Mạng Nơron (Neural Network – NN).
NN là mô hình tính toán dựa trên bộ não. Mô hình NN bao gồm các bộ xử lý _
các Nơron _ có mối liên kết chặt chẽ với nhau, tương tự như họat động của các
Nơron trong não người. Các Nơron được kết nối bởi các đường liên kết có đánh
trọng số, truyền tín hiệu từ nơron này đến nơron khác. Mỗi nơron nhận các tín hiệu
đầu vào (có trọng số) thông qua các đường kết nối và tạo một tín hiệu đầu ra.
Hình vẽ sau đây mô tả mô hình của mạng nơron điển hình:
9
W
1
W
2
W
3
Y
Neuro
n
X
1
X
2
X
3
y
y
y
Input Signals Weights Output Signals
Hình 1. Mô hình mạng Nơron điển hình
1.4.3. Chương trình tiến hóa (Evolutionary Computation – EC)
Kĩ thuật EC bao gồm rất nhiều các giải thuật khác nhau, ở đây, tiểu luận trình bày
một trong những giải thuật tiến hóa phổ biến nhất – giải thuật di truyền (Genetic
Allgothm –GA). Hình vẽ bên dưới mô tả hoạt động của một giải thuật di truyền điển
hình.
10
Population
New
Population
Mutation Mating
Selection
Hình 2 – Mô hình hoạt động của giải thuật di truyền.
Bài này sẽ trình bày các khái niệm cơ bản về giải thuật di truyền và áp dụng trong
bài toán cụ thể.
Chương 2: GIẢI THUẬT DI TRUYỀN
2.1. KHÁI NIỆM GIẢI THUẬT DI TRUYỀN
Thuật toán di truyền (Genetic Algorithm_GA) là kỹ thuật chung giúp giải quyết
bài toán bằng cách mô phỏng sự tiến hóa của con người hay của sinh vật nói chung
(dựa vào lý thuyết tiến hóa muôn loài của Darwin) trong điều kiện quy định sẵn của
môi trường. GA là một thuật giải và mục tiêu của GA 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.
2.1.1. Đặc trưng của thuật toán di truyền kinh điển
• Thuật toán di truyền lập luận ngẫu nhiên thay vì xác định.
• Thuật toán di truyền duyệt toàn bộ các giải pháp, sau đó chọn lấy giải pháp tương
đối tốt dựa trên hệ số thích nghi.
• Thuật toán di truyền không để ý chi tiết vấn đề, mà chỉ chú ý đến giải pháp, đặc
biệt là dãy số tượng trưng cho giải pháp.
Goldberg và Zbiniev Michalewicz nêu ra đặc trưng của GA như sau:
11
- Thuật toán di truyền làm việc với một mã hóa của tập hợp tham số, chứ không
phải là một tham số.
- Thuật toán di truyền tìm kiếm từ một quần thể các điểm, chứ không phải là một
điểm hoặc một vài điểm như phương pháp tìm kiếm leo đồi (Hill Climbing).
- Thuật toán di truyền đánh giá thông tin với hàm mục tiêu, mà không dựa vào đạo
hàm hay thông tin bổ sung khác.
- Thuật toán di truyền sử dụng các luật biến đổi theo xác suất, mà không sử dụng
luật quyết định.
2.1.2. Cơ sở sinh học của giải thuật di truyền
Trong cơ thể sinh vật, các gene liên kết với nhau theo cơ chế dạng chuỗi gọi là
nhiễm sắc thể (NST), nó đặc trưng cho mỗi loài và quyết định sự sống còn của cơ thể
đó. Trong tự nhiên một loài muốn tồn tại phải thích nghi với môi trường hơn, thì sẽ
tồn tại và sinh sản với số lượng ngày càng nhiều hơn, trái lại những loài không thích
nghi với môi trường sẽ dần bị tuyệt chủng.
Môi trường tự nhiên luôn luôn biến đổi, nên cấu trúc nhiễm sắc thể cũng thay đổi
để thích nghi với môi trường, và ở thế hệ sau luôn có độ thích nghi cao hơn thế hệ
trước. Cấu trúc này có được nhờ sự trao đổi thông tin ngẫu nhiên với môi trường bên
ngoài, hay giữa chúng với nhau. Dựa vào đó các nhà khoa học máy tính xây dựng
một giải thuật tìm kiếm tinh tế dựa trên cơ sở chọn lọc tự nhiên và quy luật tiến hóa,
gọi là giải thuật di truyền (Genetic Algorithms).
12
2.1.3. Tư tưởng của giải thuật di truyền
Có một số lớn các bài toán người ta chưa tìm thuật toán tương đối nhanh để giải
quyết chúng. Nhiều bài toán trong lớp này là các bài toán quy hoạch thường nảy sinh
trong các ứng dụng. Với bài toán quy hoạch thuộc loại khó, có thể tìm được thuật
toán “nhanh”, cho kết quả gần tối ưu. Đối với một số bài toán quy hoạch khó, ta
cũng có thể tìm thuật toán xác suất, thuật toán này không đảm bảo cho kết quả tối
ưu, nhưng bằng cách chọn ngẫu nhiên đủ nhiều “bằng chứng”, có thể giảm tùy ý xác
suất sai của kết quả.
Nói một cách trừu tượng, việc giải bài toán có thể xem như tìm kiếm trong không
gian với lời giải có thể. Vì cái đích của chúng ta là “lời giải tốt nhất”, ta có thể xem
phương pháp giải bài toán là quá trình tối ưu hóa. Đối với không gian nhỏ, phương
pháp “vét cạn” cổ điển là đủ dùng. Đối với các không gian lớn hơn, đòi hỏi những
phương pháp trí tuệ nhân tạo đặc biệt. Thuật toán di truyền (GA) nằm trong các
phương pháp đặc biệt đó.
13
Tư tưởng của thuật toán di truyền là xem xét, đánh giá các gene thế nào là tốt cho
mục tiêu, sử dụng nó tiếp cho thế hệ sau. Nói theo ngôn ngữ di truyền là giữ lại các
gene trội, loại bỏ các gene không tốt, hay là đào thải những thế hệ không tốt.
2.1.4. Hoạt động của giải thuật di truyền
Thuật toán di truyền dùng nhiều ngôn ngữ của ngành di truyền học. Chúng ta sẽ
nói về các “cá thể” trong một quần thể. Thường thì các cá thể này được gọi là xâu,
hoặc nhiễm sắc thể. Mỗi loài có một số lượng nhiễm sắc thể nhất định (Ví dụ: cơ thể
người có 46 nhiễm sắc thể). Tuy nhiên, trong bài này, ta chỉ nói về các cá thể có
đúng một nhiễm sắc thể. Mỗi nhiễm sắc thể bao gồm các đơn vị - gene – xếp liên
tiếp; mỗi gene điều khiển sự thừa kế của một hoặc vài tính trạng bất kỳ (thí dụ màu
mắt) có thể được thể hiện dưới nhiều mức độ khác nhau. Ta nói gene đó có nhiều
trạng thái (gọi là state).
Mỗi nhiễm sắc thể (cá thể) sẽ biểu thị một lời giải có thể của một bài toán
(ý nghĩa của mỗi nhiễm sắc thể, nghĩa là kiểu gene của nó được quy định bởi người
lập trình). Một quá trình tiến hóa được thực hiện trên một quần thể nhiễm sắc thể, là
tương đương với sự tìm kiếm trong một không gian các lời giải có thể. Sự tìm kiếm
này đòi hỏi sự cân bằng giữa hai mục đích: Khai thác lời giải tốt nhất, và khám phá
14
không gian tìm kiếm. Phương pháp “leo núi” là một ví dụ về chiến lược khai thác lời
giải tốt nhất theo các hướng cải tiến. Tìm kiếm ngẫu nhiên là một ví dụ điển hình của
sự khám phá không gian tìm kiếm, không chú trọng khai thác các miền hứa hẹn trong
không gian tìm kiếm. Thuật toán di truyền là lớp các phương pháp tìm kiếm tổng
quát với sự cân bằng đáng kể giữa khai thác và khám phá không gian tìm kiếm.
Thuật toán di truyền cũng như các thuật toán tiến hóa nói chung, hình thành dựa
trên khái niệm cho rằng quá trình tiến hóa tự nhiên là hoàn hảo nhất, hợp lý nhất và
tự nó đã mang tính tối ưu. Quan niệm này có thể được xem là một tiên đề đúng,
không chứng minh được nhưng phù hợp với thực tế khách quan. Quá trình tiến hóa
thể hiện tính tối ưu ở chỗ: thế hệ sau bao giờ cũng tốt hơn, phát triển hơn, hoàn thiện
hơn thế hệ trước. Tiến hóa tự nhiên được duy trì bằng hai quá trình cơ bản: sinh sản
và chọn lọc tự nhiên. Xuyên suốt quá trình tiến hóa tự nhiên, là thế hệ mới luôn được
sinh ra để bổ sung và thay thế thế hệ cũ.
Cá thể nào phát triển hơn, thích ứng hơn với môi trường sẽ tồn tại, cá thể nào
không thích ứng với môi trường sẽ bị đào thải. Sự thay đổi môi trường là động lực
tiến hóa. Ngược lại tiến hóa cũng tác động trở lại, góp phần làm thay đổi môi trường.
Trong thuật giải di truyền, các cá thể mới liên tục được sinh ra trong quá trình
tiến hóa nhờ sự lai ghép ở thế hệ cha mẹ. Một cá thể mới có thể mang những tính
trạng của cha mẹ (di truyền), cũng có thể mang những tính trạng hoàn toàn mới (đột
biến). Di truyền và đột biến là hai cơ chế quan trọng như nhau trong tiến hóa, dù đột
biến xảy ra với xác suất nhỏ hơn nhiều so với di truyền. Các thuật toán tiến hóa, tuy
có những đặc điểm khác biệt, nhưng đều mô phỏng các quá trình cơ bản: lai ghép,
đột biến, sinh sản và chọn lọc tự nhiên.
Như vậy, quá trình tiến hóa càng lâu thì càng có điều kiện cho các cá thể tốt được
sinh ra, và chất lượng của cá thể càng được nâng lên.
15
2.2. CẤU TRÚC GIẢI THUẬT DI TRUYỀN ĐƠN GIẢN
Trong thuật toán di truyền đơn giản, các cá thể hay còn gọi là NST (Nhiễm sắc
thể) được mã hóa thành một chuỗi nhị phân gồm giá trị 0 và 1. Một NST trong GA
cổ điển có dạng sau:
0 0 1 1 0 0 1 1 1
Mỗi NST biểu diễn một lời giải có thể có của bài toán. Một quá trình tiến hóa
được thực hiện trên một quần thể (một tập hợp NST) tương đương với sự tìm kiếm
trong không gian lời giải có thể. Sự tìm kiếm này đòi hỏi sự cân bằng giữa hai mục
đích: tìm lời giải tốt nhất và khám phá không gian tìm kiếm mới.
GA cổ điển thực hiện tìm kiếm theo nhiều hướng bằng cách duy trì một tập lời
giải có thể, khuyến khích sự hình thành và trao đổi thông tin giữa các hướng. Tập lời
giải trải qua quá trình tiến hóa và cuối cùng cho ta một lời giải đủ tốt được chọn để
tái sinh, các lời giải tồi bị loại bỏ. Để phân biệt mức độ tốt xấu giữa các lời giải khác
nhau người ta dùng một hàm gọi là “hàm mục tiêu” hay “hàm thích nghi” vì hàm
này tương đương với môi trường sống hay thuyết tiến hóa.
Thuật toán di truyền đơn giản bao gồm ba toán tử sau:
16
• Tái tạo (Reproduction)
• Lai ghép (Crossover)
• Đột biến (Mutation)
2.2.1. Tái tạo
Tái tạo là một quá trình trong đó các chuỗi biểu diễn cá thể được sao chép lại tùy
theo giá trị hàm mục tiêu f (các nhà sinh vật học gọi hàm này là hàm thích nghi).
Toán tử này được xem là quá trình chọn lọc trong tự nhiên. Hàm mục tiêu f(i) được
gán cho mỗi cá thể trong dân số. Việc sao chép lại các chuỗi tùy theo giá trị thích
nghi của chúng, có nghĩa là: Những chuỗi có giá trị thích nghi cao hơn sẽ có nhiều
cơ hội đóng góp các chuỗi con cho thế hệ tiếp theo.
Thao tác sinh sản (chọn cha mẹ) được điều khiển bằng cách quay bánh xe
roulette, trong đó mỗi chuỗi trong dân số chiếm một khe có kích thước tỉ lệ với
độ thích nghi (fitness) của nó trên bánh xe.
Giả sử các chuỗi của quần thể ban đầu đã khởi tạo trong bài toán hộp đen có các
giá trị hàm thích nghi như trong bảng sau. Lấy tổng độ thích nghi của 4 chuỗi, chúng
ta được 1170. Ta có tỉ lệ % độ thích nghi của từng chuỗi trong quần thể:
STT Chuỗi Độ thích nghi % trong tổng số
1 01101 169 14.4
2 11000 576 49.2
3 01000 64 5.5
17
4 10001 361 30.9
Tổng cộng 1170 100.0
Các chuỗi của bài toán mẫu và các giá trị thích nghi
Bánh xe roulette được đánh trọng số phù hợp cho sự tái tạo của thế hệ này được
thể hiện trên hình sau:
Sự sinh sản đơn giản phân bố các chuỗi con cháu nhờ sử dụng bánh xe Roulette
với các khe hở tỉ lệ với độ thích nghi.
Với bài toán hộp đen, để sinh sản chúng ta chỉ cần quay bánh xe Roulette 4 lần.
Đối với bài toán cụ thể thì:
Chuỗi 1 có giá trị thích nghi là 169 đại diện cho 0.144. Tương tự với các chuỗi
còn lại, bằng cách này chuỗi thích nghi hơn sẽ có một lượng con cháu lớn hơn trong
thế hệ tiếp theo.
18
49.2%
2
5.5%
3
30.9%
4
14.4%
1
2.2.2. Lai ghép
Mỗi khi một chuỗi được chọn để sinh ra, một bản sao chính xác của các chuỗi đó
sẽ được tạo ra. Các bản sao này được đưa vào bể ghép đôi (mating pool). Toán tử lai
ghép đơn giản có thể được tiến hành theo hai bước:
• Bước 1: Chọn ngẫu nhiên hai (hay nhiều) cá thể bất kỳ trong quần thể. Giả sử
NST của cha mẹ đều có m gene
• Bước 2: Tạo một số ngẫu nhiên trong khoảng từ 1 đến m-1 (ta gọi là
điểm lai). Điểm lai chia các chuỗi cha mẹ dài m thành 2 nhóm con dài m
1
và
m
2
. Hai chuỗi NST con mới là m
11
+ m
22
và m
12
+ m
21
Đưa hai cá thể mới này vào quần thể để tham gia các quá trình tiến hóa
tiếp theo.
Ví dụ: Về phép lai một điểm với xác suất Pc có thể mô phỏng như sau:
19
Ví dụ về phép lai (lấy từ [4])
Cơ chế sinh sản và lai ghép chéo đơn giản, bao gồm các việc sinh số ngẫu nhiên,
sao chép chuỗi và trao đổi các chuỗi thành phần. Tuy nhiên, điểm cần nhấn mạnh là
điểm sinh sản và trao đổi thông tin có cấu trúc (dù là một cách ngẫu nhiên) cả quá
trình ghép chéo làm cho giải thuật di truyền tăng thêm sức mạnh.
2.2.3. Đột biến
Đột biến là hiện tượng cá thể con mang một số tính trạng không có trong mã di
truyền của cha mẹ. Mục đích của phép đột biến trong thuật toán di truyền là giúp cho
thuật toán tránh được các cực trị cục bộ. 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 Pc. Một phép đột biến có thể mô tả như sau:
• Bước 1: Chọn ngẫu nhiên một cá thể cha mẹ bất kỳ trong quần thể. Giả sử NST
của cha mẹ đều có m gene
• Bước 2: Tạo một số ngẫu nhiên k trong khoảng từ 1 đến m (1 ≤ k ≤ m). Thay đổi
gene thứ k và trả cá thể này về quần thể để tham gia quá trình tiến hóa tiếp theo
Ví dụ về phép đột biến với xác suất Pm:
01101==> 01111
20
Đột biến tại bít thứ 4
Nếu sự sinh sản theo độ thích nghi kết hợp với sự ghép chéo làm cho giải thuật di
truyền có năng lực xử lý tốt hơn, thì sự đột biến đóng vai trò quyết định thứ 2 trong
hoạt động của giải thuật di truyền. Sự đột biến là cần thiết bởi vì: cho dù sự sinh sản
và ghép chéo đã tìm kiếm hiệu quả và tái kết hợp lại các gene với nhau, nhưng thỉnh
thoảng chúng có thể làm mất một vài gene hữu ích nào đó (ví dụ bít 1 hay bít 0 tại
những vị trí đặc biệt). Trong các hệ thống gene nhân tạo, toán tử đột biến sẽ chống
lại sự mất mát không được khôi phục đó. Trong thuật toán di truyền đơn giản, đột
biến là sự thay đổi ngẫu nhiên và không thường xuyên (với xác suất nhỏ) trị số vị trí
của một chuỗi. Trong việc mã hóa nhị phân của bài toán hộp đen có nghĩa là chỉ cần
đổi 1 thành 0 và ngược lại. Tự thân nó sự đột biến là một hoạt động ngẫu nhiên trong
không gian chuỗi, khi được dùng cùng với sự sinh sản và ghép chéo nó sẽ là một
chính sách bảo hiểm chống lại nguy cơ mất mát những gene quan trọng.
2.3. SƠ ĐỒ GIẢI THUẬT DI TRUYỀN
Giải thuật di truyền bao gồm các bước sau:
- Bước 1: Khởi tạo quần thể (population) ban đầu của các NST.
- Bước 2: Xác định giá trị hàm mục tiêu cho mỗi chuỗi NST.
- Bước 3: Tạo các chuỗi NST mới bằng sinh sản từ các chuỗi NST hiện tại, có
tính đến ghép chéo và đột biến xảy ra (nếu có).
- Bước 4: Xác định hàm mục tiêu cho các chuỗi NST mới, và đưa nó vào trong
một dân số mới.
- Bước 5: Nếu điều kiện kết thúc thuật toán đã thỏa mãn thì dừng lại, và trả về
chuỗi NST tốt nhất cùng với giá trị hàm mục tiêu của nó, nếu không thì quay
về bước 3.
Sơ đồ giải thuật di truyền đơn giản:
21
Tạo quần thể ban
đầu của các
chuỗi NST
Xác định giá trị hàm mục tiêu
của các chuỗi NST
Tính toán các giá trị mục tiêu của chuỗi
NST mới và đưa nó vào quần thể mới
Tạo các chuỗi NST bằng cách sinh sản
từ các chuỗi NST hiện tại (có tính đến
ghép chéo và đột biến xảy ra)
Kiểm tra điều kiện kết
thúc thuật toán thỏa mãn
chưa?
Kết thúc
N
2.4. MỘT SỐ CẢI TIẾN CỦA THUẬT TOÁN DI TRUYỀN ĐƠN GIẢN
2.4.1. Cải tiến phương pháp chọn lọc
Thuật toán di truyền đơn giản áp dụng phương pháp chọn lọc dùng bánh xe
Roulette như đã trình bày ở trên. Cùng với sự phát triển của thuật toán di truyền các
nhà nghiên cứu đã đề xuất một số phương pháp chọn lọc khác: chọn lọc sắp xếp
hạng, chọn lọc cạnh tranh…
2.4.1.1. Chọn lọc xếp hạng (Rank Selection)
Phương pháp này sắp hạng cá thể dựa trên độ thích nghi của chúng. Cá thể xấu
nhất có độ thích nghi 1, kế tiếp là 2,3…. Cá thể tốt nhất có độ thích nghi n (n là số
NST có trong quần thể).
2.4.1.2. Chọn lọc cạnh tranh (Tournament selection)
• Chọn lọc cạnh tranh 2:
22
Y
Hai NST khác nhau được chọn ngẫu nhiên và được so sánh với NST tồn tại. Nếu
NST i
1
không tốt hơn NST i
2
nghĩa là f(i
1
) ≤ f(i
2
), thì NST i
1
chết đi và bị loại ra
khỏi quần thể (liên kết được phá vỡ tùy ý). Quá trình này lặp lại cho đến hết NST
còn lại.
• Chọn lọc cạnh tranh 3:
Giống như trên, 3 NST khác nhau được chọn ngẫu nhiên và được so sánh. Nếu
chúng ta có f(i
1
) ≤ f(i
2
) ≤ f(i
3
) thì NST i
1
sẽ chết và bị loại ra khỏi quần thể. Quá trình
này lặp lại cho đến hết NST còn lại.
2.4.2. Cải tiến toán tử lai ghép
2.4.2.1. Lai ghép ánh xạ từng phần (PMX – Partial Mappel Crossover)
Lai ghép ánh xạ từng phần có thể xem như một biến đổi của lai ghép 2 điểm giao
nhau bằng cách kết hợp với các thủ tục sửa chữa đặc biệt để giải quyết tính không
chính đáng (illegitimacy) có thể có. PMX gồm các bước sau:
• Chọn ngẫu nhiên 2 điểm cách nhau cùng với một chuỗi. Chuỗi con được định
nghĩa bởi 2 điểm cắt nhau được định nghĩa là ánh xạ từng phần.
• Trao đổi hai chuỗi con giữa các cá thể cha mẹ để tạo ra các thể con.
• Xác định quan hệ ánh xạ giữa các thành phần ánh xạ
• Hợp thức cá thể con với các quan hệ ánh xạ.
Ví dụ: Bài toán người chào hàng với 9 thành phố. Một NST biểu diễn toàn bộ
đường đi.
Cá thể cha: 93|8571|642
23
Cá thể mẹ: 35|2614|879
Đầu tiên hoán vị giữa cá thể cha (parent 1) và cá thể mẹ (parent 2)
Cá thể con 1: xx|2614|xxx
Cá thể con 2: xx|8571|xxx.
Ký hiệu “x” có thể được xem như ẩn số (unknown)
Hoán vị này cũng được định nghĩa một chuỗi những ánh xạ
2->8, 6 ->5, 1->7, 4->1.
Cuối cùng điều chỉnh với quan hệ ánh xạ, ta có thể điền thêm các thành phố (từ
cá thể cha mẹ ban đầu), mà không có vấn đề mâu thuẫn.
Cá thể con thứ 1: 93|2614|xxx
Cá thể con thứ 2: 3x|8571|xx9
“x” đầu tiên trong cá thể con thứ 1 (sẽ là 6 nhưng vẫn có mâu thuẫn) được thay
bởi 5, tương tự ta áp dụng với mọi ẩn x chưa biết còn lại, ta được:
Cá thể con thứ 1: 93|2614|578
Cá thể con thứ 1: 36|8571|249
2.4.2.2. Lai ghép có trật tự (OX – Order Crossover)
Lai ghép có trật tự có thể được xem như một biến thể của PMX sử dụng thủ tục sửa
chữa khác, OX gồm các bước sau:
• Chọn ngẫu nhiên 1 chuỗi con từ cá thể cha mẹ.
• Đưa ra một cá thể con bằng cách sao chép chuỗi con vào những vị trí tương ứng
trong cá thể cha mẹ.
• Xóa tất cả các ký tự từ cá thể cha mẹ thứ 2, lúc này đã có trong chuỗi con.
Chuỗi còn lại chứa ký hiệu mà cá thể con cần.
• Đặt các ký hiệu vào những vị trí không cố định của các cá thể con từ trái sang
phải theo trật tự của chuỗi để tạo ra cá thể con.
Ví dụ:
Cá thể cha: 93|8571|642
Cá thể mẹ: 35|2614|879
24
Đầu tiên phân đoạn giữa để cắt các điểm được sao chép vào cá thể con:
Cá thể con 1: xx|8571|xxx
Cá thể con 2: xx|2614|xxx
Chuỗi bắt đầu từ điểm cắt thứ 2 của cá thể mẹ là: 8-7-9-3-5-2-6-1-4
Chuỗi sau khi loại các thành phố 8, 5, 7, 1 cũng ở trong cá thể con đầu tiên
là: 9-3-2-6-4
Cuối cùng chuỗi này được đặt vào cá thể con 1 đầu tiên để tạo ra cá thể con (bắt đầu
từ điểm cắt thứ 2).
Cá thể con 1: 64|8571|932
Tương tục chúng ta được cá thể con khác:
Cá thể con 2: 57|2614|938.
2.4.2.3. Lai ghép dựa trên vị trí (Possition Base Crossover)
Lai ghép dựa trên vị trí thực chất là một loại đồng nhất cho mã hóa theo nghĩa đột
biến kết hợp với một thủ tục để sửa chữa. Trước tiên nó phát sinh ngẫu nhiên một
mặt nạ sau đó trao đổi các gene liên quan giữa cá thể cha và mẹ theo mặt nạ. Một
mặt nạ lai ghép là một chuỗi nhị phân đơn giản có kích thước NST như nhau. Sự
tương đương của mỗi bit tương ứng trong cá thể con, xác định cá thể cha mẹ nào sẽ
cung cấp bit đó.
Bởi vì lai ghép đồng nhất sẽ tạo ra cá thể con bất hợp lệ cho mã hóa đột biến, lai
ghép đột biến sẽ sử dụng một thủ tục sửa chữa để giải quyết tính bất hợp lệ.
Lai ghép dựa trên vị trí gồm các bước sau:
• Chọn ngẫu nhiên một tập hợp các vị trí từ một cá thể cha mẹ.
• Tạo ra một cá thể con bằng cách sao chép các ký hiệu từ cá thể cha mẹ tùy thuộc
vào bit của mặt nạ tại vị trí đó vào cá thể con.
25