Nghiên cứu giải thiaatj GA giải bài toán chiếc balo loại 1

16 529 3
Nghiên cứu giải thiaatj GA giải bài toán chiếc balo loại 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tiểu Luận Đề Tài : Nghiên Cứu Giải Thuật GA Giải Bài Toán Chiếc Balo Loại 1 Lớp: Cao học KHMT Khóa 23 – Cơ Sở 2 GVHD: Thầy TS Ngô Hữu Phúc HVTH: Trần Đắc Tốt MS : 11870261 BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ QUỐC PHÒNG HỌC VIỆN KỸ THUẬT QUÂN SỰ HVTH: Trần Đắc Tốt; Page 2 Mục lục: 1. Giải thuật di truyền 3 1.1 Giới thiệu về giải thuật di truyền 3 1.1.1 Lịch sử phát triển: 3 1.2 Các khái niệm cơ bản 4 1.2.1 Cá thể, nhiễm sắc thể 4 1.2.2 Quần thể 4 1.2.3 Các toán tử di truyền 4 1.3 Mô hình giải thuật di truyền 5 1.4 Các tham số của GA 6 Xác suất lai ghép 6 Xác suất đột biến 6 Kích thước quần thể 6 1.5 Các cách mã hoá NST 6 Mã hoá nhị phân 6 Mã hoá hoán vị 7 Mã hoá theo giá trị 7 1.6 Khởi tạo quần thể ban đầu 7 Hàm tính độ thích nghi 7 Cơ chế lựa chọn 8 Lựa chọn tỷ lệ 8 Lựa chọn xếp hạng 8 Lựa chọn theo cơ chế lấy mẫu ngẫu nhiên 8 Lựa chọn tranh đấu 9 1.7 Các toán tử di truyền (GA operators) 9 Mã hoá nhị phân 9 Mã hoá hoán vị 9 Mã hoá theo giá trị 10 1.8 Chiến lược nạp lại quần thể 10 Nạp lại hoàn toàn 10 Nạp lại ngẫu nhiên 10 Nạp lại theo mô hình cá thể ưu tú 10 2. Áp Dụng Giải Thuật Ga Giải Bài Toán Chiếc Balo Loại 1 11 HVTH: Trần Đắc Tốt; Page 3 1. Giải thuật di truyền 1.1 Giới thiệu về giải thuật di truyền 1.1.1 Lịch sử phát triển: Giải thuật di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giải pháp thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization). Giải thuật di truyền là một phân ngành của giải thuật tiến hóa vận dụng các nguyên lý của tiến hóa như di truyền, đột biến, chọn lọc tự nhiên, và trao đổi chéo. Giải thuật di truyền thường được ứng dụng nhằm sử dụng ngôn ngữ máy tính để mô phỏng quá trình tiến hoá của một tập hợp những đại diện trừu tượng (gọi là những nhiễm sắc thể) của các giải pháp có thể (gọi là những cá thể) cho bài toán tối ưu hóa vấn đề. Tập hợp này sẽ tiến triển theo hướng chọn lọc những giải pháp tốt hơn. Thông thường, những giải pháp được thể hiện dưới dạng nhị phân với những chuỗi 0 và 1, nhưng lại mang nhiều thông tin mã hóa khác nhau. Quá trình tiến hóa xảy ra từ một tập hợp những cá thể hoàn toàn ngẫu nhiên ở tất cả các thế hệ. Trong từng thế hệ, tính thích nghi của tập hợp này được ước lượng, nhiều cá thể được chọn lọc định hướng từ tập hợp hiện thời (dựa vào thể trạng), được sửa đổi (bằng đột biến hoặc tổ hợp lại) để hình thành một tập hợp mới. Tập hợp này sẽ tiếp tục được chọn lọc lặp đi lặp lại trong các thế hệ kế tiếp của giải thuật. Như đã nói ở trên, GA là một thành phần của EC- một lĩnh vực được coi là có tốc độ phát triển nhanh của trí tuệ nhân tạo. EC được chia ra thành 5 nhóm :  Giải thuật di truyền (Genetic Algorithm - GA): Dựa vào quá trình di truyền trong tự nhiên để cải tiến lời giải qua các thế hệ bắt nguồn từ một tập các lời giải ban đầu.  Quy hoạch tiến hoá (Evolutionary Programming -EP): Dựa vào quy luật tiến hoá, tìm phương pháp liên hợp đủ khả năng giải quyết trọn vẹn một bài toán từ một lớp các phương pháp giải quyết được một số phần của bài toán.  Các chiến lược tiến hoá ( Evolutionary Strategies -ES): Dựa trên một số chiến lược ban đầu, tiến hoá để 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.  Lập trình di truyền (Genetic Programming -GP): Mở rộng giải thuật di truyền trong lĩnh vực các chương trình của máy tính. Mục đích của nó là để sinh ra một cách tự động các chương trình máy tính giải quyết một cách tối ưu một vấn đề cụ thể.  Các hệ thống phân loại (Classifier Systems- CS): Các GA đặc biệt được dùng trong việc học máy và việc phát hiện các quy tắc trong các hệ dựa trên các quy tắc. Giải thuật di truyền cũng như các thuật toán tiến hoá đều được hình thành dựa trên một quan niệm được coi là một tiên đề phù hợp với thực tế khách quan. Đó là quan niệm "Quá trình tiến hoá 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". Quá trình tiến hoá thể hiện tính tối ưu ở chỗ thế hệ sau bao giờ cũng tốt hơn thế hệ trước. Quá trình phát triển của giải thuật di truyền có thể được chỉ ra qua các mốc thời gian sau : HVTH: Trần Đắc Tốt; Page 4  1960 : Ý tưởng đầu tiên về Tính toán tiến hoá được Rechenberg giới thiệu trong công trình "Evolution Strategies" (Các chiến lược tiến hoá). Ý tưởng này sau đó được nhiều nhà nghiên cứu phát triển.  1975 : Giải thuật gen do John Holland phát minh và được phát triển bởi ông cùng với các đồng nghiệp và những sinh viên. Cuốn sách "Adaption in Natural and Artificial Systems" (Sự thích nghi trong các hệ tự nhiên và nhân tạo) xuất bản năm 1975 đã tổng hợp các kết quả của quá trình nghiên cứu và phát triển đó.  1992 : John Koza đã dùng GA để xây dựng các chương trình giải quyết một số bài toán và gọi phương pháp này là " lập trình gen". Ngày nay giải thuật di truyền càng trở nên quan trọng, đặc biệt là trong lĩnh vực tối ưu hoá, một lĩnh vực có nhiều bài toán thú vị, được ứng dụng nhiều trong thực tiễn nhưng thường khó và chưa có giải thuật hiệu quả để giải . 1.2 Các khái niệm cơ bản Giải thuật di truyền dựa vào quá trình tiến hoá trong tự nhiên nên các khái niệm và thuật ngữ của nó đều có liên quan đến các thuật ngữ của di truyền học. 1.2.1 Cá thể, nhiễm sắc thể Một cá thể trong giải thuật di truyền, biểu diễn một giải pháp của bài toán. Tuy nhiên không giống với trong tự nhiên, một cá thể có nhiều nhiễm sắc thể (NST),có 1 thì gọi là thể đơn bội ,còn nếu có nhiều thì là thể đa bội, ở đây để giới hạn trong giải thuật di truyền ta quan niệm một cá thể có một nhiễm sắc thể. Do đó khái niệm cá thể và nhiễm sắc thể trong giải thuật di truyền coi như là tương đương. Một NST được tạo thành từ nhiều gen, mỗi gen có thể có các giá trị khác nhau để quy định một tính trạng nào đó. Trong GA, một gen được coi như một phần tử trong chuỗi NST. 1.2.2 Quần thể Quần thể là một tập hợp các cá thể có cùng một số đặc điểm nào đấy. Trong giải thuật di truyền ta quan niệm quần thể là một tập các lời giải của một bài toán. 1.2.3 Các toán tử di truyền 1.2.3.1 Chọn lựa Trong tự nhiên, quá trình chọn lọc và đấu tranh sinh tồn đã làm thay đổi các cá thể trong quần thể. Những cá thể tốt, thích nghi được với điều kiện sống thì có khả năng đấu tranh lớn hơn, do đó có thể tồn tại và sinh sản. Các cá thể không thích nghi được với điều kiện sống thì dần mất đi. Dựa vào nguyên lý của quá trình chọn lọc và đấu tranh sinh tồn trong tự nhiên, chọn lựa các cá thể trong GA chính là cách chọn các cá thể có độ thích nghi tốt để đưa vào thế hệ tiếp theo hoặc để cho lai ghép, với mục đích là sinh ra các cá thể mới tốt hơn. Có nhiều cách để lựa chọn nhưng cuối cùng đều nhằm đáp ứng mục tiêu là các cá thể tốt sẽ có khả năng được chọn cao hơn. 1.2.3.2 Lai ghép Lai ghép trong tự nhiên là sự kết hợp các tính trạng của bố mẹ để sinh ra thế hệ con. Trong giải thuật di truyền, lai ghép được coi là một sự tổ hợp lại các tính chất (thành phần) trong hai lời giải cha mẹ nào đó để sinh ra một lời giải mới mà có đặc tính mong muốn là tốt hơn thế hệ cha mẹ. Đây là một quá trình xảy ra chủ yếu trong giải thuật di truyền. HVTH: Trần Đắc Tốt; Page 5 1.2.3.3 Đột biến Đột biến là một sự biến đổi tại một ( hay một số ) gen của nhiễm sắc thể ban đầu để tạo ra một nhiễm sắc thể mới. Đột biến có xác suất xảy ra thấp hơn lai ghép. Đột biến có thể tạo ra một cá thể mới tốt hơn hoặc xấu hơn cá thể ban đầu. Tuy nhiên trong giải thuật di truyền thì ta luôn muốn tạo ra những phép đột biến cho phép cải thiện lời giải qua từng thế hệ. 1.3 Mô hình giải thuật di truyền Với các khái niệm được giới thiệu ở trên, giải thuật di truyền được mô tả như sau : Nhận các tham số của bài toán Khởi tạo quần thể ban đầu Tính giá trị thích nghi Sinh sản Lai ghép Đột biến Điều kiện dừng Kết thúc Bắt đầu Lựa chọn giải pháp tốt nhất Hình 1 1. [Bắt đầu ] Nhận các tham số cho thuật toán. 2. [Khởi tạo ] Sinh ngẫu nhiên một quần thể gồm n cá thể ( là n lời giải cho bài toán) 3. [Quần thể mới ] Tạo quần thể mới bằng cách lặp lại các bước sau cho đến khi quần thể mới hoàn thành a.[Thích nghi] Ước lượng độ thích nghi eval(x) của mỗi cá thể. b.[Kiểm tra ] Kiểm tra điều kiện kết thúc giải thuật. HVTH: Trần Đắc Tốt; Page 6 c.[Chọn lọc] Chọn hai cá thể bố mẹ từ quần thể cũ theo độ thích nghi của chúng (cá thể có độ thích nghi càng cao thì càng có nhiều khả năng được chọn) d.[Lai ghép] Với một xác suất lai ghép được chọn, lai ghép hai cá thể bố mẹ để tạo ra một cá thể mới. e.[Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể mới 5. [Chọn kết quả] Nếu điều kiện dừng được thỏa mãn thì thuật toán kết thúc và trả về lời giải tốt nhất trong quần thể hiện tại 1.4 Các tham số của GA Xác suất lai ghép Xác suất lai ghép cho biết tính thường xuyên của việc lai ghép tạo ra thế hệ mới được thực hiện như thế nào. Nếu xác suất lai ghép là p c , khi đó khả năng để một cá thể được lai ghép là p c . Nếu không thực hiện lai ghép, con sinh ra sẽ giống hoàn toàn bố mẹ. Nếu được lai ghép, con sinh ra sẽ có một phần giống bố và một phần giống mẹ. Xác suất đột biến Xác suất đột biến cho biết tính thường xuyên của việc các gen của NST thay đổi như thế nào. Nếu xác suất đột biến là p m , khi đó khả năng để mỗi gen của một NST bất kỳ bị đột biến là p m . Tác dụng của toán tử đột biến là ngăn ngừa giải thuật di truyền rơi vào tình trạng cực trị địa phương, tuy nhiên nếu thực hiện đột biến với xác suất quá cao sẽ biến giải thuật di truyền thành giải thuật tìm kiếm ngẫu nhiên. Kích thước quần thể Kích thước quần thể cho biết có bao nhiêu cá thể trong một quần thể trong mỗi thế hệ). Các nghiên cứu và các thử nghiệm đã cho thấy kích thước quần thể không nên quá bé cũng như không quá lớn. Nếu có quá ít cá thể thì sẽ làm giảm không gian tìm kiếm của giải thuật và dễ rơi vào các cục bộ địa phương, như vậy sẽ dễ xảy ra trường hợp bỏ qua các lời giải tốt. Tuy nhiên nếu có quá nhiều cá thể cũng sẽ làm cho giải thuật chạy chậm đi, ảnh hưởng đến hiệu quả tính toán của giải thuật. Các nghiên cứu cũng đã chỉ ra không có lợi khi tăng kích thước quần thể lên quá một giới hạn cho phép. 1.5 Các cách mã hoá NST Trong giải thuật di truyền cách mã hóa NST rất quan trọng nó không chỉ quyết định đến hiệu quả của giải thuật mà còn ảnh hưởng đến việc lựa chọn các toán tử trong các bước lai ghép và đột biến. Với mỗi kiều bài toán khác nhau có nhiều cách mã hóa NST . Cách mã hoá NST được đánh giá là một trong hai yếu tố quyết định trong xây dựng giải thuật di truyền. Phần sau đây sẽ trình bày một số cơ chế mã hoá nhiễm sắc thể hay dùng cho giải thuật di truyền. Tuy nhiên, tuỳ thuộc vào các tri thức riêng của từng bài toán mà ta sẽ lựa chọn hay xây dựng cách biểu diễn nhiễm sắc thể riêng phù hợp với bài toán của mình. Mã hoá nhị phân Trong tất cả các phương pháp mã hóa thì phương pháp mã hoá nhị phân là phương pháp mã hoá nhiễm sắc thể đơn giản và ra đời sớm nhất. Trong mã hoá nhị phân, mỗi nhiễm sắc thể là một chuỗi nhị phân, mỗi bit trong nó có thể biểu diễn một đặc tính của lời giải. Ví dụ: hai nhiễm sắc thể 1 và 2 có chiều dài là 15. HVTH: Trần Đắc Tốt; Page 7 Nhiễm sắc thể 1: 110110010011011 Nhiễm sắc thể 2: 110111100001111 Ví dụ: Trong bài toán cái túi, để biểu diễn một cách xếp đồ vào túi, ta sẽ dùng một chuỗi nhị phân có kích thước bằng số đồ vật, mỗi bit tương ứng với các đồ vật sẽ có hai giá trị: giá trị 0 nếu đồ vật đó không được cho vào túi và giá trị 1 nếu đồ vật được cho vào túi. Mã hoá nhị phân tuy là phổ biến nhưng nó có một nhược điểm là có thể tạo ra không gian mã hoá lớn hơn so với không gian giá trị của nhiễm sắc thể, hơn nữa có thể xảy ra trường hợp các toán tử lai ghép và đột biến tạo ra các cá thể không nằm trong không gian tìm kiếm và đòi hỏi phải có những phương pháp sửa chữa để làm cá thể tạo ra nằm trong không gian tìm kiếm. Do đó, với nhiều bài toán thì biểu diễn nhị phân là không hữu hiệu, điển hình là bài toán TSP. Mã hoá hoán vị Mã hoá hoán vị có thể được sử dụng trong các bài toán liên quan đến thứ tự như bài toán du lịch hay bài toán lập lịch. Trong mã hoá hoán vị, mỗi nhiễm sắc thể là một chuỗi các số biểu diễn một trình tự. Ví dụ : Nhiễm sắc thể 1: 1 5 4 3 2 6 7 9 8 Nhiễm sắc thể 2: 9 1 7 3 8 5 6 4 2 Mã hoá hoán vị phù hợp cho các bài toán liên quan đến thứ tự. Đối với các bài toán này, việc thao tác trên các nhiễm sắc thể chính là hoán vị các số trong chuỗi đó làm thay đổi trình tự của nó. Ví dụ: Trong bài toán người du lịch, để biểu diễn một cách đi của người du lịch thì dùng một nhiễm sắc thể mà trình tự các số trong chuỗi cho biết thứ tự các thành phố mà người du lịch đi qua. Mã hoá theo giá trị Mã hoá trực tiếp theo giá trị có thể được dùng trong các bài toán sử dụng giá trị phức tạp như trong số thực. Trong đó, mỗi nhiễm sắc thể là một chuỗi các giá trị. Các giá trị có thể là bất cứ cái gì liên quan đến bài toán, từ số nguyên, số thực, kí tự cho đến các đối tượng phức tạp hơn. Ví dụ: Nhiễm sắc thể 1: 1.23 5.32 0.34 2.98 3.54 Nhiễm sắc thể 2: (back), (back), (right), (forward), (left) Mã hoá theo giá trị thường dùng cho các bài toán đặc biệt. Trong cách mã hoá này ta thường phải phát triển các toán tử đột biến và lai ghép cho phù hợp với từng bài toán. 1.6 Khởi tạo quần thể ban đầu Quần thể ban đầu ảnh hưởng khá nhiều đến hiệu quả giải thuật, tuy nhiên trong nhiều bài toán thì quần thể ban đầu thường được lựa chọn ngẫu nhiên Hàm tính độ thích nghi Hàm độ thích nghi(fitness function) là hàm đánh giá hay hàm mục tiêu thể hiện tính thích ngi của cá thể hay độ tốt của lời giải HVTH: Trần Đắc Tốt; Page 8 Cơ chế lựa chọn Cơ chế lựa chọn được áp dụng khi quần thể P(t+1) được tạo ra từ việc chọn các cá thể từ quần thể P(t) để thực hiện việc lai ghép và đột biến. Có nhiều cách để lựa chọn các cá thể từ một quần thể. Sau đây sẽ giới thiệu một số cơ chế hay áp dụng. Để tiện mô tả các cơ chế lựa chọn ta đưa ra một số kí hiệu sau : Cách biểu diễn các nhiễm sắc thể thứ i là v i . Hàm tính độ thích nghi của nhiễm sắc thể v i là f(v i ). Kích thước quần thể là pop_size. Số nhiễm sắc thể cần chọn là N. Lựa chọn tỷ lệ Trước khi lựa chọn thì tính các giá trị sau :  Tính tổng độ thích nghi của cả quần thể:    si zepop i i vfF _ 1 )(  Tính xác suất chọn p i cho mỗi nhiễm sắc thể v i : p i = f(v i )/F  Tính vị trí xác suất q i của mỗi nhiễm sắc thể :    i j ji Pq 1 Cơ chế lựa chọn theo bánh xe Roulet được thực hiện bằng cách quay bánh xe Roulet N lần. Mỗi lần chọn một nhiễm sắc thể từ quần thể hiện hành vào quần thể mới bằng cách sau :  Phát sinh ngẫu nhiên một số r trong khoảng [0,1].  Nếu r < q 1 thì chọn nhiễm sắc thể v 1 ; ngược lại thì chọn nhiễm sắc thể thứ i ( 2  i  pop_size ) sao cho q i-1  r  q i . Với cơ chế lựa chọn như thế này thì có một số nhiếm sắc thể sẽ được chọn nhiều lần. Điều này phù hợp với lý thuyết lược đồ: Các nhiễm sắc thể tốt nhất thì có nhiều bản sao, nhiễm sắc thể trung bình thì không đổi , nhiễm sắc thể kém thì chết đi [11]. Lựa chọn xếp hạng Cơ chế lựa chọn xếp hạng được mô tả như sau:  Sắp xếp các nhiễm sắc thể trong quần thể theo độ thích nghi từ thấp đến cao.  Đặt lại độ thích nghi cho quần thể đã sắp xếp theo kiểu: nhiễm sắc thể thứ nhất có độ thích nghi là 1, NST thứ hai có độ thích nghi là 2, .v.v., NST thứ pop_size có độ thích nghi là pop_size. Theo phương pháp này việc một NST được chọn nhiều lần như trong lựa chọn theo kiểu bánh xe Roulet đã giảm đi. Nhưng nó có thể dẫn đến sự hội tụ chậm và NST có độ thích nghi cao cũng không khác mấy so với các NST khác. Lựa chọn theo cơ chế lấy mẫu ngẫu nhiên Cơ chế lựa chọn:  Biểu diễn xác suất chọn các NST lên trên một đường thẳng.  Đặt N điểm chọn lên đường thẳng. Các điểm chọn này cách nhau 1/N, điểm đầu tiên đặt ngẫu nhiên trong khoảng [0,1/N]  Với một điểm chọn, NST gần với nó nhất về bên phải sẽ được chọn. HVTH: Trần Đắc Tốt; Page 9 Phương pháp này có đặc điểm là các điểm chọn được phân bố đều trên trục số, do đó sẽ gần với điểm xứng đáng được chọn. Lựa chọn tranh đấu Cơ chế lựa chọn :  Lấy một số NST trong quần thể, NST nào có độ thích nghi cao nhất được chọn.  Lặp lại thao tác trên N lần. 1.7 Các toán tử di truyền (GA operators) Các toán tử di truyền là các hàm biến đổi NST từ thế hệ P(t) để tạo ra các NST của thế hệ P(t+1). Các toán tử di truyền của GA là toán tử lai ghép và đột biến. Việc xây dựng hai toán tử này đóng vai trò rất quan trọng trong hiệu quả của giải thuật. Nó phải được đảm bảo rằng kết quả sinh ra của 2 toán tử là hợp lệ theo nghĩa phải nằm trong không gian tìm kiếm của giải thuật, lấy ví dụ với bài toán TSP thì việc mã hóa nhị phân và toán tử đột biến và lai ghép sẽ tạo ra các cá thể không phù hợp vì không tạo thành 1 đường đi hợp lệ, do đó mã hóa nhị phân ít được dùng cho bài toán TSP. Mã hoá nhị phân 1.7.1.1 Toán tử lai ghép Lai ghép đơn điểm cắt :  Một điểm cắt được chọn tại một vị trí thứ k trên NST.  Từ đầu NST đến vị trí k, NST con sao chép từ cha, phần còn lại sao chép từ mẹ. Lai ghép hai điểm cắt :  Hai điểm cắt được chọn .  Từ đầu cho đến điểm cắt thứ nhất được sao chép từ cha, từ điểm cắt thứ nhất đến điểm cắt thứ hai sao chép từ mẹ và phần còn lại sao chép từ cha. Lai ghép đồng nhất :  Có một mặt nạ sao chép là một chuỗi nhị phân có chiếu dài bằng chiều dài NST.  Xây dựng NST mới: Duyệt qua mặt nạ, bit có giá trị một thì sao chép gen tại vị trí đó từ NST cha sang con, bit có giá trị 0 thì sao chép từ mẹ.  Mặt nạ được phát sinh ngẫu nhiên đối với từng cặp cha mẹ. Lai ghép số học: NST con được tạo thành bằng cách thực hiện một phép toán logic nào đó như AND, OR, … với cặp NST bố mẹ. 1.7.1.2 Toán tử đột biến Phép đảo bit : Bit được chọn sẽ bị đảo Mã hoá hoán vị 1.7.1.3 Toán tử lai ghép Toán tử lai ghép đơn điểm cắt : HVTH: Trần Đắc Tốt; Page 10  Một điểm cắt được chọn.  Từ đầu đến điểm cắt được lấy từ cha, phần còn lại duyệt qua mẹ, đưa những gen chưa có vào. 1.7.1.4 Toán tử đột biến Thay đổi thứ tự : Hai số được chọn hoán đổi vị trí cho nhau. Ví dụ : (Số được chọn có gạch chân) Trong bài toán TSP có thể vị trí 2 thành phố bất kỳ sẽ được đảo vị trí Mã hoá theo giá trị 1.7.1.5 Toán tử lai ghép Mã hoá theo giá trị có thể áp dụng tất cả các toán tử lai ghép có trong mã hoá nhị phân. 1.7.1.6 Toán tử đột biến Với mã hoá theo giá trị thực thì có thể thực hiện đột biến bằng cách thay đổi giá trị (cộng thêm hoặc trừ đi) một giá trị nhỏ vào một số cá thể được chọn. Ví dụ : (Các các thể được chọn được tô đậm) Giá trị nhỏ : 0.02 Trước đột biến : 1.23 5.32 0.34 2.98 3.54 Sau đột biến : 1.23 5.30 0.34 3.00 3.54 1.8 Chiến lược nạp lại quần thể Nạp lại hoàn toàn Tạo ra số NST mới bằng kích thước quần thể và quần thể mới bao gồm toàn các NST mới này, không có NST nào của thế hệ trước. Nạp lại ngẫu nhiên Tạo ra số NST mới ít hơn kích thước quần thể và thay thế một cách ngẫu nhiên các NST ở thế hệ trước bằng NST ở thế hệ sau. Nạp lại theo mô hình cá thể ưu tú Tạo ra số NST mới ít hơn kích thước quần thể và thay thế chúng cho các bố mẹ có độ thích nghi thấp. Nhận xét về các chiến lược nạp lại :  Nạp lại hoàn toàn : là chiến lược đơn giản nhất. Mỗi NST chỉ tồn tại trong một thế hệ, sang thế hệ tiếp theo sẽ được thay mới hoàn toàn. Như vậy sẽ xảy ra trường hợp là các NST tốt sẽ không được giữ lại, do đó chiến lược này không phải là chiến lược phù hợp cho việc cải thiện lời giải qua các thế hệ.  Nạp lại theo mô hình cá thể ưu tú: Được coi là chiến lược tối ưu. Các NST tốt sẽ sống sót qua nhiều thế hệ. Qua mỗi thế hệ, sẽ có một số lượng nhất định các NST tồi bị thay thế. Tuy chiến lược không kiểm tra các NST con cháu nạp vào có tốt hơn bố mẹ bị loại đi hay không nhưng chắc chắn là những NST con cháu nạp vào nếu là tồi [...]... Rank private int Rank(string[] str_p_) { int sum1 = 0, sum2 = 0, temp1 = 0, temp2 = 0; string tmp = ""; for (int i = 0; i < 30; i++) { tmp = str_p_[i]; for (int j = 0; j < 10 ; j++) { if (Convert.ToInt16(tmp[j]) == 49) { sum1 += balo[ j, 1] ; sum2 += balo[ j, 0]; temp1 = sum2 - sum1; HVTH: Trần Đắc Tốt; Page 12 } } temp2 += temp1; sum1 = 0; sum2 = 0; temp1 = 0; } Random rnd = new Random(); int r = rnd.Next(0,...thì sẽ bị loại trong thế hệ tiếp Như vậy nó vẫn đảm bảo qua nhiều thế hệ thì tính chất của quần thể sẽ được cải thiện dần dần 2 Áp Dụng Giải Thuật Ga Giải Bài Toán Chiếc Balo Loại 1 Phát biểu Bài toán ba lô: Cho trước một tập thực thể cùng các giá trị và kích thước của chúng Cần chọn được một hay nhiều... đề bài toán được xác định như sau: Đưa ra vector giá trị : Pi Vector khối nượng : wi Giá trị cực đại : ∑ni =1 pixi Số vật thể phải thỏa mãn điều kiện : ∑ni =1 wixi ≤ C xi nhận giá trị 0 hoặc 1 ,( i= 1, … ,n ) n là số các phần tử 0 : đồ vật ( nhiễm sắc thể ) không được chọn 1 : đồ vật ( nhiễm sắc thể ) được chọn Ta chọn giải thuật gene với phương pháp chọn là rank để xây dựng chương trình giải quyết bài. .. để xây dựng chương trình giải quyết bài toán chiếc balo loại 1 a Mã hóa (encoding ) : • Ban đầu phải mã hóa các cá thể( Mã hóa nhị phân (Binary encoding )) của quần thể thành các gene tương ứng Với mỗi gene sẽ là một trường hợp chọn các vật cho vào balo xi nhận giá trị 0 hoặc 1 ,( i= 1, … ,n ) n là số các phần tử 0 : đồ vật ( nhiễm sắc thể ) không được chọn 1 : đồ vật ( nhiễm sắc thể ) được chọn Số... rnd = new Random(); int r = rnd.Next(0, temp2); int sum3 = 0, sum4 = 0, ret = 0, tmp1 = 0, tmp2 = 0; for (int i = 0; i < 30; i++) { tmp = str_p_[i]; for (int j = 0; j < 10 ; j++) { if (Convert.ToInt16(tmp[j]) == 49) { sum3 += balo[ j, 1] ; sum4 += balo[ j, 0]; tmp1 = sum4 - sum3; } } tmp2 += tmp1; sum3 = 0; sum4 = 0; tmp1 = 0; if (sum4 > r) { ret = i; goto end; } } end: return ret; } e Lai ghép ( crossover... Single_point_crossover1(string str1, string str2) { string str_temp = str1.Substring(0, 5) + str2.Substring(5, 5); return str_temp; } private string Single_point_crossover2(string str1, string str2) { string str_temp = str1.Substring(5, 5) + str2.Substring(0, 5); return str_temp; HVTH: Trần Đắc Tốt; Page 13 } Hàm Lai ghép tại hai điểm private string Two_point_crossover1(string str1, string str2) { string str_temp = str1.Substring(0,... tmp = str_p_[i]; for (int j = 0; j < 10 ; j++) { if (Convert.ToInt16(tmp[j]) == 49) { sum1 += balo[ j, 0]; sum2 += balo[ j, 1] ; } } if (sum2 = 50 && sum2 >= 40) { lb_rank.Items.Add(tmp); str_f[count] = tmp; count++; } sum2 = 0; sum1 = 0; }} d Sự lựa chọn cho sự kết hợp lại (selection for recombination) Có rất nhiều thuật toán để lựa chọn cá thể để tham gia vào quá trình lai ghép( crossover... cực trị địa phương ( a local optimum) trong quá trình giải quyết bài toán ( Đột biến trên 1 gene nào đó, với giá trị 0 sẽ chuyển thành 1, và ngược lại ) Hàm Đột biến (Mutation) private void Mutation(string[] str) { Random rnd = new Random(); int index_str = rnd.Next(0, 30); HVTH: Trần Đắc Tốt; Page 14 string tmp = str[index_str]; int num = rnd.Next (1, 3); for (int i = 0; i < num; i++) { int index = rnd.Next(0,... str1.Substring(8, 2); return str_temp; } private string Two_point_crossover2(string str1, string str2) { string str_temp = str2.Substring(0, 3) + str1.Substring(2, 3) + str2.Substring(5, 2); return str_temp; } Hàm Lai ghép arithmetic private string Arithmetic_crossover(string str1, string str2) { string temp = ""; for (int i = 0; i < str1.Length; i++) { temp += Convert.ToString(Convert.ToByte(str1[i])... một mảng 2 chiều : balo[ i,j] , để biểu diễn quần thể trong chiếc ba lô Trong đó : + i : biểu diễn cho yếu tố giá trị + j : biểu diễn cho yếu tố khối lượng b Khởi tạo quần thể ( initial population generation ) : Sinh ngẫu nhiên cá thể trong quần thể ban đầu: Ngẫu nhiên sinh ra các chuỗi 0 ,1 Kiểm tra tổng khối lượng các vật được chọn không được vượt quá 50 HVTH: Trần Đắc Tốt; Page 11 c Hàm thích nghi . nhiên, quá trình chọn lọc và đấu tranh sinh tồn đã làm thay đổi các cá thể trong quần thể. Những cá thể tốt, thích nghi được với điều kiện sống thì có khả năng đấu tranh lớn hơn, do đó có thể tồn. chọn 8 Lựa chọn tỷ lệ 8 Lựa chọn xếp hạng 8 Lựa chọn theo cơ chế lấy mẫu ngẫu nhiên 8 Lựa chọn tranh đấu 9 1.7 Các toán tử di truyền (GA operators) 9 Mã hoá nhị phân 9 Mã hoá hoán vị 9 Mã. thích nghi được với điều kiện sống thì dần mất đi. Dựa vào nguyên lý của quá trình chọn lọc và đấu tranh sinh tồn trong tự nhiên, chọn lựa các cá thể trong GA chính là cách chọn các cá thể có độ

Ngày đăng: 03/07/2015, 14:45

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan