Tải bản đầy đủ (.docx) (61 trang)

Luận văn thạc sĩ giải thuật di truyền giải bài toán tối ưu đa ràng buộc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (535.06 KB, 61 trang )

Bộ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC sư PHẠM HÀ NỘI 2

Đỗ THỊ MINH PHƯƠNG

GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN TỐI ưu
ĐA RÀNG BUỘC

Chuyên ngành: Toán ứng dụng
Mã số: 60 46 0112

LUẬN VĂN THẠC sĩ TOÁN HỌC

Người hướng dẫn khoa học
TS. Phạm Thanh Hà

HÀ NỘI, 2015


Luận văn được hoàn thành với lòng tri ân sâu sắc mà tôi xin kính gửi đến các
thầy cô, bạn bè, đồng nghiệp, đồng môn và gia đình thân yêu của tôi.
Trước hết, tôi xin bày tỏ lòng biết on sâu sắc đến TS. Phạm Thanh Hà, Thầy đã
định hướng cho tôi chọn đề tài, trực tiếp tận tình hướng dẫn giúp đỡ tôi, thầy không
LỜI CẢM
quản ngại thời gian, công sức để giúp tôi hoàn thành luận văn này.
Tôi xin chân thành cảm ơn Ban giám hiệu, Phòng Đào tạo sau Đại học, Khoa
Toán cùng các thầy cô trong trường Đại học sư phạm Hà Nội 2 đã nhiệt tình giúp đỡ,
giảng dạy, tạo điều kiện tốt nhất cho tôi trong thời gan học tập tại trường.
Tôi xin gửi lòi cảm ơn sâu sắc đến gia đình tôi, họ đã luôn sát cánh bên tôi, che
chở động viên tôi. Tôi xin cảm ơn BGH, Phòng đào tạo&NCKH, Phòng khảo thí
KĐCL - Trường Cao Đẳng Y tế Phú Thọ đã tạo điều kiện tốt nhất cho tôi để tôi yên


tâm học tập, làm việc và nghiên cứu.
Cuối cùng, tôi xin chân thành cảm ơn các bạn đồng khóa cao học KI 7 - Đợt 2
(2013 -2015) nói chung và chuyên ngành Toán ứng dụng nói riêng đã giúp đỡ, động
viên tôi hoàn thành luận văn này.
Một lần nữa tôi xin chân thành cảm ơn!
Hà Nội, tháng 12 năm 2015
Học viên

Đỗ Thị Minh Phương
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi.


Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được công bố
trong bất kỳ công trình nào khác.

Học viên
LỜI CẢM

Đỗ Thị Minh Phương


2.2.1


2.2.2

Lai đơn giản.........................................................................................

3



6
MỞ ĐẦU

1. Lý do chọn đề tài
Cho đến nay đã có nhiều thuật toán tìm lời giải tối ưu cho nhiều lĩnh vực bài toán,
ví dụ như trong bài toán tìm kiếm trên danh sách, cây, đồ thị các nhà khoa học đã đưa ra
thuật toán tìm kiếm quay lui, vét cạn. Các thuật toán này tuy tìm được nghiệm tối ưu
nhưng chỉ áp dụng được cho các bài toán có không gian tìm kiếm nhỏ.
Để khắc phục các hạn chế như trên các nhà khoa học cũng đã đưa ra các thuật
toán tìm kiếm heurictics, đây là thuật toán có sử dụng các tri thức về lĩnh vực bài toán
để nhằm giảm thời gian tìm kiếm. Tuy nhiên các thuật toán này lại vấp phải một vấn đề
là các tri thức thường là kinh nghiệm của con người, do đó nó có thể chưa chính xác,
đầy đủ và điều này có thể dẫn tói sự chệch hướng trong quá trình tìm kiếm.
Giải thuật tiến hóa cung cấp những kỹ thuật tìm kiếm tối ưu giúp ta giải quyết
được những vấn đề đã đặt ra ở trên, nó cho phép ta tìm kiếm lời giải tối ưu trên các
không gian lớn, nguyên tắc cơ bản của giải thuật tiến hóa là mô phỏng quá trình tiến
hóa của tự nhiên. Cho đến nay lĩnh vực nghiên cứu về giải thuật tiến hóa đã thu được
nhiều thành tựu, giải thuật tiến hóa được ứng dụng trong nhiều lĩnh vực phức tạp, các
vấn đề khó có thể giải quyết được bằng phương pháp thông thường.
Một trong những vấn đề đang được quan tâm hiện nay là bài toán tối ưu phi tuyến
tổng quát:
Tìm X để hàmf(x), x=. .,x9)e Rq đạt giá trị tối ưu thỏa: p>0
phương trình gj(x)=0,j=0,..,p và m-p bất phương trình
hj(x), j=p+ì,..,m
Cho đến nay vẫn chưa có phương pháp nào giúp xác định cực trị cho bài toán tối
ưu tổng quát, chỉ khi hàm mục tiêu và các ràng buộc gj và hj thỏa một số tính chất nào
đó thì đôi khi mới tìm được tối ưu toàn cục.
Với khả năng tiềm tàng của giải thuật di truyền, đề tài luận văn sẽ đi nghiên cứu
cơ sở toán học và xây dựng giải thuật di truyền để giải bài toán tối ưu phi tuyến như đã

đề cập. Ngoài ra đề tài sẽ nghiên cứu triển khai một ứng dụng lập khẩu phần ăn cho gia


7
súc trên cơ sở tối ưu giá thành sản xuất.

2. Mục đích nghiên cứu
-

Nghiên cứu giải thuật di truyền giải bài toán tối ưu đa ràng buộc.

-

Nghiên cứu ứng dụng giải thuật di truyền trong bài toán tối ưu hóa khẩu phần thức ăn
chăn nuôi.

3. Nhiệm vụ nghiên cứu
-

Nghiên cứu các khái niệm cơ bản và cơ sở toán học của giải thuật di truyền.

-

Nghiên cứu cơ chế hoạt động của giải thuật di truyền trong bài toán tìm cực trị hàm
nhiều biến.

-

Nghiên cứu bài toán tối ưu phi tuyến đa ràng buộc và xây dựng cơ sở toán học và giải
thuật di truyền giải bài toán này.


4. Đối tuợng và phạm vi nghiên cứu
-

Nghiên cứu các khái niệm cơ bản của giải thuật tiến hóa.

-

Nghiên cứu cơ chế hoạt động của giải thuật di truyền.

-

Xây dựng giải thuật di truyền cho bài toán tối ưu hóa hàm phi tuyến

-

Nghiên cứu bài toán lập khẩu phần ăn cho gia súc và ứng dụng giải thuật di truyền
trong bài toán lập khẩu phần ăn cho gia súc.

5. Đóng góp mói của đề tài
Luận văn hệ thống các kiến thức về giải thuật di truyền, xây dựng giải thuật giải
bài toán tối ưu hóa đa ràng buộc và ứng dụng giải thuật vào bài toán tối ưu hóa khẩu
phần thức ăn chăn nuôi.

6. Phương pháp nghiên cứu
-

Nghiên cứu lý thuyết kết họp với cài đặt thực nghiệm



8
Chương 1
CÁC KHÁI NIỆM Cơ BẢN VÈ GIẢI THUẬT DI TRUYỀN

1.1.

Mở đầu
Giải thuật di truyền (Gennetic Algorithm, viết tắt là GA) là giải thuật tìm kiếm,

chọn lựa các giải pháp tối ưu để giải quyết các bài toán khác nhau dựa trên cơ chế chọn
lọc tự nhiên của ngành di truyền học.
Trong cơ thể sinh vật, các gen liên kiết với nhau theo cấu trúc dạng chuỗi gọi là
nhiễm sắc thể, nó đặc trưng cho mỗi loài và quyết định sự sống còn của cơ thể đó.
Một loài muốn tồn tại phải thích nghi với môi trường, cơ thể sống nào 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 dần bị diệt chủng.
Môi trường tự nhiê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ờ vào 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 nên 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.
Các nguyên lý cơ bản của giải thuật được tác giả Holland đề xuất lần đầu vào
năm 1962. Nen tảng toán học của giải thuật GA được tác giả công bố trong cuốn sách
“iSy thích nghi trong các hệ thống tự nhiên và nhân tạo” xuất bản năm 1975.
Giải thuật GA được xem như một phương pháp tìm kiếm có bước chuyển ngẫu
nhiên mang tính tổng quát để giải các bài toán tối ưu hoá [1,3,4,9].

1.2.
1.2.1.


Các khái niệm cơ bản của giải thuật di truyền
Giói thiệu chung
Giải thuật GA thuộc lóp các giải thuật tìm kiếm tiến hoá. Khác với phần lớn các

giải thuật khác tìm kiếm theo điểm, giải thuật GA thực hiện tìm kiếm song song trên


9
một tập được gọi là quần thể các lời giải có thể.
Thông qua việc áp dụng các toán tử di truyền, giải thuật GA tráo đổi thông tin
giữa các cực trị và do đó làm giảm thiểu khả năng kết thúc giải thuật tại một cực trị địa
phương. Trong thực tế, giải thuật GA đã được áp dụng thành công trong nhiều lĩnh vực.
Giải thuật GA lần đầu được tác giả Holland giói thiệu vào năm 1962. Giải thuật
GA mô phỏng quá trình tồn tại của các cá thể có độ phù hợp tốt nhất thông qua quá
trình chọn lọc tự nhiên, sao cho khi giải thuật được thực thi, quần thể các lời giải tiến
hoá tiến dần tới lời giải mong muốn.
Giải thuật GA duy trì một quần thể các lời giải có thể của bài toán tối ưu hoá.
Thông thường, các lời giải này được mã hoá dưới dạng một chuỗi các gien. Giá trị của
các gien có trong chuỗi được lấy từ một bảng các ký tự được định nghĩa trước. Mỗi
chuỗi gien được liên kết với một giá trị được gọi là độ phù hợp. Độ phù hợp được dùng
trong quá trình chọn lọc.
Cơ chế chọn lọc đảm bảo các cá thể có độ phù họp tốt hơn có xác suất được lựa
chọn cao hơn. Quá trình chọn lọc sao chép các bản sao của các cá thể có độ phù họp tốt
vào một quần thể tạm thời được gọi là quần thể bố mẹ. Các cá thể trong quần thể bố mẹ
được ghép đôi một cách ngẫu nhiên và tiến hành lai ghép tạo ra các cá thể con.
Sau khi tiến hành quá trình lai ghép, giải thuật GA mô phỏng một quá trình khác
trong tự nhiên là quá trình đột biển, trong đó các gien của các cá thể con tự thay đổi giá
trị với một xác suất nhỏ.
Tóm lại, có 6 khía cạnh cần được xem xét, trước khi áp dụng giải thuật GA để

giải một bài toán, cụ thể:
+ Mã hoá lời giải thành cá thể dạng chuỗi.
+ Hàm xác định giá trị độ phù họp.
+ Sơ đồ chọn lọc các cá thể bố mẹ.
+ Toán tử lai ghép.
+ Toán tử đột biến.
+ Chiến lược thay thế hay còn gọi là toán tử tái tạo.


1
Có nhiều lựa chọn khác nhau cho từng vấn đề trên. Phần tiếp theo sẽ đưa ra cách
lựa chọn theo J.H. Holland khi thiết kế phiên bản giải thuật GA đầu tiên. Giải thuật này
được gọi là giải thuật di truyền đơn giản (SGA).

1.2.2.

Giải thuật di truyền đơn giản
Trong giải thuật di truyền của mình J. H. Holland sử dụng mã hoá nhị phân để

biểu diễn các cá thể, lý do là phần lớn các bài toán tối ưu hoá đều có thể được mã hoá
thành chuỗi nhị phân khá đơn giản [2,3].
Hàm mục tiêu, hàm cần tối ưu, được chọn làm cơ sở để tính độ phù hợp của từng
chuỗi cá thể. Giá trị độ phù họp của từng cá thể sau đó được dùng để tính toán xác suất
chọn lọc.
Sơ đồ chọn lọc trong giải thuật SGA là sơ đồ chọn lọc tỷ ỉệ. Trong sơ đồ chọn lọc
này, cá thể có độ phù họp f¡ có xác suất chọn lựa

ở đây N là số cá thể có trong quần thể.
Toán tử lai ghép trong giải thuật SGA là toán tử lai ghép một điểm cắt. Giả sử
chuỗi cá thể có độ dài L (có L bít), toán tử lai ghép được tiến hành qua hai giai đoạn là:

+ Hai cá thể trong quần thể bố mẹ được chọn một cách ngẫu nhiên vói phân bố
xác suất đều.


1
+ Sinh một số ngẫu nhiên j trong khoảng [1, L-1] . Hai cá thể con được tạo ra
bằng cách sao chép các ký tự từ 1 đến j và hoán đổi các ký tự từ j + 1 đến L.
Hai cá thể
Hai cá thể bố mẹ 10 0 1 1 1 0 1 0 1 0 1 0 0 1 1 1 1 1 0
10 0 1 1 1 0 1 1 0
Vị trí lai ______

>

0 10 0 111 10 1
Hình 1.1. Sơ đồ lai ghép 1 điểm cắt

Điều đáng lưu ý là giải thuật GA không yêu cầu toán tử lai ghép luôn xảy ra đối
với hai cá thể bố mẹ được chọn. Sự lai ghép chỉ xảy ra khi số ngẫu nhiên tương ứng với
cặp cá thể bố mẹ được sinh ra trong khoảng [0, 1) không lớn hơn một tham số Pc (gọi
là xác suất lai ghép). Nếu số ngẫu nhiên này lớn hơn Pc toán tử lai ghép không xảy ra.
Khi đó hai cá thể con là bản sao trực tiếp của hai cá thể bố mẹ.
Tiếp theo, J. H. Holland xây dựng toán tử đột biến cho giải thuật SGA. Toán tử
này được gọi là toán tử đột biển chuẩn. Toán tử đột biến duyệt từng gien của từng cá
thể con được sinh ra sau khi tiến hành toán tử lai ghép và tiến hành biến đổi giá trị từ 0
sang 1 hoặc ngược lại với một xác suất Pm được gọi là xác suất đột biến.
Cuối cùng là chiến lược thay thế hay còn gọi là toán tử tái tạo. Trong giải thuật
SGA, quần thể con được sinh ra từ quần thể hiện tại thông qua 3 toán tử là chọn lọc, lai
ghép và đột biến thay thế hoàn toàn quần thể hiện tại và trở thành quần thể hiện tại của
thế hệ tiếp theo.



1
Sơ đồ tổng thể của giải thuật được thể hiện qua thủ tục GSA() trình bày dưới đây:
Thủ tục SGA() /* Giải bài toán tối ưu */
{ k = 0;
//Khởi tạo quần thể Po một cách ngẫu nhiên.
khởi_tạo (Pk);
//Tính giá trị hàm mục tiêu cho từng cá thế.
tính_hàra_mục_tiêu (Pk);
// Đặt lời giải của giải thuật bằng cá thể có giá trị hàm mục tiêu tốt nhất. Xbest
= tốt_nhất (Pk);
do { // Chuyển đổi giả trị hàm mục tiêu thành giả trị độ phù hợp và H tiến hành
chọn lọc tạo ra quần thể bổ mẹ pparent Pparent = chọn_lọc (Pk);
// Tiến hành lai ghép và đột biển tạo ra quần thể cá thể con pchild Pchild
= đột_biến (lai_ghép (Pparent));
// Thay thể quần thể hiện tại bằng quần thể cá thể con
k = k + 1;
Pk — Pchildỉ
tính_hàm_mục_tiêu (Pk);
// Neu giá trị hàm mục tiêu obj của cá thể tốt nhẩtX trong quần // thể Pk
lởn hơn giá trị hàm mục tiêu của xbest thì thay thể lời giải X = tốt_nhất
(Pk);
if ( obj (X) > obj (Xbest) ) xbest = X;
} while (k < G); /* Tiến hành G thể hệ */ return (Xbest);
/* Trả về lời giải của giải thuật GA*/


1
}

Giải thuật di truyền phụ thuộc vào bộ 4 (N, Pc, pm, G), trong đó:
N - số cá thể trong quần thể; Pc - xác suất lai ghép; pm - xác suất đột biến; G - số
thế hệ cần tiến hoá.
Đó chính là các tham số điều khiển của giải thuật SGA. Cá thể có giá trị hàm mục
tiêu tốt nhất của mọi thế hệ là lời giải cuối cùng của giải thuật SGA. Quần thể đầu tiên
được khởi tạo một cách ngẫu nhiên.
Ví dụ: xét bài toán tìm max của hàm J{x) = X 2 với X là số nguyên trên đoạn
[0,31].
Để sử dụng giải thuật di truyền ta mã hóa mỗi số nguyên X trong đoạn [0,31] bởi
một số nhị phân có độ dài 5, chẳng hạn chuỗi 11000 là mã của số nguyên 24.
Hàm thích nghi được xác định chính là hàm/(x)=x2.
Quần thể ban đầu gồm 4 cá thể (kích thước quần thể n=4).
Thực hiện quá trình chọn lọc ta có bảng sau, trong bảng này ta thấy cá thể 2 có độ
thích nghi cao nhất nên nó được chọn 2 lần, cá thể 3 có độ thích nghị thấp nhất không
được chọn lần nào, mỗi cá thể 1 và 4 được chọn 1 lần.
Bảng 1.1. Minh họa quá trình chọn lọc
Số hiệu cá
Quần thể ban
Đô thích nghi
X
thể
đầu
f(x)=x2
13
169
1
0 110 1

Số lần được
chọn

1

2
3

1 1000

24

576

2

0 1000

64

0

4

1 0 0 11

8
19

361

1


Thực hiện quá trình lai ghép với xác suất lai ghép Pc=l, cả 4 cá thể sau chọn lọc
đều được lai ghép.
Kết quả lai ghép được cho trong bảng sau, trong bảng này, chuỗi thứ nhất được lai
ghép với chuỗi thứ hai với điểm lai ghép là 4, hai chuỗi còn lại được lai ghép với nhau
với điểm ghép là 2.


1
Bảng 1.2. Minh họa quá trình lai ghép
Quần thể sau
Điểm
Quần thể sau lai
chon ỉoc • •
ghép
ghép
0 1 1 011

4

0 11 0 0

1 1 0010

4

1 11 0 0 0
1 010 1 1

X


Độ thích nghi
f(x)=x*
144

11 0 0 1

12
25

2

11 0 11

27

729

2

1 0000

16

256

625

Để thực hiện quá trình đột biến, ta chọn xác suất đột biến pm=0.001, tức là ta hy
vọng có 5 X 4 X 0.001 = 0.02 bit được đột biến, do đó sẽ không có bit nào được đột
biến.

Như vậy thế hệ quần thể mới là quần thể sau lai ghép.
Ta thấy rằng trong thế hệ ban đầu độ thích nghi cao nhất là 576 và độ thích nghi
trung bình là 292. Còn trong thế hệ mới, độ thích nghi cao nhất là 729 và độ thích nghi
trung bình là 438. Như vậy chỉ qua một thế hệ, các cá thể đã “tốt lên” rất nhiều.

1.3.

Cơ chế hoạt động của giải thuật di truyền
Giải thuật di truyền với biểu diễn nhiễm sắc thể bằng mã hóa nhị phân đã được đề

cập sơ bộ trong chương 1. Trong phần này chúng ta sẽ tìm hiểu sâu hơn về giải thuật di
truyền này thông qua một bài toán tối ưu số [4,9],
Không làm mất tính tổng quát, ta giả định 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 /. Bài toán tìm cực tiểu hàm g chính là bài toán tìm cực đại hàm / =
- g , hơn nữa ta có thể giả định hàm mục tiêu / 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 k biến f(x 1,.., Xk): Rk
—>R. Giả sử thêm là mỗi biến Xi có thể nhận giá trị trong miền Dị = [dị,bị] ç R và/
(*!,.., Xk) > 0 với mọi Xi e Dị. Ta muốn tối ưu hàm /với độ chính xác cho trước: giả sử
cần 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 Dị cần được phân cắt thành (bi - dị)


1
X 10" miền con bằng nhau, gọi m là số nguyên nhỏ nhất sao cho
(bi -a, )xl0" < 2m‘ -1
Như vậy mỗi biến Xi được biểu diễn bằng một chuỗi nhị phân có chiều dài m,.
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ầu. 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 Xi
b —d

Xị -dị + decimal(string2) '
Trong đó hàm decimal(stringz) 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ân có chiều dài m = ^ mi, mi bit đầu tiên biểu diễn giá trị trong
khoảng [d\,b{\, m2 bit kế tiếp biểu diễn giá trị trong khoảng [a2,b2], ...
Đe 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ới.
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ả 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 nghi.
Ta xây dựng bánh xe Rulet như sau (giả định rằng các độ thích nghi đều dương)
+ Tính độ thích nghi eval(Vị) của mỗi nhiễm sắc thể Vị 0' = 1,.. .,pop_sỉze)
+ Tìm tổng giá trị thích nghi toàn quần thể: F = siỉeevaliVị)


1
+ Tính xác suất chọnPi cho mỗi nhiễm sắc thể Vị, (i= 1,.. .,pop_sỉze)\
pi = evaliyi) / F
+ Tính vị trí xác suất Ọi của mỗi nhiễm sắc thể Vi, (i= 1,.. .,pop_sỉze)\
=Tj=1Pi
Tiến trình chọn lọc thực hiện bằng cách quay bánh xe Rulet pop_sỉze 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ố r trong khoảng [0..1]
+ Nếu r thứ i, Vị (2 < i 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 đi.


1


Hình 1.2. Minh hoa bánh xe rulet
*
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_sizexpc mong đợi, các nhiễm sắc thể này được dùng trong tác vụ lai
tạo. 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ố r trong khoảng [0,1]
+ Nếu r < pc, hãy chọn nhiễm sắc thể đó để lai tạo 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 lai. Hai nhiễm sắc
thể:
i^b\b2- • -bposbpos+i- • -bm) va (cjC2. ...Cp0JCp0J+i...cm)
được thay bằng một cặp con của chúng:
(b\b2• • -bposCpos+l - • -Cm) va (C1C2... •Cposbpos+l • • •bm)



