BẢNG TỪ VIẾT TẮT Từ hoặc cụm từ Từ tiếng Anh Từ tiếng Việt ANN Artificial Neural Network Mạng nơron nhân tạo Chromosome Chromosome Nhiễm sắc thể Computer language Computer language Ngô
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KINH TẾ
-
LÊ CHÍ LUẬN
ỨNG DỤNG THUẬT GIẢI DI TRUYỀN CÁC BÀI
TOÁN HÀM MỤC TIÊU NHIỀU BIẾN
Trang 2MỤC LỤC
`
LỜI CAM ĐOAN 1
MỤC LỤC 2
BẢNG TỪ VIẾT TẮT 4
DANH SÁCH HèNH VẼ VÀ BẢNG BIỂU 6
MỞ ĐẦU 7
Chương 1 THUẬT GIẢI DI TRUYỀN 8
1.1 Tổng quan về thuật giải di truyền [2] 8
1.1.1 Thuật giải di truyền là gỡ? 8
1.1.2 Lịch sử phỏt triễn của giải thuật di truyền 9
1.1.3 Từ ngẫu nhiờn đến thuật giải di truyền 10
1.1.4 Một số ứng dụng nổi bật của thuật giải di truyền 12
1.2 Cỏc nguyờn tắc cơ bản của thuật giải di truyền [1] 14
1.2.1 Những tớnh chất cơ bản của thuật giải di truyền 14
1.2.2 Cỏc bước trong việc ỏp dụng thuật giải di truyền 18
1.2.3 Cỏc phương phỏp mó hoỏ trong thuật giải di truyền 19
1.2.4 Một vài vớ dụ minh hoạ 41
1.2.5 Kết Luận 52
1.3 Cỏc giai đoạn cần thực hiện để giải quyết bài toỏn bằng thuật giải di truyền 54
1.3.1 Mối liờn hệ giữa thuật giải di truyền và sự tiến hoỏ 54
1.3.2 Những tớnh chất quan trọng của thuật giải di truyền 56
1.3.3 Một số vấn đề liờn quan đến thuật giải di truyền? 57
Chương 2 ỨNG DỤNG GIẢI THUẬT DI TRUYỀN ĐỂ GIẢI CÁC BÀI TOÁN TỐI ƯU NHIỀU BIẾN 59
2.1 Bài toỏn tối ưu 59
2.1.1 Đặt vấn đề 59
2.1.2 Một số vớ dụ về bài toỏn tối ưu 60
2.1.3 Một số ứng dụng nổi bật của bài toỏn tối ưu 62
Trang 32.2 Ứng dụng giải thuật di truyền để giải các bài toán tối ưu nhiều
biến [2] 65
2.2.1 Đặt vấn đề 65
2.2.2 Biễu diễn các biến bằng véc tơ nhị phân 65
2.2.3 Toán tử chọn cá thể (select) 66
2.2.4 Toán tử lai ghép (cross over) 67
2.2.5 Toán tử đột biến (mutation) 67
2.2.7 Bài toán cực tiểu hàm f với n biến liên tục 69
Bài toán 1: Bài toán cực tiểu hàm với N biến [2] 106
2.2.6 Hàm thích nghi (fitness) 68
Bài toán 2: Travelling Salesman Problem(TSP) 111
KẾT LUẬN 120
TÀI LIỆU THAM KHẢO 121
Trang 4BẢNG TỪ VIẾT TẮT
Từ hoặc cụm từ Từ tiếng Anh Từ tiếng Việt
ANN Artificial Neural
Network Mạng nơron nhân tạo Chromosome Chromosome Nhiễm sắc thể
Computer language Computer
language Ngôn ngữ lập trình Cross over Crossover Lai ghép, một hình thức của sự biến
hoá trong GA Expert Systems Expert Systems Hệ chuyên gia
Fitness function Fitness function
Hàm số thích nghi, hàm số để tính ra giá trị thích nghi cho mỗi giải pháp hay đáp số để xem trường hợp nào là tối ưu hay tốt hơn
Fuzzy Logic Fuzzy Logic Lôgic mờ
Hill-climbing Hill-climbing Tìm kiếm theo kiểu leo núi
Initialization Initialization Khởi tạo
Mutation Mutation Đột biến, một hình thức của sự biến
hoá dùng trong GA Optimization Optimization Tối ưu
Population Population Quần thể (toàn bộ các giải pháp cho
vấn đề có trị số thích nghi cao cũng
Trang 5như thấp)
Reproduction Reproduction Tạo sinh
Trang 6DANH SÁCH HÌNH VẼ VÀ BẢNG BIỂU
Hình 1 Sơ đồ tổng quát của thuật giải di truyền 16
Hình 3 Mảng byte nén 21
Hình 4 Cấu trúc của một thời khóa biểu 48
Hình 5 Chọn lọc X, Y, Z viết tắt của số các cá thể 50
Hình 6 Ví dụ về lai ghép hai cá thể Trong trường hợp này lớp số 2 sẽ bị thay đổi 51
Hình 2 Ví dụ về một đột biến trong một cá thể đơn 52
Hình 7 Các bước của Thuật giải di truyền cho bài toán tối ưu hàm 70
Hình 8 Hàm khởi tạo giá trị ngẫu nhiên 70
Hình 9 Hàm khởi tạo giá trị ngẫu nhiên (0 hoặc 1) theo xác suất 71
Hình 10 Hàm tính trị số thích nghi 73
Hình 11 Hàm chọn cá thể (select) 73
Hình 12 Hµm m« pháng toán tử đột biến (mutation) 74
Hình 13 Hàm mô phỏng toán tử lai ghép (cross over) 75
Hình 14 Hàm khởi tạo quần thể 75
Hình 15 Hàm tạo sinh 76
Hình 16 Hàm tái tạo quần thể(rreproduction) 78
Hình 17 Hàm giải mã 79
Hình 18 Hàm thể hiện các bước của Thuật giải di truyền 80
Hình 19 Minh hoạ thiết bị thí nghiệm trước khi cân bằng 83
Hình 20 Minh họa thiết bị thí nghiệm sau khi cân bằng 83
Trang 7MỞ ĐẦU
Từ vài thập niên trở lại đây, với những tác động mạnh mẽ của các tiến bộ trong công nghệ phần cứng và truyền thông, các hệ thống dữ liệu phục vụ cho các lĩnh vực kinh tế - xã hội đã phát triển bùng nổ, Vì vậy, tôi chọn hướng nghiên cứu
"Ứng dụng của thuật giải di truyền để giải các bài toán tối ưu nhiều biến" làm đề tài nghiên cứu cho luận văn của mình Ngoài phần mở đầu và kết luận, cấu trúc nội dung của luận văn bao gồm có 3 chương:
Chương 1: Trình bày tổng quan về giải thuật di truyền, trả lời câu hỏi “giải
thuật di truyền là gì?” Trình bày những nét chính về lịch sử phát triển của giải thuật di truyền và những ứng dụng nổi bật của giải thuật di truyền trong các lĩnh vực khoa học kỹ thuật và cuộc sống Bên cạnh đó giới thiệu các nguyên tắc cơ bản của thuật giải di truyền Tính chất cơ bản của thuật giải di truyền, các bước trong việc áp dụng thuật giải di truyền, các phương pháp hoá của thuật giải di truyền và một số ví dụ cụ thể Cũng trong chương này sẽ giải thích một số thắc mắc liên quan đến thuật giải di truyền và trình bày mối liên hệ giữa giải thuật di truyền và sự tiến hoá
Chương 2: trình bày những nét tổng quan nhất về bài toán tối ưu Trả lời câu
hỏi “ bài toán tối ưu là gì?” Nêu lên một số ứng dụng nổi bật của bài toán tối ưu, giới thiệu các phương pháp giải các bài toán tối ưu và đưa ra một số ví dụ về bài toán tối ưu Trình bày về ứng dụng của giải thuật di truyền để giải các bài toán tối
ưu nhiều biến Trình bày cách biểu diễn các biến bằng véc tơ nhị phân, toán tử chọn
cá thể, toán tử lai ghép, toán tử đột biến, hàm thích nghi Trình bày về thuật giải để giải bài toán cực tiểu hàm f với n biến liên tục
Chương 3: Phân tích và cài đặt thử nghiệm Phần kết luận trình bày tóm tắt
về các nội dung thực hiện trong luận văn, đồng thời đưa ra các vấn đề nghiên cứu tiếp cho tương lai
Trang 8Chương 1
THUẬT GIẢI DI TRUYỀN
1.1 Tổng quan về thuật giải di truyền [2]
1.1.1 Thuật giải di truyền là gì?
Trong sinh hoạt hàng ngày, thường gặp nhiều vấn đề từ đơn giản đến phức tạp
Có những vấn đề liên quan đến sinh hoạt cá nhân như chọn trường cho con em, tìm
lộ trình ngắn nhất để đi làm mỗi ngày hoặc những vấn đề liên quan đến công việc tại cơ quan như: hoạch định chương trình chạy máy để tận dụng khả năng các dụng
cụ, đảm bảo chất lượng và thoả mãn yêu cầu của khách hàng
Để giải quyết vấn đề, ở nhiều trường hợp, chúng ta có vô số giải pháp nhưng không có giải pháp vạn năng theo nghĩa chúng có thể giải mọi lớp bài toán với hiệu quả cao, có những trường hợp quá phức tạp không có giải pháp nào trước mắt hay không biết phải bắt đầu tìm kiếm từ đâu
Để giải quyết vấn đề thường dựa vào các phương thức sau đây:
1 Dựa trên các công thức toán học hay những định luật khoa học (tiếp cận chính xác)
2 Dựa theo ý kiến của các chuyên gia lĩnh vực (tiếp cận kinh nghiệm)
3 Dựa theo sự tiến hoá, bắt chước các qui trình thích nghi và tiến hoá của sinh giới nói chung
Phương thức dựa trên các công thức toán học hay những định luật khoa học
thường cho những đáp số chính xác Tuy nhiên yếu điểm chính của nó là phải tìm ra công thức hay giả tưỏng những điều kiện hoạt động cho giống với thực tế, điều này không thể thực hiện một cách dễ dàng và nhanh chóng
Trong hơn 20 năm qua, lĩnh vực trí tuệ nhân tạo đã được sử dụng để giúp giải quyết vấn đề Nguyên tắc cơ bản của phương thức này là kết hợp kiến thức của các chuyên gia với chương trình tin học để dùng máy tính thay con người giải quyết vấn
đề một cách khôn ngoan Nhiều chương trình tin học như Mycin, Prospector v.v…
đã thành công trong một số lĩnh vực cụ thể; tuy nhiên đối với những vấn đề chưa hề
xảy ra, hệ chuyên gia không thể giúp giải quyết được vấn đề Nhược điểm quan trọng nhất của hệ chuyên gia là khi thu thập kiến thức của các chuyên gia lĩnh vực,
chúng ta không có được những ý kiến trung thực có thể vì các chuyên gia thiếu tinh
Trang 9thần hợp tác hoặc cũng có thể do kỹ thuật thu nhập không thích nghi Do đó kể từ
những năm 90, thế kỉ 20, hệ chuyên gia không còn là kỹ thuật thích hợp nhất để giải
quyết vấn đề Từ đấy, khuynh hướng trở về với bản thể con người được xem là cứu cánh để giải quyết vấn đề
Trong những năm 70, Mạng nơron nhân tạo, Logic mờ, cùng với Thuật giải di truyền được nghiên cứu và áp dụng thành công trong việc giải quyết các trường hợp
nhiên mà con người và sinh vậtt đã phải thực hiện
Tiến hoá cho thích nghi không có nghĩa là luôn luôn tìm ra giải pháp
tuyệt đối cho vấn đề, nhưng có thể chỉ là tương đối trong điều kiện cho phép
1.1.2 Lịch sử phát triễn của giải thuật di truyền
Y niệm về thuật giải di truyền đã được một số nhà sinh vật học nêu ra từ những năm 50, 60, thế kỉ XX A.S Fraser là người đầu tiên đã nêu lên sự tương đồng giữa
sự tiến hoá của sinh vật và chương trình tin học giả tưởng về GA Tuy nhiên chính John Henry Holland, đại học Michigan, mới là ngưòi triển khai ý tưởng và phương thức giải quýêt vấn đề dựa theo sự tiến hoá của con người Ông bắt đầu bằng những bài giảng và bài báo, sau đó đúc kết các ý tưởng thành sách: Adaptation in Natural and Artificial Systems, xuất bản năm 1975 J.H Holland được xem là “người khai sinh “ của học thuyết Thuật giải di truyền Trong giai đoạn đầu, thập niên 70 và 80, thế kỉ XX, phần lớn các nhà nghiên cứu và ứng dụng của GA đều được đào tạo tại đại học Michigan, và dưới sự hướng dẫn của J.H Holland J.H Holland và một số đồng nghiệp như Kenneth De Jong, David E Goldberg đã dần dần xây dựng nền
Trang 10tảng lý thuyết và thực hiện các áp dụng của GA để giải quýêt các vấn đề phức tạp trong thực tế
Tạp chí đầu tiên về lý thuyết và ứng dụng của GA là nguyệt san Evulutionary Computation (1993) do Kenneth De Jong chủ biên, ngoài ra còn có nguyệt san AI Expert, Artificial Intelligent cũng thường có bài đề cập về GA
Tuy chỉ mới được hình thành cách đây chưa đầy 25 năm, GA đã có được cơ sở toán học vững chắc về lý thuyết và số lượng những áp dụng ngày càng gia tăng bao gồm nhiều lĩnh vực khác nhau
GA đã kết hợp với các kỹ thuật thuộc lĩnh vực trí tuệ nhân tạo như Expert Systems (Hệ chuyên gia), Mạng nơron nhân tạo (Artificial Neural Network) và Lôgic mờ (Fuzzy Logic) nhằm tìm giải pháp tối ưu cho những vấn đề phức tạp mà phương thức cổ điển đã không giải quýêt thoả đáng
GA được ứng dụng trong nhiều lĩnh vực khác nhau, từ khoa học tự nhiên đến khoa học nhân văn, từ kỹ thuật sang thương vụ và kinh tế- tài chính Nhìn chung, những ứng dụng này có thể chia làm ba nhóm chính:
Tìm mô hình tối ưu Tìm kiếm và tối ưu hoá giải pháp là đề tài thích hợp nhất của GA
Hoạch định quy trình sản xuất, lộ trình chuyển vận, cách bố trí các bộ phận trong môi trường Những ứng dụng loại này được dùng trong ngành giao thông, chế tạo sản phẩm, tiếp thị v.v…
Chọn lựa các nhóm hay thành phần trong một tổ chức
Chúng ta cũng có thể sắp xếp các ứng dụng theo lĩnh vực như: quản trị, kinh tế- tài chính, kỹ thuật, nghiên cứu và phát triển
1.1.3 Từ ngẫu nhiên đến thuật giải di truyền
Xét bài toán tìm mật mã để mở khoá với mật mã là một con số thập phân có
30 chữ số với giả sử rằng ổ khoá này chỉ có thể mở bằng một mật mã duy nhất Đối với bài toán này không gian tìm kiếm là 1030, nghĩa là sẽ có tổng cộng 1030 mật mã khác nhau Để giải quyết vấn đề này ta thường chỉ nghĩ đến hai phương pháp : Vét cạn toàn bộ hoặc thử ngẫu nhiên các mật mã Ta phát sinh ( ngẫu nhiên hoặc tuâầntự theo một quy tắc duyệt nào đó) các mã khoá rồi thử xem mật mã này có thể
là mã khoá đúng không Với phương pháp này, để có được một mật mã với khả năng mở được ổ khoá là trên 50%, ta đã phải phát sinh nhiều hơn 1030/2 mật mã Con số này quá lớn, trên thực tế, nếu dùng siêu máy tính Cray và giả sử rằng cứ mỗi một phần tỷ giây thì máy này có thể phát sinh và thử nghiệm được một mật mã
Trang 11(nghĩa là một giây Gray thử được 1 tỷ mật mã) thì nó phải chạy trong một khoảng thời gian tương đương với tuổi của trái đất để thử trên 1030/2 mật mã
Đứng trước mhững bài toán như vậy, người ta thường tìm cách cải thiện thuật toán bằng cách cung cấp thêm một số thông tin khác Chẳng hạn như thông tin 2 mật mã được phát sinh ra, mật mã nào tốt hơn (nghĩa là có khả năng mở kháo cao hơn)
Khi biết được độ tốt của các mật mã, ta sử dụng một phương pháp tìm kiếm thông minh hơn – người ta thường gọi là tìm kiếm theo kiểu leo núi (hill-climbing) Với tìm kiếm leo núi, ta tưởng tượng rằng không gian tìm kiếm của vấn đề bài toán
là một vùng đất gập ghềnh(landscape), có nhiều ngọn đồi cao thấp khác nhau Trong đó, ngọn đồi cao nhất của vùng đất này sẽ là lời giải tốt nhất và vị trí có độ cao càng lớn thì càng gần với lời với lời giải tốt nhất (độ cao đồng nghĩa với độ tốt của lời giải) Tìm kiếm theo kiểu leo núi có nghĩa là chúng ta phải phát sinh các lời giải sao cho càng về sau các lời giải càng tiến gần tới lời giải tốt nhất hơn Thao tác này cũng giống như thao tác leo núi vậy ( vì càng ngày càng lên cao hơn)
Kiểu giải quyết này vẫn còn gặp trở ngại cơ bản là, nếu vùng đất của chúng
ta có nhiều núi nhỏ khác bên cạnh ngọn núi cao nhất thì sẽ có khả năng thuật toán bị kẹt ở một ngọn núi nhỏ Do tư tưởng là càng ngày càng lên cao nên khi lên đến đỉnh một ngọn núi nhỏ thuật toán sẽ không thể đi tiếp được (vì không thể lên cao được nữa, muốn tìm đến ngọn núi cao hơn thì phải xuống núi hiện tại, mà xuống núi thì không đúng tư tưởng càng ngày càng lên cao)
Hã tuởng tượng một máy tính giải quyết vấn đề- bài toán theo kiểu leo núi là một nguời leo núi với tư tưởng „càng leo càng cao‟ Nếu chỉ có một người leo núi thì khả năng người đó bị „kẹt‟ trên một đỉnh núi thấp Nếu có nhiều người leo núi cùng leo ở nhiều điểm khác nhau thì khả năng có người leo đến đỉnh núi cao nhất sẽ cao hơn Càng nhiều nguời thì khả năng đến đỉnh núi cao nhất sẽ cao hơn Càng nhiều người thì khả năng đến đỉnh núi cao nhất sẽ cao hơn Tư tuởng này cũng chưa
có gì mới mẻ, đơn giản chỉ là dùng nhiều máy tính để chia việc ra mà thôi Hơn nữa, với không gian tìm kiếm cỡ 1030 như bài toán mở khoá, chúng ta phải cần bao nhiêu siêu máy tính ? Mà quan trọng hơn nữa, cho dù có nhiều người cùng lêo núi, nhưng
số lượng người leo núi quá ít so với số lượng núi thì khả năng tất cả người leo núi đều bị „kẹt‟ cũng vẫn còn cao
Từ đó người ta nảy ra ý nghĩ tạo ra nhiều thế hệ người leo núi ? nghĩa là, nếu toàn bộ người leo núi đầu tiên (giả sử 1000 người chẳng hạn) đều không đạt đến dỉnh núi cao nhất thì sẽ cho 1000 người leo núi khác tiếp tục leo Tuy nhiên, sẽ nảy sinh một vấn đề, có khả năng là trong nhóm người leo núi mới, có những người lại
đi leo lại những ngọn núi mà nhóm truớc đã leo rồi Ghi nhận lại những ngọn núi đã leo để những nhóm sau còn thừa hưỏng đuợc kết quả của nhóm truớc Tổng quat hơn : Hãy làm sao để những người giỏi nhất (leo cao nhất) trong số những người leo núi đầu tiên truyền lại „kinh nghiệm leo núi của mình cho 1000 người tiếp nữa để những nguời thế hệ sau để sao cho 1000 người „hậu duệ‟ này sẽ leo cao hơn họ Và nếu 1000 người sau lại thất bại, những người giỏi nhất trong số họ sẽ lại truyền kinh nghiệm của mình cho 1000 người tiếp nữa để những người thế hệ 3 này leo cao hơn
Trang 12nữa Tiến trình cứ thế tiếp tục cho đến lúc đến 1 thế hệ nào đó, có một người leo đến đỉnh núi cao nhất hoặc hết thoòi gian cho phép Trong truờng hợp hết thời gian cho phép thì trong toàn bộ các thế hệ, người nào leo cao nhất sẽ được lựa chọn
Trên đây là tư tưởng chính của thuật giải di truyền Thay vì phát sinh một lời giải, ban đầu ta phát sinh một lúc nhiều (thậm chí rất nhiều) lời giải cùng lúc Sau
đó, trong số lời giải tạo ra, chọn ra những lời giải tốt nhất để làm cơ sở phát sinh ra nhóm các lời giải sau với nguyên tắc „càng về sau‟ càng tốt hơn Quá trình tiếp diễn cho đến lúc tìm đưwcj một lời giải tối ưu
Đó là tư tưởng ban đầu của thuật giải di truyền Càng về sau, người ta càng hoàn thiện hơn phương pháp luận của ý tưởng này, dẫn đến sự ra đời của một hệ thống hoàn chỉnh các phương pháp, nguyên lý dùng trong thuật giải di truyền
1.1.4 Một số ứng dụng nổi bật của thuật giải di truyền
1.1 3.3 Ứng dụng trong ngành khai thác dầu khí
David E Goldberg là người đầu tiên đã dùng GA trong kỹ thuật Khi Goldberg đề nghị với J.H Holland bảo trợ ông thực hiện đề tài Com-puter Aided Gas Pipeline Operation using Genetic Algorithms and Rule learning, người sáng lập
ra GA đã phải dè dặt không chắc là Goldberg thành công Bởi vì vào đầu thập niên
80 thế kỷ XX, GA vẫn còn trong thời kỳ phôi thai, chỉ mới được chứng minh một phần bằng việc làm của J.H.Holland và De Jong, về mặt ứng dụng thực tế thì hoàn toàn chưa có gì đáng kể ngoài việc tối wu hoá một vài hàm số đơn giải Trước khi đến với tin học, Goldberg là một kỹ sư cơ khí đã chạm trán với nhiều khó khăn trong việc vận chuyển dầu khí trong các mạng lưới phân phối phức tạp Dọc theo hàng chục cây số đường ống dẫn của mạng lưới phân phối là những bơm, van và áp
kế để duy trì lưu lượng và vận tốc tối ưu cho mạng lưới chuyển vận dầu khí Vì phải điều chỉnh từng đơn vị bơm nên áp suất và lưu lượng tối ưu ở chỗ này thì lại quá thấp hay quá cao tại các nơi khác Nếu bơm và van không được điều chỉnh một cách hài hoà thì giao động sẽ xảy ra trong mạng lưới đồng thời tạo ra những chỗ hở tại các mối nối, khiến các điều hành viên không dám sử dụng bơm trong điều kiện tối ưu Tóm lại việc điều hành mạng lưới phân phối dầu khí là rất phức tạp
Năm 1985, David E Goldberg đã thành công trong việc dùng GA và với máy Apple II ông đã thực hiện được chương trình tin học sử dụng ngôn ngữ Pascal
để hiệu chỉnh mạng lưói phân phối dầu khí một cách tốt đẹp Từ đó GA đã thực sự góp phần vào việc giải quyết những vấn đề phức tạp
1.1.3.4 Ứng dụng trong lĩnh vực thiết kế
Trang 13Genetic Electric Co (GE) đã dùng GA trong việc yểm trợ chương trìnhtin học vẽ kỹ nghệ để tối ưu hoá việc thiết kế các bộ phận cho máy bay, tuabin nhà máy nhiệt điện và nhiều phụ tùng khác Động cơ cho máy bay mới nhất của Boeing đã được GA thiết kế với chương trình tin học về GA: Engineous Sau thành công này, Engineous đã được dùng để tự động hóa việc thiết kế cánh quạt tuabin nhà máy điện nguyên tử Cơ quan Naval Surface Weapons Center (Bethesda, maryland) đã dùng Engineous để thiết kế cánh quạt các tàu ngầm
1.1.3.5 Ứng dụng trong ngành khai thác hầm mỏ
Chuck Karr đã biến những hiểu biết về lý thuyết GA của mình trong luận án tiến sĩ thành những ứng dụng thực tế để chế tạo dụng cụ đo lường cho kỹ nghệ khai thác khoáng sản Bằng sự kết hợp GA và Fuzzy Logic, Chuck Karr đã điều chỉnh được độ PH của môi trường thực hiện được bộ kiểm soát để điều khiển trực thăng Nhiều ứng dụng khác đang được sử dụng trong các lĩnh vực như:
- Tìm lộ trình tối ưu cho người chào hàng (Travelling Saleman)
- Tìm vị trí tối ưu để đặt nhiều đài phát thanh để phục vụ cho nhiều thành phố lân cận
- Tìm địa điểm để khoan dầu trên đại dương Trên một vùng hàng chục ngàn cây số vuông, việc lựa chọn những điểm khoan dầu khí thích nghi không những giảm chi phí mà còn rút ngắn thời gian dò tìm
- Thiết kế máy biến thế ( transformer) cho các nhà máy điện
- Chọn công thức hoá học thích nghi để tạo sản phẩm thoả mãn yêu cầu của khách hàng
1.1.3.6 Ứng dụng trong lĩnh vực giao thông
Tìm điều kiện giao thông tối ưu là một trong những ứng dụng quan trọng Ví
dụ như việc hoạch định lộ trình xe chở hàng từ các kho đến các công trường sao cho nhanh và ngắn nhất Hoạch định chưong trình bảo trì các xa lộ dựa trên các phương tiện hiện hữu và thoả mãn nhịp độ giao thông cũng là đề tài được giải quyết bằng
GA Một số nhà nghiên cứu đang dùng GA để điều hành mạng lưới đèn báo hiệu tại các trục giao thông chính Hiện nay các đèn báo hiệu này hoạt động trên nguyên tắc: đèn chuyển từ xanh sang vàng và đỏ sau những khoảng thời gian nhất định Khuyết điểm của giải pháp này là nhiều khi đèn xanh trên một trục giao thông hàng phút nhưng không có xe, trong khi hàng chục chiếc khác đang đợi tại hướng đèn đỏ Nhiều cuộc thí nghiệm kết hợp GA và chíp điện tử nhận biết dạng hình để điều
Trang 14khiển đèn báo hiệu theo nhu cầu (Xem có xe hay không) thay vì thời gian như hiện nay
1.1.3.7 Ứng dụng trong sản xuất
Nhiều ứng dụng của GA tại các trung tâm sản xuất nhằm tăng cường khả năng sản xuất và chuyển giao thành phẩm, tránh việc di chuyển hàng hoá nhiều lần, tồn trữ quá lâu trong kho hay giữ các phưong tiện chuyển vận trong tình trạng chờ đợi
Sau đây là một ví dụ tại công ty cung cấp rượu bia Adolph Coors Company (ACC) ACC sản xuất nhiều loại rượu bia và bao bì dưới nhiều hình thức khác nhau, với tổng số mặt hàng trên dưới 500 loại Mỗi ngày ban tiếp nhận được hàng trăm đơn đặt hàng như số chỗ giao hàng có giới hạn nên không thoả mãn kịp thời các yêu cầu Trong nhiều trường hợp xe giao hàng vào được bến nhưng không có đủ hàng Hãng có 16 dây chuyền sản xuất, nếu sản phẩm không giao kịp thời thì phải giữ trong kho vừa “kẹt” vốn vừa mất nhiều chỗ trong kho hàng Làm thế nào để phối hợp sản xuất với nhu cầu khách hàng mỗi ngày/
Trước đây, việc này được giửi quyết trên nguyên tắc “ đến trước nhận trước, đến sau phải chờ” ( first come first serve) khiến cho dây chuyền sản xuất phải thay đổi nhiều kần trong ngày và hàng tồn kho ngày một nhiều Công ty đã sử dụng nhiều phương pháp giải quyết khác nhau nhung đều không thành công
Gần đây, GA đã được dùng và tìm để tìm ra giải pháp tối ưu kết hợp nhu cầu của khách hàng và khả năng sản xuất của công ty
Một ứng dụng khác là lập chương trình chạy máy tại cơ xuởng Một cơ xưởng thường gồm nhiều máy tiện, máy hàn, máy khoan, máy cắt, máy cán dập, v.v…Những máy này được dùng cho nhiều công tác khác nhau, ví dụ cán dập trước khi hàn, kế đến là khoan và đánh bóng ,v.v Làm thế nào để phối hợp yêu cầu của khách hàng với khả năng máy móc hiện có và nhất là với số chuyên viên có mặt trong ngày GA đã được dùng để kết hợp ba yếu tố trên để tạo sản phẩm tốt và lợi nhuận cao
1.2 Các nguyên tắc cơ bản của thuật giải di truyền [1]
1.2.1 Những tính chất cơ bản của thuật giải di truyền
a Các thành phần cơ bản của thuật giải di truyền
Trang 15Thuật giải 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 quan niện cho rằng, quá trình tiến hóa tự nhiên là quá trình 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 như 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ì nhờ 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, các thế hệ mới luôn được sinh ra để bổ sung 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 được với môi trường sẽ bị đào thải Sự thay đổi môi trường là động lực thúc đẩy quá trình 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
Các cá thể 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ế
có vai trò quan trọng như nhau trong tiến trình tiến hóa, dù rằng đột biến xảy ra với xác suất nhỏ hơn nhiều so với hiện tượng di truyền Các thuật toán tiến hóa, tuy có
những điểm khác biệt, nhưng đều mô phỏng bốn quá trình cơ bản: lai ghép, đột biến, sinh sản và chọn lọc tự nhiên
b Giải thuật di truyền
b1 Đầu vào (input):
Cho một quần thể các sinh vật (ta có thể xem như là một tập hợp các giải pháp),
ta chọn một số hữu hạn (n) các cá thể (giải pháp) trong quần thể (tập hợp) đó (ta có thể gọi đây là một mẫu thử ban đầu, cách chọn mẫu thử này tùy thuộc vào bài toán
cụ thể và ta có thể nhờ sự trợ giúp của kỹ thuật xác suất)
Tiếp đến ta chọn mô hình (model) để tượng trưng cho các giải pháp Các mô hình có thể là dãy (String) những số nhị phân : 1 và 0, thập phân và có thể là chữ hay hỗn hợp cả chữ và số
Chọn hàm số thích nghi để dùng làm tiêu chuẩn đánh giá các giải pháp
Các kỹ thuật lai tạo, đột biến, tạo sinh, chọn, và thời gian cho phép
b2 Đầu ra (output):
Trang 16Giải pháp tối ưu nhất
Sơ đồ tổng quát của thuật giải di truyền
Hình 1 Sơ đồ tổng quát của thuật giải di truyền b3 Sơ đồ tổng quát của GA
Bắt đầu
t = 0;
Khởi tạo P(t);
Tính độ thích nghi cho các cá thể thuộc P(t);
Khi (điều kiện dừng chưa thỏa mãn) lặp
Cá thể nào đạt đến lời giải tối
ưu chưa?
Trình bày lời giải
Chọn lọc Lai tạo
Xây dựng quần thể mới
Đột biến
Trang 17Hết lặp
Kết thúc
Trong lập trình tiến hóa, khi giải một bài toán đặt ra, cần tận dụng tối đa tri thức về bài toán đó để chương trình tiến hóa đạt được hiệu quả cao nhất có thể Việc tận dụng tri thức bài tóan có thể được thể hiện (1) qua việc xây dựng một cấu trúc
dữ liệu hợp lý sao cho việc xây dựg các phép toán di truyền được tự nhiên và hiệu quả nhất (2) hay qua việc sử dụng phương pháp đã và đang được sử dụng để giải bài toán này và kết hợp chúng với thuật giải di truyền (3) và cách tận dụng hay nhất là tận dụng cả 2 cách trên trong 1 chương trình tiến hóa; đây là cách được nhiều nhà
nghiên cứu ứng dụng lập trình tiến hóa sử dụng nhiều nhất
c Các tính chất đặc thù của thuật giải di truyền
1 GA lập luận mang tính chất ngẫu nhiên (stochastic), thay vì xác định (deterministic) như toán học giải tích
2 GA duyệt ứng viên theo các nguyên lý thích nghi và tiến hoá, sau đó chọn lấy giải pháp tương đối tốt nhất dựa trên hệ số thích nghi
3 GA không để ý đến chi tiết vấn đề, trái lại chỉ chú ý đến giải pháp, đặc biệt là dãy số tượng trưng cho giải pháp
4 GA rất thích hợp cho việc tìm kiếm giải đáp cho vấn đề, hay tìm điều kiện tối
ưu cho việc điều hành, và phân nhóm những giải pháp có được
d Ứng dụng của GA
GA được ứng dụng trong nhiều lĩnh vực khác nhau, từ khoa học tự nhiên đến khoa học nhân văn, từ kỹ thuật sang thương vụ và kinh tế tài chính Nhìn chung, những ứng dụng này có thể chia làm ba nhóm chính:
1 Tìm mô hình tối ưu cho vấn đề Tìm kiếm và tối ưu hóa giải pháp là đề tài thích hợp nhất của GA
2 Hoạch định quy trình sản xuất, lộ trình chuyển vận, cách bố trí các bộ phận trong môi trường Những ứng dụng loại này được dùng trong ngành giao thông, chế tạo sản phẩm, tiếp thị v v…
Trang 183 Chọn lựa các nhóm hay thành phần trong một tổ chức Chúng ta cũng có thể sắp xếp các ứng dụng theo lĩnh vực như: quản trị, kinh tế- tài chính, kỹ thuật, nghiên cứu và phát triển
1.2.2 Các bước trong việc áp dụng thuật giải di truyền
1.2.2.1 Quá trình lai ghép (phép lai)
Phép lai là quá trình hình thành nhiễm sắc thế mới trên cơ sở các nhiễm sắc thể cha mẹ, bằng cách ghép một hay nhiều đoạn gen của hai (hay nhiều) nhiễm sắc thể cha mẹ với nhau Phép lai xảy ra với các xác suất pc có thể mô phỏng như sau:
Chọn ngẫu nhiên hai (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 (ta gọi là điểm lai) Điểm lai chia các chuỗi cha mẹ dài m thành hai nhóm chuỗi con dài m1 và m2 Hai chuỗi nhiểm sắc thể con mới sẽ là m11+m22 và m21+m12
Đư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
1.2.2.2 Quá trình đột biến (phép độ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ẹ 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 phép lai pc Phép đột biến có thể mô phỏng như sau:
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, 1 ≤ k ≤ m
Thay đổi gen thứ k và trả cá thể này về quần thể để tham giá quá trình tiến hóa tiếp theo
1.2.2.3 Quá trình sinh sản và chọn lọc (phép tái sinh và phép chọn)
Phép tái sinh là quá trình trong đó các cá thể được sao chép trên cơ sở độ thích nghi của nó Độ thích nghi là một hàm gán một giá trị thực cho các cá thể trong quần thể Quá trình này có thể được mô phỏng như sau:
Tính độ thích nghi của từng cá thể trong quẩn thể hiện hành, lập bảng cộng dồn các giá trị thích nghi (theo số thứ tự gán cho từng cá thể) Giả sử quần
Trang 19thể có n cá thể Gọi độ thích nghi của cá thể thứ i là Fi, tổng dồn thứ i là Fti, tổng độ thích nghi của toàn quần thể là Fm
Tạo một số ngẫu nhiên F trong đoạn từ 0 đến Fm
Chọn cá thể thứ k đầu tiên thỏa mãn F ≥ Ftk đưa vào quần thể của thế hệ mới Phép chọn là quá trình loại bỏ các cá thể xấu trong quần thể để chỉ giữ lại trong quần thể các cá thể tốt Phép chọn có thể được mô phỏng như sau:
Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần
Loại bỏ các cá thể cuối dãy để chỉ giữ lại n cá thể tốt nhất Ở đây, tả giả sử quần thể có kích thước cố định n
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 sau:
Một cấu trúc dữ liệu I 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 eval(.) đóng vai trò môi trường,
Các phép toán di truyền như đã mô phỏng ở trên,
Và các tham số thuật giải di truyền sử dụng (kích thước quần thể, xác suất lai, đột biến,….)
1.2.3 Các phương pháp mã hoá trong thuật giải di truyền
* Nguyên lý về xác định cấu trúc dữ liệu
Để có thể giải bài toán bằng thuật giải di truyền cần „Gen hoá‟ cấu trúc dữ liệu của bài toán Đây là thao tác quan trọng nhất (không chỉ riêng với vấn đề bài toán được giải bằng thuật giải di truyền) là phải biết chọn một cấu trúc dữ liệu (CTDL) phù hợp Để giải vấn đề bài toán bằng thuật giải di truyền ta thường chọn
sử dụng một trong 3 loại CTDL sau : Chuỗi nhị phân; chuỗi số thực và cấu trúc cây Trong đó cấu trúc chuỗi nhị phân và chuỗi số thực thường được sử dụng hơn
1 2.4.1 Biễu diễn gen bằng chuỗi nhị phân
Mọi cấu trúc dữ liệu trên máy tính về máy tính cuối cùng cũng được chuyển
về và thể hiện bởi các chuỗi nhị phân (từ số nguyên, số thực, âm thanh ) Tuy nhiên quá trình đổi sang chuỗi nhị phân được thực hiện ngầm bởi trình biên dịch của máy
Trang 20tính Ở đây, chúng ta sử dụng chuỗi nhị phân một cách tường minh để thể hiện cấu trúc „gen „ của một cá thể và để có thể thực hiện các thao tác lai ghép, đột biến trên cấu trúc này
Thông thường có rất nhiều cách để chuyển đổi dữ liệu của bài toán về chuỗi nhị phân Tuy nhiên, bạn cần lưu ý chọn cách biễu diễn hiệu quả nhất theo quy tắc sau :
* Quy tắc biễu diễn gen qua chuỗi nhị phân : Chọn chuỗi nhị phân ngắn nhất
nhưng đủ thể hiện được tất cả kiểu gen
Thực chất, đây chính là một quy tắc cũ mà ta đã biết khi bàn về chọn kiểu biến Lấy ví dụ, để chuyển biến X nguyên có giá trị trong đoạn [32, 63] về chuỗi nhị phân, có thể bạn sẽ chọn dùng một chuỗi nhị phân dài 6 bit (vì 6 bit đủ để biễu diễn một số trong đoạn [0, 63]) Dĩ nhiên, chọn chiều dài 6 bit là đúng nhưng chưa tối
ưu Thực chất, một con số trong đoạn [32, 63] chỉ cần 5 bit là đủ Vì với 5 bit, ta có thể biểu diễn được một số Y trong đoạn [0, 31] Cụ thể Y=X-32 Và thay vì biểu diễn trực tiếp số X, ta biểu diễn thông qua trung gian Y Khi đã có Y ta sẽ dễ dàng suy ra X thông qua cách tính gián tiếp trên
Để biểu diễn chuỗi nhị phân, ta thuờng dùng các cách sau : Mảng Byte, mảng Bit biểu diễn bằng mảng Integer
1 2.4.1.1 Mảng byte
Đối với mảng byte, mỗi byte chính là một bit và chỉ nhận 2 giá trị 0 và 1 Nếu byte trong mảng có giá trị khác, chương tình sẽ xem đó là lỗi trầm trọng Cách biễu diễn này có ưu điểm là truy xuất nhanh hơn, nhưng lượng bộ nhớ sẽ tốn gấp 8 lần so với phương pháp không nén (Ví 1 byte gồm 8 bit, nhưng ta chỉ dùng 1 bit nên 7 bit còn lại sẽ lãng phí)
* Trong PASCAL : TYPE Tgen = ARRAY[0 N-1] OF BYTE
* Trong C : typed unsigned char Cgen[N]
Với N là chiều dài gen của cá thể
1 2.4.1.2 Mảng byte nén :
Đối với kiểu biểu diễn này, một byte trong mảng sẽ biểu diễn cho 8 bit của chuỗi nhị phân Bít 0 đến bít 7 sẽ nằm trong byte thứ 0, bit 8 đến 15 sẽ nằm trong byte thứ nhất, và cứ thế Một cách tổng quát, bít thứ n sẽ nằm trong byte thứ (n DIV 8) Trong đó (DIV là toán tử chia lấy phần nguyên)
Trang 21Byte 1 Byte 0
1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Vị trí bit trong chuỗi
Chiều tăng của dịa chỉ bộ nhớ
Hình 2 Mảng byte nén
Kiểu biểu diễn này là kiểu biểu diễn ít tốn kém bộ nhớ nhất nhưng nguợc lại, thao tác truy xuất lại chậm hơn rất nhiều so với phuơng pháp mảng byte Để lấy đuợc một bit thứ n, ta phải thực hiện 2 thao tác Đầu tiên là xác định bit đó nằm ở byte thứ mấy (bằng cách thực hiện phép chia n DIV 8), kế đến là xác định xem bit đó nằm ở vị trí bit htứ mấy trong byte vừa lấy ra ( bằng phép chia n MOD 8), bước cuói cùng là thực hiện một vài thao tác trên bit để lấy ra giá trị cần tính Cho dù có tối ưu bằng cách nào đi chăng nữa việc truy xuất trên mảng bit luôn chậm hơn rất nhiều so với thao tác trên mảng byte Để thực hiện thật nhanh 3 thao tác này, ta dùng các thao tác trên bit (hai phép toán AND, OR và dịch trái , dịch phải trên bit)
a Thực hiện phép chia 8, có thể đuợc biểu diễn bằng một phép dịch phải bit như saul :
* Trong PASCAL (P) : vi_tri_byte = n SHR 3
* Trong TURBO C (C): vi_tri_byte = n>>3
b Thực hiện phép chia 8 lấy phần dư , có thể được biểu diễn bằng một phép end như sau :
Trang 22TYPE Tgen=ARRAY[0 N-1] OF BYTE
C : typed unsigned char Cgen[N]
Trang 23Case 6 : Kq=OneGen[vi_tri_byte] & 64 ; break ;
Case 7 : Kq=OneGen[vi_tri_byte] & 128 ; break ; }
Để ghi vào một bit bất kỳ trong mảng byte sau khi đã biết vị trí byte và vị trí bit trong byte, ta thực hiện như sau :
0 : Kq=OneGen[vi_tri_byte] AND (NOT 1) ;
1 : Kq=OneGen[vi_tri_byte] AND (NOT 2) ;
2 : Kq=OneGen[vi_tri_byte] AND (NOT 4) ;
Trang 243 : Kq=OneGen[vi_tri_byte] AND (NOT 8) ;
4 : Kq=OneGen[vi_tri_byte] AND (NOT 16) ;
5 : Kq=OneGen[vi_tri_byte] AND (NOT 32) ;
6 : Kq=OneGen[vi_tri_byte] AND (NOT 64) ;
7 : Kq=OneGen[vi_tri_byte] AND (NOT 128) ; END ;
else
switch (vi_tri_bit)
{
Trang 25Case 0 : OneGen[vi_tri_byte]& (-1) break ;
Case 1 : OneGen[vi_tri_byte]& (-2) break ;
Case 2 : OneGen[vi_tri_byte]& (-4) break ;
Case 3 : OneGen[vi_tri_byte] & (-8) break ;
Case 4 : OneGen[vi_tri_byte]& (-16) break ;
Case 5 : OneGen[vi_tri_byte] & (-32) break ;
Case 6 : OneGen[vi_tri_byte] & (-64) break ;
Case 7 : OneGen[vi_tri_byte] & (-128) break ;
}
1 2.4.1.3 Mảng Integer nén để tối ưu truy xuất
Trong các máy tính ngày nay, thông thường thì đối tượng truy xuất hiệu quả nhất không còn là byte nữa mà là một bội số của byte Đơn vị truy xuất hiệu quả nhất được gọi là độ dài từ (word length ) Hiện nay, các máy hầu hết đều có độ dài
từ là 4,16 hoặc 32 byte Do đó nếu ta tổ chức chuỗi nhị phân dưới dạng byte sẽ làm chậm phần nào tốc độ truy xuất Để hiệu quả hơn nữa, ta sử dụng mảng kiểu Integer
có độ dài phụ thuộc vào độ dài từ của máy tính mà trình biên dịch có thể nhận biết được Chẳng hạn các version PASCAL, C trên hệ điều hành DOS, kích thước của kiểu Integer là 2 byte Trong khi đó với các version PASCAL, C trên Window 9x như Delphi, Visual C ++ thì độ dài của kiểu Integer là 4 byte Do đó, để chương
trình của chúng ta chạy tố trên nhiều máy tính khác nhau, bạn nên dùng hàm sizeof (<tênkiểu>) Hàm này sẽ trả ra độ dài của dữ liệu ta đưa vào
Khi dùng mảng Integer với hàm sizeof, bạn cần thực hiện một số điều chỉnh nhỏ với thao tác lấy một bit ra và thao tác ghi một bit vào
1.2.4.1.4 Biểu diễn số thực bằng chuỗi nhị phân
Tuy có nhiều chọn lựa nhưng thông thường, để biểu diễn một số thực x, người ta chỉ dùng công thức đơn giản, tổng quát sau :
Giả sử : ta muốn biểu diễn số thực x nằm trong miền [min, max] bằng một chuỗi nhị phân A dài L bit Lúc đó, ta sẽ chia miền [min, max] (lượng hoá) thành 2L-1 vùng Trong đó, kích thước một vùng là :
Trang 26minmax
Giá trị của số thực x được biểu diễn qua chuỗi nhị phân sẽ được tính như sau :
X=min + Decimal (<A>)*g Trong đó Decimal(<A>) là hàm để tính giá trị thập phân nguyên dương của chuỗi nhị phân A theo quy tắc đếm Hàm này được tính theo công thức sau :
1.2.4.2 Biểu diễn Gen bằng chuỗi số thực :
Việc biểu diễn gen bằng chuỗi số nhị phân đôi lúc làm cho kiểu gen của cá thể trở nên quá phức tạp Dẫn đến việc thi hành các thao tác trên gen trở nên kém hiệu quả Khi đó người ta sẽ chọn biễu diễn kiểu gen dưới dạng một chuỗi số thực
Quy tắc biểu diễn gen bằng chuỗi số thực : Biểu diễn kiểu gen bằng số
thực.phải đảm bảo không gian đối với từng thành phần gen
Quy tắc này lưu ý chúng ta phải tiết kiệm về mặt không gian bộ nhớ đối với từng thành phần gen Giả sử nghiệm của bài toán được cấu thành từ 3 thành phần, thành phần X thực có giá trị trong khoảng [1.0, 2.0], thành phần Y nguyên trong đoạn [0, 15] và thành phần Z trong khoảng [5, 8] Thì chúng ta rất không nên chọn biễu diễn kiểu gen bằng một chuỗi 3 thành phần số thực Vì ít nhất mỗi số thực phải phải được biểu diễn bằng 6 byte Chỉ với 3 số thực, ta đã tốn hết 18 byte Như vậy với trường hợp cụ thể này, ta nên chọn biễu diễn bằng chuỗi nhị phân, trong đó dùng khoảng 10 bit cho thành phần Y và 2 bit cho thành phần Z Tổng cộng chỉ chiếm có 16 bit = 2 byte Chúng ta tiết kiệm được rất nhiều bộ nhớ
Trang 27Chuỗi số thực được biễu diễn thông qua mảng số thực Cách thể hiện như sau :
P
Type Tgen = ARRAY[0 N-1] OF real ;
C
Typeder float Cgen[N] ;
Trong đó N là hằng số quy định kích thước gen
1.2.4.3 Cấu trúc cây
Cấu trúc cây thường được dùng trong các trường hợp bản thân CTDL của bài toán cũng có dạng cây Loại cây thường được sử dụng trong giải thuật di truyền là dạng cây 2 nhánh ( Ở đây chúng tôi dùng chữ hai nhánh để phân biệt với loại cây nhị phân, thường dùng trong sắp xếp và tìm kiếm) Để hiểu được cấu trúc cây , bạn cần có kiến thức về con trỏ
* Nguyên lý về xác định tính thích nghi : Tính tốt của một cá thể (lời giải) trong
một quần thể chỉ là một cơ sở để xác định tính thích nghi của cá thể (lời giải) đó Người ta vẫn xem độ tốt của lời giải là một yếu tố căn bản để xác định tính thích nghi của lời giải Thông thường, độ thích nghi của lời giải cũng chính là xác suất để
cá thể đó được chọn lọc hoặc lai ghép khi tiến hành sinh ra thế hệ kế tiếp Ta sẽ lần lượt tìm hiểu 3 phương pháp để xác định tính thích nghi của một cá thể
1.2.4.4 Độ thích nghi tiêu chuẩn :
Hàm mục tiêu là hàm dùng để đánh giá độ tốt của một lời giải hoặc cá thể Hàm mục tiêu nhận một tham số là gen của một cá thể và trả ra một số thực Tuỳ theo giá trị của số thực này mà ta biết độ tốt của cá thể đó (chẳng hạn với bài toán tìm cực đại thì giá trị trả ra càng lớn thì cá thể càng tốt, và ngược lại, với bài toán tìm cực tiểu thì giá trị trả ra càng nhỏ càng tốt)
Giả sử trong một thế hệ có N cá thể, cá thể thứ i được ký hiệu là ai Hàm mục tiêu là hàm G Vậy độ thích nghi của một cá thể ai tính theo độ thích nghi tiêu chuẩn
là :
Trang 28
N
j i
i i
a G
a G a
F
1
)(
)()
(
Chẳng hạn, xét một thế hệ gồm 6 cá thể với độ tốt (giá trị càng lớn thì cá thể càng tốt) lần lượt cho theo bảng sau :
STT Độ tốt G(ai) Theo công thức trên tổng
tất
cả G của 6 phần tử là : 17.5
Như vậy, độ thích nghi của phần tử ai :
F(ai) = 5.3 / 17.5 0.303
Độ thích nghi của phần tử
a2 : F(a2)= 2.1 / 17.5 =0.12
Ta có bảng kết quả cuối cùng như sau :
Trang 29Nhận xét : Độ thích nghi luôn có giá trị biến thiên trong khoảng [0, 1] Hơn nữa, vì
độ thích nghi sẽ ứng với khả năng được chọn lọc trong việc sinh ra thế hệ saunên người ta thường chọn cách tính sao cho độ thích nghi cuối cùng là một xác suất, nghĩa là tổng độ thích nghi của cá thể phải bằng 1 Tuy nhiên, do sai số trong máy tính nên khi lấy tổng độ thích nghi của các cá thể ta chỉ được một giá trị xấp xỉ 1 Theo công thức trên dộ thích nghi tiêu chuẩn là một xác suất
STT Độ tốt G(ai) Độ thích nghi F(ai)
Cá thể 3, 4 sẽ tạo nên hiện tượng di truyền cục bộ
Phương pháp xác định độ thích nghi xếp hạng sẽ loại bỏ hiện tuợng di truyền cục bộ này Phương pháp này không làm việc trên giá trị độ lớn của hàm mục tiêu G
mà chỉ làm việc trên thứ tự của các cá thể trên quần thể sau khi đã sắp xếp các cá thể theo giá trị hàm mục tiêu G Chính vì vậy mà ta gọi là độ thích nghi xếp hạng.Phuơng pháp này sẽ cho ta linh động đặt một trọng số để xác định sự tập trung
Trang 30của độ thích nghi lên các cá thể có độ tốt cao, mà vẫn luôn đảm bảo được quy luật :
Cá thể có độ thích nghi càng cao thì xác suất dược tồn tại và di truyền càng cao
Một cách ngắn gọn, ta có độ thích nghi (hay xác suất được chọn)của cá thể thứ i được tính theo công thức :
1
) 1 (
* ) ( i
p p
i F
Với p là một hằng số trong đoạn [0,1]
Công thức trên được xây dựng trên quy tắc :
Sắp xếp các cá thể của quần thể giảm dần theo giá trị của hàm mục tiêu
Chọn một con số p trong khoảng [0,1] Đây chính là trọng số xác định độ
„hút‟ của các cá thể tốt
Mỗi lượt chọn chỉ chọn một cá thể Trong một luợt chọn, lần luợt xét các cá thể theo thứ tự đã sắp xếp Nếu xét đến cá thể thứ i mà cá thể đó đuợc chọn thì lượt chọn kết thúc, ta thực hiện lượt chọn kế tiếp Ngược lại, nếu cá thể thứ i không được chọn, ta xét đến cá thể thứ i+1 Ta quy ước rằng, khi đã xét đến một cá thể, thì xác suất để chọn cá thể đó (trong thao tác chọn lọc hoặc lai tạo) luôn là p Rất hiển nhiên, khi đã xét đến một cá thể thì xác suất không thể chọn cá thể đó sẽ là 1-p
1.2.4.5 Độ thích nghi xếp hạng dựa trên độ phân ly
Hiện nay, khi xác định tính thích nghi của một cá thể (hay lời giải) ta chỉ mới quan tâm tới độ tốt của cá thể đó mà thôi, nghĩa là ta chỉ sắp hạng theo độ tốt, mà chưa quan tâm đến mối quan hệ giữa cá thể đó đối với quần thể xung quanh nó Như vậy, nhưũng cá thể ngay từ đầu có chất lượng rất kém (phân ly quá xa so với những cá thể chất lượng tương đối đều nhau) đều có xu hướng bị loại bỏ ngay Mà những cá thể đặc biệt này, trong một số trường hợp vẫn có tiềm tàng đến lời giải Trong tự nhiên, các cá thể trông có vẻ không thích nghi trong tự nhiên vãn sống sót khá tốt trong các vùng sinh thái nằm ngoài vùng của cá thể có độ thích nghi tương đối tốt Chính vì vậy, khi sắp hạng ; để các cá thể có độ thích nghi rất thấp (phân ly) vẫn có cơ hội phát triễn, người ta đưa thêm yếu tố độ phân ly của một cá thể
Một công thức để đo độ phân ly của một cá thể là :
j i a G a G a
1)
(
1
Trang 31Với G(ai) là hàm mục tiêu, đánh giá độ tốt của cá thể thứ i N là số cá thể trong quần thể hiện đang xét Giá trị của hàm P(ai) càng bé, cá thể càng có độ phân
ly mạnh
Như vậy, cho đến đây, để tính toán sắp hạng cho các cá thể trong quần thể, ta sắp hạng riêng biệt theo độ tốt (theo kết quả hàm G(ai) và theo độ phân ly ( theo kết quả hàm P(ai)), sau đó cộng hai hạng này lại Rồi từ đó rút ra hạng mới theo tổng số này, tổng càng nhỏ hạng càng cao (tổng nhỏ nhất sẽ là hạng 1) Sau khi đã có hạng tổng hợp, bạn có thể xác định độ thích nghi theo công thức tiêu chuẩn hoặc xếp hạng đã trình bày ở trên
Độ thích nghi là một giá trị, được xây dựng trên hàm mục tiêu Khi xây dựng cách tính độ thích nghi ta đã xem xét mọi khả năng để ngay cả những cá thể trông
có vẻ không tốt (giá trị hàm mục tiêu thấp) cũng có thể có độ thích nghi cao Do đó, bạn nên luôn nhớ rằng độ thích nghi quy định khả năng được chọn lọc vào quá trình sinh sản thế hệ sau Độ thích nghi sẽ đồng biến với khả năng được lựa chọn
Trang 321.2.4.6 Quy tắc chọn lọc xén
Trong chọn lọc xén, ta sắp xếp thứ tự quần thể theo độ thích nghi Cá thể có
độ thích nghi cao nhất sẽ nằm ở đầu danh sách Sau đó ta xác định một ngưỡng xén
Trunc là một tỉ lệ phần trăm Giá trị Trunc sẽ xác định bao nhiêu phần trăm cá thể
tốt nhất trong quần thể sẽ được chọn lọc để tham gia vào quá trình sinh sản ra thế hệ mới Những cá thể nằm ngoài ngưỡng xén này sẽ không được chọn lọc
Lưu ý rằng, ngưỡng xén Trunc không nhất thiết phải là hằng số trong tất cả các thế hệ của bài toán mà có thể biến đổi phụ thuộc vào mức độ thích nghi chung của quần thể và môi trường Ví dụ, với ngưỡng xén Trunc=50% thì chỉ có các cá thể
có số thứ tự 1,2 trong bảng sau được chọn
độ thích nghi thấp càng có khả năng được chọn lọc
Nguyên lý về kết hợp các lời giải (cá thể) : Bản chất của việc tạo sinh các lời giải (cá thể) mới trong thuật giải di truyền là sự kết hợp các lời giải (cá thể) cha mẹ bằng cách chọn toán tử mô phỏng thao tác lai ghép trong sinh học 1.2.4.8 Quy tắc lai ghép đơn điểm
Trang 33Lai ghép đơn điểm là dạng lai ghép đơn giản nhất, có thể áp dụng cả đối với kiểu dữ liệu chuỗi nhị phân lẫn số thực Để thực hiện lai ghép đơn điểm, đầu tiên ta chọn ra 2 cá thể cho mẹ A, B Hai cá thể này được lấy ra từ tập cá thể đã được chọn bằng các phương pháp như xén, Kế đến, ta xác định một vị trí lai ghép k ngẫu nhiên thuộc đoạn [2,N-1] với N là chiều dài gen Điểm k này sẽ chia gen của cá thể cha mẹ A thành A1, A2 và B thành B1, B2 Hai gen mới được tạo ra bằng cách ghép phần đầu của cá thể A với phần cuối của cá thể B (A1B2) và ngược lại, ghép phần đầu của cá thể B với phần cuối của cá thể A (B1A2)
Ví dụ, giả sử 2 cá thể được lựa chọn để lai ghép có gen là 2 chuỗi nhị phân sau :
1.2.4.9 Lai ghép đa điểm
Lai ghép đa điểm là một dạng tổng quát hơn lai ghép đơn điểm Trong lai ghép đơn điểm, thay vì chỉ chọn một điểm lai ghép, ta chọn nhiều điểm lai ghép k1,
k2, ,km m điểm lai ghép này sẽ chia gen của 2 cá thể cha mẹ A, B thành m+1 đoạn Hai gen mới sẽ được tạo ra bằng cách ghép các đoạn này của 2 gen A,B theo quy
Trang 34tắc : Các đoạn ở vị trí lẻ được giữ nguyên, các đoạn ở vị trí chẵn được hoán chuyển với nhau (như ở lai ghép đơn điểm)
Ví dụ : Giả sử 2 cá thể được lựa chọn để lai ghép có gen là 2 chuỗi nhị phân sau :
Lai ghép mặt nạ là hình thức tổng quát nhất của lai ghép Trong lai ghép mặt
nạ, liên kết với 2 cá thể cha mẹ A, B là 2 mặt nạ mA, mB Hai mặt nạ này thực chất cũng chỉ là một chuỗi nhị phân có cùng chiều dài với A ,B Mặt nạ này có thể được phát sinh một cách ngẫu nhiên khi tiến hành lai ghép hoặc thừa kế từ thế hệ trước.Giá trị bit của mặt nạ sẽ quyết định thành phần gen nào của cá thể con sẽ được trích ra từ gen của cha mẹ Quy tắc này như sau :
Giá trị bit thứ i trong mặt nạ có giá trị 1 sẽ cho biết : Thành phần thứ i trong
gen của cá thể con được sao chép từ thành phần gen của cá thể cha mẹ liên kết với mặt nạ này
Trang 35 ngược lại, giá trị bit thứ i trong mặt nạ có giá trị 0 sẽ cho biết: Thành phần thứ i trong gen của cá thể con sẽ được sao chép từ thành phần gen của cha
mẹ không liên kết với mặt nạ này
Ví dụ , giả sử hai cá thể được chọn lựa lai ghép có gen là hai chuỗi nhị phân ứng với
2 mặt nạ như hình sau :
Cá thể con tạo bởi mặt nạ mA là :
Cá thể con tạo bởi mặt nạ mB là :
Trang 36Về nguyên tắc, nặt nạ mA và mB là độc lập với nhau Tuy nhiên, trên thực tế, người
ta thường dùng cặp mặt nạ đảo nhau, nghĩa là mA = NOT mB Ta cũng dễ nhận ra rằng lai ghép đơn điểm với vị trí lai ghép là k, ta chỉ việc dùng mặt nạ mA có k-1 bit đầu là 1 và các bít còn lại là 0 và mặt nạ mB= NOT mA
1.2.4.11 Quy tắc tạo sinh đường :
Trong tạo sinh đường, giá trị gen của thế hệ sau được chọn nằm trong khoảng giữa giá trị gen của 2 cá thể bố mẹ Nếu 2 cá thể cha mẹ lần lựơt là A và B,
cá thể con là C thì thành phần gen thứ i của con cháu được xác định bằng công thức sau :
i i i
i
C min( , ) Với Ai, Bi, Ci lần lượt là thành phần gen thứ i của cha mẹ A, B và cá thể con
C
là hệ số tỷ lệ, được chọn ngẫu nhiên trong đoạn [0,1]
Chú ý : Phương pháp tạo sinh chỉ áp dụng đối với kiểu dữ liệu là chuỗi số thực
(không phải chuỗi nhị phân) Ta có thể được mở rộng với giá trị trong đoạn d,1+d] với d ≥ 0
[-Ví dụ : Giả sử 2 cá thể được lựa chọn để lai ghép có gen là hai chuỗi số thực sau :
Trị số α được phát sinh ngẫu nhiên là 0.35
Thành phần gen đầu tiên của cá thể con là :
Trang 37C3=5+0.35*(34-5)=15.15
Vậy kiểu gen của cá thể con C là : 50.85 11.35 15.15
Như vậy,với quy tắc tạo sinh này,hai cá thể bố mẹ có thể sinh ra nhiều hơn 2 con cháu (chỉ cần phát sinh nhiều số α -mỗi số α sẽ xác định một cá thể con)
Tại sao lại là tạo sinh đường ?
Sở dĩ có tên gọi này là vì các cá thể con cháu sinh ra “đường thẳng‟‟nối giữa cha mẹ chúng.Giả sử hai cá thể cha mẹ A,B có kiểu gen chỉ co 2 thành phần.Kiểu gen của A,B có thể được biẻu diễn như hai điểm PA và PB trên mặt phẳng với thành phần đầu tiên ứng với trục x,thành phần thứ hai ứng với trục y.Các cá thể con cháu được sinh ra trên đoạn thẳng PA PB (ứng với giá trị d=0) hoặc nằm trên cả đường thẳng đi qua hai điểm PA,PB (ứng với giá trị d >0)
Nếu kiểu gen của hai cá thể cha mẹ có 3 thành phần thì các con cháu sẽ nằm trên đoạn thẳng trong không gian 3-chiều nối giữa 2 điểm ứg với hai cá thể cha mẹ Điều này cũng đúng khi kiểu gen của cha mẹ có n thành phần, lúc đó,các cá thể con sẽ nằm trên đường thẳng tổng quát trong không gian n-chiều nối giữa haidiểm ưng với hai cá thể cha mẹ
1.2.4.12.Quy tắc tạo sinh tức thời
Tạo sinh tức thời là một dạng mở rộng của tạo sinh đường, trong đó,cách tạo ra cá thể con cũng tương tự như tạo sinh đường nhưng chỉ khác ở điểm là phương pháp
PB
Trang 38này dùng một dãy giá trị α để tạo ra các cá thể con.Công thức xác định thành phần thứ i của con cháu là :
C i = min ( A i , B i ) + α i │ B i – A i │
Với Ai, Bi, Ci, lần lượt là thành phần gen thứ i của cha mẹ A, B và cá thể con C
αi là hệ số tỷ lệ thứ i, được chọn ngẫu nhiên trong đoạn [-d,1+d]
Ví dụ : giả sử hai cá thể được lựa chọn để lai ghép có gen là hai chuỗi số thực sau :
Vậy kiểu gen của cá thể con là : C 67.5 20.8 13.7
Với phương pháp này, hai cá thể bố mẹ có thể sinh ra nhiều hơn 2 con cháu (chỉ cần phát sinh nhiều dãy số α-mỗi dãy số α sẽ xác định một cá thể con)
1.2.4.13 Nguyên lý về đột biến lời giải
Để mở rộng kết quả tìm kiếm được quy định bởi thế hệ cá thể (lời giải) trước, cần áp dụng các toán tử thay đổi giá trị cá thể (lời giải) mô phỏng hiện tượng đột biến sinh học
a Quy tắc đột biến nhị phân
Trang 39Đối với các cá thể kiểu chuỗi nhị phân thì đột biến chỉ đơn giản là lật giá trị của một bit nhị phân (từ 0 đổi thành 1 và từ 1 đổi thành 0) ngẫu nhiên nào đó trong gen
Thông thường thì đột biến diễn ra với xác suất thấp (ta gọi xác suất này là xác suất đột biến) nên người ta chỉ cho đột biến trên 1 thành phần gen là tối đa (Việc chọn đột biến trên nhiều thành phần gen là thừa vì xác suất để có thể diễn
ra đột biến trên 2 gen =(xác suất đột biến)2, là một xác suất rất nhỏ)
Giả sử rằng cá thể ban đầu là A có chiều dài gen là N
Quá trình đột biến trên A diễn ra như sau :
Hình sau đây cho thấy một ví dụ về đột biến trên trị nhị phân của một gen có chiều dài 11, vị trí đột biến là 7
Tuy chỉ đột biến có một bit nhị phân trong chuỗi nhị phân biễu diễn gen của
cá thể nhưng hiệu quả của nó có thể rất lớn tuỳ thuộc vào loại dữ liệu mà chuỗi nhị phân đó mã hoá Bảng sau đây cho thấy ảnh hưởng của đột biến (trên một bit) ứng với mã hoá số học và logarit theo phương pháp binary và gray
Trang 40Đột biến trị thực (áp dụng đối với nhiều kiểu gen là chuỗi số thực) phức tạp hơn so với đột biến trị nhị phân Thực sự có vô số cách để đột biến trên trị thực Tuy nhiên, bằng công cụ toán học, người ta đã đưa ra và chứng minh được tính hiệu quả của phương pháp đột biến sau đây
Nếu gọi A là giá trị của thành phần gen sẽ bị đột biến, thì giá trị của A‟ của thành phần gen đó sau khi đột biến sẽ được xác định bằng công thức
A‟ = A+ S*range*delta
Trong đó :
S=-1 hoặc S=1 với cùng xác suất 0.5
Range <= độ lớn của miền xác định của thành phần gen bị đột biến >*0.5
số a như sau :
10100000000000000000
Giá trị delta=1*2-1+0*2-2+1*2-3+ =0.625
Giá trị s được xác định một cách ngẫu nhiên : s=-1
Giá trị mới của thành phần gen bị đột biến sẽ là :
A‟=2.1+ (-1)*0.6*0.625=1.725
Một cách tổng quát, công thức trên có thể đuợc thực hiện bằng đoạn mã giả sau :