Chương 1 THUẬT GIẢI DI TRUYỀN
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 d
truyền
1.3.1. Mối liờn hệ giữa thuật giải di truyền và sự tiến hoỏ
Cấu trỳc dữ liệu + giải thuật di truyền = chương trỡnh tiến húa.
Thuật ngữ “chương trỡnh tiến húa” trong cụng thức trờn là khỏi niện dựng để chỉ cỏc chương trỡnh mỏy tớnh cú sử dụng thuật toỏn tỡm kiếm và tối ưu húa dựa trờn nguyờn lý tiến húa tự nhiờn. Dưới đõy là một số thuật toỏn tiến húa đó được cụng bố.
Quy hoạch tiến húa – EP, do D.B.Pogel đề xuất. Cú thể diển tả EP đơn giản như sau: Cho một lớp cỏc phương phỏp khả dĩ giải quyết được một (số) phần vấn đề. Dựa vào quy luật tiến húa, tỡm một phương phỏp liờn hợp đủ khả năng giải quyết trọn vẹn vấn đề đú.
Chiến lược tiến húa, do T.Baeck, F.H.Hofmeister và H.P.Schwefel đề xuất. Thuật toỏn này dựa trờn một số chiến lược ban đầu, tiến húa để tạo ra những chiến lược mới phự hợp với mụi trường thực tế một cỏch tốt nhất.
Giải thuật di truyền - GA, do D.E.Goldberg đề xuất, được L.Davis và Z.Michalevicz phỏt triển.
Genetic Algorithms tạm dịch là Thuật giải di truyền (ngắn gọn gọi là GA) bắt nguồn từ ý niệm tiến húa để tồn tại và phỏt triển trong tự nhiờn. Những kinh nghiệm thực tế của con người đó là những ý niệm cơ bản cho lý thuyết mới để giải quyết vấn đề. Lý thuyết này do Jonh Henry Holland đề xướng vào giữa thập niờn 70 thế kỹ XX.
Núi chung GA là phương thức giả quyết vấn đề bắt chước lối hành xử của con người để tồn tại và phỏt triển. Nú giỳp tỡm ra giải phỏp tối ưu hay tốt nhất trong điều kiện thời gian và khụng gian cho phộp. GA giải quyết được vấn đề trờn mỏy vi tớnh nhờ vào chương trỡnh tin học để thể hiện những ý tưởng cơ bản nờu trờn. Khụng giống như phương phỏp giải tớch dựa trờn cỏc cụng thức toỏn học hay phương phỏp suy luận dựa trờn suy luận của cỏc chuyờn gia chỉ để ý đến một số cú giới hạn cỏc giải phỏp. GA xột đến toàn bộ cỏc giải phỏp, bằng cỏch xột trước nhất một số giải phỏp sau đú loại bỏ những thành phần khụng thớch hợp và chọn những thành phần
thớch nghi hơn để tạo sinh và biến húa nhằm mục đớch tạo ra nhiều giải phỏp mới cú hệ số thớch nghi ngày càng cao.
Do đú khi phải giải quyết vấn đề bằng GA, chỳng ta phải thụng qua cỏc giai đoạn sau:
1. 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 giữa chữ và số.
2. Chọn hàm số thớch nghi để dựng làm tiờu chuẩn đỏnh giỏ cỏc giải phỏp. 3. Tiếp tục cỏc hỡnh thức biến húa cho đến khi đạt được cỏc giải phỏp tốt nhất
hoặc đến khi thời gian cho phộp chấm dứt.
Như vậy GA là một hỡnh thức tỡm kiếm cú tớnh ngẫu nhiờn nhưng được hướng dẫn bởi hàm số thớch nghi. GA khụng thể luụn luụn tỡm ra giải phỏp tối ưu, nhưng chắc chắn sẽ cung cấp những giải phỏp tương đối tốt trờn nền tảng vững chắc và trong thời gian nhanh nhất.
í 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 húa của sinh vật và chương trỡnh tin học giả tưởng về GA. Tuy nhiờn chớnh Jonh Henry Holland, đại học Michigan, mới là người triển khai ý tưởng và phương thức giải quyết vấn đề dựa trờn sự tiến húa 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. ễng được xem là người cha của học thuyết thuật giải di truyền.
Tạp chớ đầu tiờn về lý thuyết và ứng dụng của GA là nguyệt san Evolutionary Computation (1993) do Kenneth De Jong chủ biờn, ngoài ra cũn cú cỏc nguyệt san AI Expert, Artificial Intelligent cũng thường cú bài đề cập về GA.
Trong thời gian gần đõy cú ớt nhất là 12 sỏch giỏo khoa và chuyờn nghiệp về GA. Hàng chục chương trỡnh tin học do giới đại học và thương mại thực hiện đang được phổ biến rộng rói.
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à cỏc phương thức cổ điển đó khụng giải quyết thỏa đỏng.
1.3.2. Những tớnh chất quan trọng 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. Tuy nhiờn đõy chỉ là hỡnh thức ngẫu nhiờn cú hướng dẫn bởi trị số thớch nghi. Chớnh hàm số thớch nghi là vật chỉ đường cho GA tỡm giải phỏp tối ưu trong muụn ngàn giải phấp cú thể cú. 2. GA duyệt xột toàn bộ cỏc giải phỏp, 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. Vấn đề thớch hợp nhất cho GA là tỡm điều kiện tối ưu. Tối ưu ở đõy khụng nhất thiết phải là tuyệt đối, nhưng cú thể chỉ là tương đối trong hoàn cảnh và thời gian cho phộp.
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. Một trong những bước quan trọng và khú khăn nhất là tỡm hàm số thớch nghi (fitnes function). Hàm số thớch nghi phải cú liờn hệ trực tiếp đến vấn đề phải giải quyết. Vớ dụ đối với vấn đề đầu tư, hàm số thớch nghi cú thể là lợi nhuận thu được do đầu tư, cũng cú thể là tiền lời tớch luỹ sau một thời gian nhất định.
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. Một đặc điểm khỏc của GA là lý thuyết này thớch hợp cho những truờng hợp phải tỡm kiếm (search). Nếu chỳng ta phải tỡm giải phỏp trong trăm hay ngàn đỏp số thỡ GA là kỹ thuật phải được chọn trước nhất. Trước đay phương thức „Trốo nỳi“ (hill climbing) rất thớch hợp cho những trường hợp này., tuy nhiờn cung cấp giải phỏp cú tớnh chất địa phưong thay vỡ toàn diện như GA.
5. GA và mạng Nơron nhõn tạo (Artificial Neural Netword (ANN)) đều thuộc vào nhúm khoa học trớ tuệ nhõn tạo, tuy nhiờn GA lập luận dựa theo sự tiến hoỏ và xem xột vấn đề ở tầm mức của Gen (gene) và nhiễm sắc thể (chromosome), khỏc với mạng nơron nhõn tạo (ANN) dựa trờn kinh nghiệm và cỏch giải quyết vấn đề mà bộ úc của con ngưũi thường dựng.
Muốn giải quyết vấn đề, ANN phải tạo ra một mạng lưới gồm cỏc nơron chứa trong cỏc lớp nhận tin, lớp cho kết quả và lớp trung gian. Muốn cho kết quả chớnh xỏc, ANN phải cú một mạng lưới tối ưu. Làm thế nào để chọn một cỏch tối ưu số lớp, số nơron trong mỗi lớp, hệ số huấn luỵện và cỏc chi tiết khỏc? GA giỳp thực hiện việc này.
1.3.3. Một số vấn đề liờn quan đến thuật giải di truyền?
1.3.3.1. Làm sao biết đựơc giải phỏp do chương trỡnh tin học về GA tỡm ra là tối ưu ?
Chỳng ta khụng thể biết một cỏch chớnh xỏc khi nào thỡ đạt tối ưu. Ngay từ đầu chỳng ta đó khụng biết đỏp số tối ưu, vỡ nếu đó biết thỡ ta cũn dựng đế di truyền làm gỡ nữa. Vỡ khụng biết được trị số tối ưu nờn chỳng ta khụng cú cỏch nào để kiểm chứng là giải phỏp do chưong trỡnh tin học đạt đựơc tối ưu. Tuy nhiờn chỳng ta cú thể thử xem chương trỡnh đó đạt được điểm cao nhất trong hoàn cảnh cho phộp, bằng cỏch thực hiện GA và theo dừi tiến trỡnh của kết quả. Vớ dụ, sau khi chạy thử 25 lần và nhận thấy từ lần thứ 16 đến lần thứ 25, chương trỡnh tin học đều cho kết quả cao như nhau và khụng cho thấy chiều hướng cải thiện thờm nữa thỡ chỳng ta cú thể kết luận là đạt được kết quả tương đối tốt nhất. Nhưng nếu sau 25 lần trị số thớch nghi của giải phỏp vẫn cũn thay đổi và cú chiều hướng cải thiện thờm thỡ quyết định để chọn một trong hai phưong ỏn sau : Tạm thời nhận giải phỏp cú trị số thớch nghi cao nhất, hay tiếp tục thử nữa nếu thời gian cho phộp.
Đối với những vấn đề thuộc mục tiờu thương mại thỡ đõy khụng phải là khuyết điểm quan trọng, vỡ trong thực tế nếu chỳng ta đầu tư tương đối tốt hơn cỏc đồng nghiệp khỏc thỡ khỏch hàng cú thể tin tưởng chỳng ta hơn và dĩ nhiờn là chỳng ta thành cụng phần nào .
1.3.3.2. Khi nào GA cung cấp kết quả kộm hơn cỏc kỹ thuật khỏc hay khụng ?
Điều này hoàn toàn cú thể xảy ra vỡ cỏc lý do sau :
Nếu chọn mụ hỡnh khụng thớch nghi, GA sẽ hội tụ sớm hơn, dữ liệu và cuộc tỡm kiếm giải phỏp 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ế. Hơn nữa, bản thõn Ga là chưong trỡnh tin học, do đú nếu chỳng ta đưa chỉ thị cho mỏy vi tớnh một cỏch khụng rừ ràng và khụng chớnh xỏc thỡ chỳng ta sẽ nhận được một kết
quả kộm. Khi đú, tạo ra mụ hỡnh mới và thử nghiệm vài lần nữa cú thể cải thiện được tỡnh trạng.
1.3.3.3. GA nhanh đến mức như thế nào ?
Như nhà bỏc học Einstein đó núi : Tốc độ cú tớnh cỏch tưong đối. GA giải quyết vấn đề nhanh hay chậm tuỳ thuộc vào mỏy vi tớnh chỳng ta dựng. GA sử dụng rất nhiều phộp tớnh do đú mỏy cú gắn bộ chớp hỗ trợ tớnh toỏn (math coprocessor) sẽ tăng cưũng tốc độ giải quyết vấn đề. Trường hợp điển hỡnh : Chương trỡnh Evolver cú tốc độ 100% trờn mỏy 486/33 MHz sẽ thành 200%trờn mỏy 486/66 MHz, và tương tự đối với mỏy pentium tốc độ sẽ là 400%. Một chi tiết khỏc cần lưu ý là khi dựng chương trỡnh GA trong Windows (như trường hợp Evolver) khụng nờn vẽ hỡnh lại nhiều lần cũng như khụng nờn dựng chung với nhiều chuơng trỡnh khỏc, điều này làm giảm bớt tốc độ tớnh toỏn.
1.3.3.4. GA cú cơ sở lý thuyết vững chắc khụng ?
Chắc chắn là cú : Vỡ cỏc kết quả do J. H. Holland và Kenneth De Jong đó tạo nờn cơ sở toỏn học cho thuật giải di truyền cổ điển. Tuy nhiờn, sau này đó cú nhiều biến thể của GA cổ điển. Tuy thành cụng trong vài trường hợp nhưng chưa được kiểm chứng bằng toỏn học để ỏp dụng một cỏch toàn diện. Hiện nay nhiều chương trỡnh nghiờn cứu nhằm tạo cơ sở toỏn học cho cỏc biến thể của GA.
1.3.3.5. GA cú khú sử dụng khụng ?
Khụng nhất thiết phải giỏi về tin học cũng như ngụn ngữ lập trỡnh mới dựng được GAPhần lớn cỏc chưong trỡnh tin học về GA đều cú tớnh chất tổng quỏt cho mọi truờng hợp. GA giải quyết vấn đề dựa trờn cỏc ký hiệu tượng trưng cho giải phỏp và khụng bận tõm đến tớnh chất của giải phỏp hay của vấn đề. Cỏc bộ phận liờn quan đến việc tạo sinh và biến hoỏ đều khụng thay đổi và người sử dụng khụng phải cập nhật cho từng truũng hợp . Người sử dụng chỉ quan tõm đến hàm số hàm số thớch nghi và đõy là bộ phận cú tớnh chất đặc thự cho từng vấn đề. Phần lớn cỏc chương trỡnh tin học về GA được thực hiện với ngụn gnữ lập trỡnh Visual Basic, C++, Pascal hay Lisp. Một số nhà thảo chương trỡnh về GA cú khuynh hưúng khai thỏc khả năng của chương trỡnh ứng dụng (trường hợp cú Evolver dựng với Excel), do đú, người sử dụng khụng cần phải biết nhiều về ngụn ngữ lập trỡnh . Tuy nhiờn nếu ngưũi sử dụng muốn chế biến cỏc chương trỡnh tin học cho thớch nghi với mụi trường hoạt động thỡ khả năng biết về chương trỡnh tin học và ngụn ngữ lập trỡnh rất cần thiết.
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