1
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ến pm, cho ta số bit đột biến pmxmxpop_size
mong đợi. 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ại. 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ố r trong khoảng [0,1]
+ Nếu rSau 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.
Toàn bộ tiến trình sẽ được minh hoạ trong một ví dụ cực đại hoá hàm:
f(xl, x2) = 21.5 + Xx sin( Anxx) +x2 sin( 207a2)
Giả sử kích thước quần thể pop_sỉze = 20, các xác suất di truyền tương ứng là pc
= 0.25 và pm = 0.01.
Giả sử cần tính chính xác đến 4 số lẻ đối với mỗi biến. Miền của biến X\ có chiều
dài 15.1, điều kiện chính xác đòi hỏi đoạn [-3.0, 12.1] cần được chia thành các khoảng
có kích thước bằng nhau, ít nhất là 15.1x10000 khoảng, điều này cần 18 bit làm phần
đâu tiên của nhiễm sắc thể: 217 < 151000 < 218 Miền của biến x2 có chiều dài là 1.7,
điều kiện chính xác đòi hỏi đoạn [4.1,5.8] cần được chia thành các khoảng có kích
thước bằng nhau là 1.7x10000 khoảng, điều này nghĩa là cần 15 bit làm thành phần
cuối của nhiễm sắc thể: 214 < 17000 < 215.
Chiều dài toàn bộ nhiễm sắc thể (vectơ lời giải) là m =18+15 = 33.
Để cực đại hoá hàm/bằng giải thuật di truyền ta tạo ra một quần thể có pop_sỉze



1
= 20 nhiễm sắc thể. Cả 33 bit trong tất cả các nhiễm sắc thể đều được khởi tạo ngẫu
nhiên.
Giả sử sau tiến trình khởi tạo ta có quần thể sau đây:
Vi = (100110100000001111111010011011111) v2 =
(111000100100110111001010100011010)

v3

=

(000010000011001000001010111011101)

v4

=

(100011000101101001111000001110010)

v5

=

(000111011001010011010111111000101)

v6

=

(000101000010010101001010111111011)

Vj = (001000100000110101111011011111011) v8 =
(100001100001110100010110101100111)
Vg = (011000000101100010110000001111100)
Vio = (000001111000110000011010000111011)
Vu =(011001111110110101100001101111000)
V12 = (110100010111101101000101010000000)
V13 = (111011111010001000110000001000110)
V14 = (010010011000001010100111100101001)
Vis = (111011101101110000100011111011110)
V16 = (110011110000011111100001101001011)
V17 = (011010111111001111010001101111101)
Vis = (011101000000001110100111110101101)
V19 = (000101010011111111110000110001100)
V20 = (101110010110011110011000101111110)
Trong giai đoạn lượng giá ta giải mã từng nhiễm sắc thể và tính giá trị hàm thích
nghi từ các giá trị (jCi, x2) mới giải mã, ta có: eva/(vi) =/(6.084492,5.652242) =
26.019600 eval(v2) =/(10.348434,4.380264) = 7.580015
eval(vì) =/(-2.516603,4.390381) = 19.626329
eval(yA) =/(5.278638,5.593460) = 17.406725


2
eval(v5) =/(-1.255173,4.734458) = 25.341160
eval(v6) =/(-1.811725,4.391937) = 18.100417
eval(y7) =/(-0.991471,5.680258) = 16.020812
eva/(vg) =/(4.910618,4.703018) = 17.959701
evaỉ(v9) =/(0.795406,5.381472) = 16.127799
evaỉ(v10) =/(-2.554851,4.793707) = 21.278435
evfl/(vn) =/(3.130078,4.996097) = 23.410669
eval(y12) =/(9.356179,4.239457) = 15.011619

