Bài toán tối ƣu là bài toán tìm cực đại của hàm nhiều biến Thay vì tìm cực đại hàm ta đi tìm cực tiểu hàm với , hơn nữa ta có thể giả định hàm mục tiêu f có giá trị dƣơng trên miền xác định của nó, nếu không ta có thể cộng thêm một hằng số C dƣơng.
Cụ thể bài toán đƣợc đặt ra nhƣ sau: Tìm cực đại một hàm biến : . Giả sử mỗi biến xi có thể nhận giá trị trong miền và với mọi . Ta muốn tối ƣu hàm với độ chính xác cho trƣớc: giả sử cần số lẻ đối với giá trị của các biến.
Để đạt đƣợc độ chính xác nhƣ vậy mỗi miền cần đƣợc phân cắt thành miền con bằng nhau, gọi là số nguyên nhỏ nhất sao cho:
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnụedụvn/
Nhƣ vậy mỗi biến đƣợc biểu diễn bằng một chuỗi nhị phân có chiều dài . Biểu diễn nhƣ trên rõ ràng thoả mãn điều kiện về độ chính xác theo yêu cầụ Công thức sau tính giá trị thập phân của mỗi chuỗi nhị phân biểu diễn biến :
Trong đó hàm decimal(string2) cho biết giá trị thập phân của chuỗi nhị phân đó.
Bây giờ, mỗi nhiễm sắc thể (là một lời giải) đƣợc biểu diễn bằng một chuỗi nhị phâncó chiều dài bit đầu tiên biểu diễn giá trị trong khoảng [a1,b1], m2bit kếtiếp biểu diễn giá trị trong khoảng [a2,b2], …
Để khởi tạo quần thể, chỉ cần đơn giản tạo pop_size nhiễm sắc thể ngẫu nhiên theo từng bit.
Phần còn lại của giải thuật di truyền rất đơn giản, trong mỗi thế hệ, ta lƣợng giá từng nhiễm sắc thể (tính giá trị hàm trên các chuỗi biến nhị phân đã đƣợc giải mã), chọn quần thể mới thoả mãn phân bố xác suất dựa trên độ thích nghi và thực hiện các phép đột biến và lai để tạo ra các cá thể thế hệ mớị[1]
Sau một số thế hệ, khi không còn cải thiện thêm đƣợc gì nữa, nhiễm sắc thể tốt nhất sẽ đƣợc xem nhƣ lời giải của bài toán tối ƣu (thƣờng là toàn cục). Thông thƣờng ta cho dừng giải thuật sau một số bƣớc lặp cố định tuỳ ý tuỳ thuộc vào điều kiện tốc độ và tài nguyên máy tính.
Đối với tiến trình chọn lọc (chọn quần thể mới thoả mãn phân bố xác suất dựa trên các độ thích nghi), ta dùng bánh xe quay Rulet với các rãnh đƣợc định kích thƣớc theo độ thích nghị Ta xây dựng bánh xe Rulet nhƣ sau (giả định rằng các độ thích nghi đều dƣơng).
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnụedụvn/
Tính độ thích nghi của mỗi nhiễm sắc thể
Tìm tổng giá trị thích nghi toàn quần thể: Tính xác suất chọn cho mỗi nhiễm sắcthể
Tính vị trí xác suất của mỗi nhiễm sắc thể , (i = 1,…, pop_size):
Tiến trình chọn lọc thực hiện bằng cách quay bánh xe Rulet
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 theo cách sau:
Phát sinh ngẫu nhiên một số trong khoảng [0..1]
Nếu thì chọn nhiễm sắc thể đầu tiên , ngƣợc lại thì chọn nhiễm sắc thể thứ ) sao cho
Nhƣ vậy có thể có một số nhiễm sắc thể đƣợc chọn nhiều lần, điều này là phù hợp vì các nhiếm sắc thể tốt nhất cần có nhiều bản sao hơn, các nhiễm sắc thể trung bình không thay đổi, các nhiễm sắc thể kém nhất thì chết đị Hình 2.1 minh họa bánh xe rulet dùng để lựa chọn nhiễm sắc thể:
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnụedụvn/ Hình 2.1: Bánh xe rulet lựa chọn nhiễm sắc thể
Bây giờ ta có thể áp dụng phép toán di truyền: kết hợp và lai ghép các cá thể trong quần thể vừa đƣợc chọn từ quần thể cũ nhƣ trên.
Một trong những tham số của giải thuật là xác suất lai pc. Xác suất này cho ta số nhiếm sắc thểpop_size×pc mong đợi, các nhiễm sắc thể này đƣợc dùng trong tác vụ lai tạọ Ta tiến hành theo cách sau đây:
Đối với mỗi nhiễm sắc thể trong quần thể mới: + Phát sinh ngẫu nhiên một số trong khoảng [0,1] + Nếu r<pc, hãy chọn nhiễm sắc thể đó để lai tạọ
Bây giờ ta ghép đôi các nhiễm sắc thể đã đƣợc chọn một cách ngẫu nhiên: đối với mỗi cặp nhiễm sắc thể đƣợc ghép đôi, ta phát sinh ngẫu nhiên một số nguyên pos trong khoảng [1, m-1] (m là tổng chiều dài - số bit của một nhiễm sắc thể). Số pos cho biết vị trí của điểm laị Hai nhiễm sắc thể:
(b1b2…bposbpos+1…bm)và(c1c2…cposcpos+1…cm)đƣợcthaybằngmộtcặpc oncủachúng:
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnụedụvn/
Phép toán kế tiếp là phép đột biến, đƣợc thực hiện trên cơ sở từng bit. Một tham sốkhác của giải thuật là xác suất đột biếnpm, cho ta số bit đột biến
pm×m×pop_size mong đợị Mỗi bit (trong tất cả các nhiễm sắc thể trong quần
thể) có cơ hội bị đột biến nhƣ nhau, nghĩa là đổi từ 0 thành 1 hoặc ngƣợc lạị Vì thế ta tiến hành theo cách sau đây:
Đối với mỗi nhiễm sắc thể trong quần thể hiện hành (nghĩa là sau khi lai) và đối với mỗi bit trong nhiễm sắc thể:
+ Phát sinh ngẫu nhiên một số trong khoảng [0,1] + Nếu r<pm hãy đột biến bit đó
Sau quá trình chọn lọc, lai và đột biến, quần thể mới đến lƣợt lƣợng giá kế tiếp của nó. Lƣợng giá này đƣợc dùng để xây dựng phân bố xác suất (cho tiến trình chọn lựa kế tiếp), nghĩa là để xây dựng lại bánh xe Rulet với các rãnh đƣợc định kích thƣớc theo các giá trị thích nghi hiện hành. Phần còn lại của tiến hoá chỉ là lặp lại chu trình của những bƣớc trên.