evaỉ{vn) =/(11.134646,5.378671) = 27.316702
evfl/(v14) =/(1.335944,5.151378) = 19.876294
evaỉ(v15) =/(11.089025,5.054515) = 30.060205
evfl/(v16) =/(9.211598,4.993762) = 23.967227
evfl/(v17) =/(3.367514,4.571343) = 13.696165
evfl/(vis) =/(3.843020,5.158226) = 15.414128
evaỉ(v19) =/(-1.746635,5.395584) = 20.095903
evaỉ(v20) =/(7.935998,4.757338) = 13.666916
Rõ ràng nhiễm sắc thể Vi5 mạnh nhất và nhiễm sắc thể V2 yếu nhất.
Tiếp theo ta xây dựng bánh xe Rulet cho tiến trình chọn lọc. Tổng độ thích
nghi của quần thể là:
F = 2° evalịVị) = 387.776822
Xác suất chọn lọc Pi của mỗi nhiễm sắc thể V, (i = 1,.. .,20) là:
P\ = eval(v\)/F = 0.067099 P2
= eval(v2)/F = 0.019547 /73 =
eval{v^)IF = 0.050355 /74 =
eval(vậ)ỈF = 0.044889


2
Ps = eval(v5)/F = 0.065350 p6 = eval(v6)/F = 0.046677 Pi =
eval(v7)/F = 0.041315 Pi = eval(v$)/F = 0.046315 p9 =

ỗ<■*
IIto

eval(v9)/F = 0.041590
p 10 = eval(vw)ỈF = 0.054873
:
Pn = eval(vu)ỈF

= 0.060372
■■
=0.038712
Pis =
= 0.070444
eval(vis)ỈF :
Pu = eval(vu)/F
= 0.051257
-Pis = evaUyis)/F
= 0.077519
-Pu = eval(vu)ỈF
= 0.061549
-Pn = eval(vn)ỈF
= 0.035320
-Pu = evaỉ(vn)/F
= 0.039750
-Pi9 = eval(vi9)ỈF
= 0.051823
=
P20 =
= 0.035244
eval(v2o)/F =
Các vị trí xác suất 4, của mỗi nhiễm sắc thể Vị 0' = 1,.., 20) là:
qi = 0.067099
42 = 0.086647
43 = 0.137001

44 = 0.181890

45 = 0.247240


46 = 0.293917

47 = 0.335232

48 = 0.381546

49 = 0.423137

410 = 0.478009

4n = 0.538381
413 = 0.647537

412 = 0.577093
414 = 0.698794

415 = 0.776314

416 = 0.837863

417 = 0.873182

418 = 0.812932

419 = 0.964756

420 = 1.000000

Tiếp theo ta quanh bánh xe Rulet 20 lần, mỗi lần chọn một nhiễm sắc thể cho

quần thể mới. Giả sử thứ tự (ngẫu nhiên) của 20 số trong khoảng [0,1]


2

được phát sinh là:
0.513870
0.534534

0.175741
0.947628

0.702231
0.424720

0.226431
0.703899

0.277226

0.368071

0.005398
0.767139

0.765682
0.780237

0.3086
52

0.1717
36
0.49477
3
0.3896
47
0.9834
37
0.6464
73

Số đầu tiên r = 0.513870 lớn hơn #10 và nhỏ hơn qn, nghĩa là nhiễm sắc thể Vu
được chọn vào quần thể mới, số thứ hai r = 0.175741 lớn hơn qs nhỏ hơn v4 được chọn cho quần thể mới,....
Như vậy quần thể mới gồm các nhiễm sắc thể sau: v'i =
Vu = (011001111110110101100001101111000)
V

2 = V4 = (100011000101101001111000001110010)
V3 = v7 = (001000100000110101111011011111011) v'4 =
vn = (011001111110110101100001101111000)
V5 = V19 = (000101010011111111110000110001100)
V6 = V4 = (100011000101101001111000001110010)
V7 = Vis = (111011101101110000100011111011110)
V8 = Vs = (000111011001010011010111111000101)
V

9 = V11 =
(011001111110110101100001101111000) v'io =
v3 = (000010000011001000001010111011101)


V

n = Vis =
(111011101101110000100011111011110) v'i2
= Vỹ =
(011000000101100010110000001111100)
v'i3 = v6 = (000101000010010101001010111111011)


2
v'i4

=

v8

=

(100001100001110100010110101100111) v'is =
V20 = (101110010110011110011000101111110) v'lfi = V! =
(100110100000001111111010011011111) v'17 = V10 =
(000001111000110000011010000111011) v'is = V13 =
(111011111010001000110000001000110) v'19 = Vis =
(111011101101110000100011111011110) v'20 = V16 =
(110011110000011111100001101001011)
Tiếp theo ta sẽ áp dụng phép toán kết họp, lai cho những cá thể trong quần thể
mới (các véc tơ v'i). Xác suất lai ghép Pc = 0.25 vì thế ta hy vọng 25% nhiễm sắc thể
sẽ tham gia lai tạo. Ta tiến hành theo cách sau:
+ Đối với mỗi nhiễm sắc thể trong quần thể mới ta phát sinh ngẫu nhiên một số r

trong khoảng [0,1],
+ Nếu r < 0.25 ta chọn một nhiễm sắc thể cho truớc để lai tạo Giả
sử thứ tự các số ngẫu nhiên là
0.822951

0.151932

0.314685
0.519760

0.346901
0.401154

0.785402
0.166525

0.031523
0.574520

0.581893
0.355635

0.389248
0.826927

0.62547
70.91720
4
0.60675
8

0.86992
1
0.75840
0
0.20023
2

Điều này có nghĩa là các nhiễm sắc thể V '2, V '11, V '13 và V 'is đã đuợc chọn để
lai tạo.
Tiếp theo ta cho lai tạo một cách ngẫu nhiên, ví dụ (v 2, V ’11) và (v '13, V ’i8)
đuợc kết cặp. Đối với mỗi cặp trong 2 cặp này, ta phát sinh một số nguyên ngẫu nhiên
pos thuộc khoảng {1,..,32}. số pos cho biết vị trí của điểm lai tạo.


2
Cặp nhiễm sắc thể đầu tiên là:
V

2 = (1000110001101101001111000001110010) v'n =
(1110111011101110000100011111011110)

và giả sử số phát sinh là pos = 9, kết quả lai tạo là: v' 2 =
(1000110001101110000100011111011110) v"n =
(1110111011101101001111000001110010) Cặp nhiễm sắc thể
thứ hai là:
v'i3 =
(0001010000100101010011010111111011) v'i8
= (1110111110100010001110000001000110) và
giả sử số phát sinh là pos = 20, kết quả lai tạo là: v”i3 =
(0001010000100101010010000001000110) v”i8

= (1110111110100010001111010111111011)
Cuối cùng quần thể hiện hành là
v'i = (011001111110110101100001101111000)
V

2 = (1000110001101110000100011111011110)

V

3 = (001000100000110101111011011111011)

V

4 = (011001111110110101100001101111000)
V5 = (000101010011111111110000110001100)

V

6 = (100011000101101001111000001110010)

V

7 = (111011101101110000100011111011110)

V

8 = (000111011001010011010111111000101)
V9 = (011001111110110101100001101111000)
v'io = (000010000011001000001010111011101)


V

n = (1110111011101101001111000001110010) v'i2
= (011000000101100010110000001111100)
v'i3 =
(0001010000100101010010000001000110)


2
v'i4 =
(100001100001110100010110101100111)
v'is = (101110010110011110011000101111110)
V 'i6 = (100110100000001111111010011011111)
v'i7 = (000001111000110000011010000111011)
v'is = (1110111110100010001111010111111011)
v'i9 = (111011101101110000100011111011110)
v'20 = (110011110000011111100001101001011)
Phép toán kế tiếp, đột biến thực hiện trên cơ sở từng bit một. Xác suất đột biến pm
= 0.01, vì thế ta hy vọng 1/100 số bit sẽ qua đột biến. Có 660 bit cmxpop_size = 33x20)
trong toàn quần thể, ta hy vọng có 6.6 đột biến ở mỗi thế hệ.
Mỗi bit có cơ hội đột biến ngang nhau, nên với mỗi bit trong quần thể ta phát sinh
một số ngẫu nhiên r trong khoảng [0,1], nếu r < 0.01 thì ta đột biến bit này.
Điều này có nghĩa ta phát sinh 660 số ngẫu nhiên. Giả sử có 5 trong 660 số này
nhỏ hơn 0.01 (bảng dưới).
BảngVi
1.3.
tríMinh
bit • họa quá trình đột biến
rm
oÀA1■A

Sô 0.000213
ngâu nhiên
112
349

0.009945

418

0.009909

429

0.005425

602

0.002835

Bảng sau cho biết nhiễm sắc thể, vị trí của bit bị đột biến tương ứng với 5 vị trí
bit trên.


×