Tải bản đầy đủ (.pdf) (67 trang)

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 (1.11 MB, 67 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 01 12

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


LỜI CẢM ƠN
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 ơn 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 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 K17 –
Đợ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


LỜI CAM ĐOAN
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
ai công bố trong bất kỳ công trình nào khác.

Học viên

Đỗ Thị Minh Phương


MỤC LỤC
MỞ ĐẦU ........................................................................................................... 1
1. Lý do chọn đề tài ....................................................................................... 1
2. Mục đích nghiên cứu ................................................................................. 2
3. Nhiệm vụ nghiên cứu ................................................................................ 2
4. Đối tƣợng và phạm vi nghiên cứu............................................................. 2
5. Đóng góp mới của đề tài ........................................................................... 2
6. Phƣơng pháp nghiên cứu .......................................................................... 2

Chƣơng 1. CÁC KHÁI NIỆM CƠ BẢN VỀ GIẢI THUẬT DI TRUYỀN ..... 3
1.1. Mở đầu ................................................................................................... 3
1.2. Các khái niệm cơ bản của giải thuật di truyền ....................................... 4
1.2.1. Giới thiệu chung.............................................................................. 4
1.2.2. Giải thuật di truyền đơn giản .......................................................... 5
1.3. Cơ chế hoạt động của giải thuật di truyền ............................................. 9
Chƣơng 2. GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN TỐI ƢU ĐA
RÀNG BUỘC ................................................................................................. 23
2.1. Giải thuật di truyền với biểu diễn thực ................................................ 23
2.1.1 Biểu diễn nhiễm sắc thể bằng số thực ............................................ 23
2.1.2 Nhóm toán tử đột biến ................................................................... 24
2.1.3. Nhóm toán tử lai tạo ..................................................................... 26
2.2. Vấn đề tối ƣu số và xử lý ràng buộc .................................................... 28
2.2.1 Bài toán tối ƣu số ........................................................................... 28
2.2.2 Đột biến đồng dạng ........................................................................ 31
2.2.3 Đột biến biên .................................................................................. 32
2.2.4 Đột biến không đồng dạng ............................................................. 32
2.2.5 Lai số học ....................................................................................... 32


2.2.6 Lai đơn giản ................................................................................... 33
Chƣơng 3. Ứ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 .................. 34
3.1. Bài toán tối ƣu hóa khẩu phần thức ăn chăn nuôi ................................ 34
3.2. Xây dựng giải thuật di truyền xác định khẩu phần thức ăn chăn
nuôi .............................................................................................................. 40
3.2.1. Xác định hàm mục tiêu và các ràng buộc ..................................... 40
3.2.2 Xây dựng giải thuật di truyền tối ƣu hóa khẩu phần thức ăn
lợn ................................................................................................................ 42
KẾT LUẬN VÀ ĐỊNH HƢỚNG PHÁT TRIỂN ........................................... 59

TÀI LIỆU THAM KHẢO ............................................................................... 60


DANH MỤC BẢNG

Bảng 1.1. Minh họa quá trình chọn lọc ............................................................. 8
Bảng 1.2. Minh họa quá trình lai ghép .............................................................. 9
Bảng 2.1. Minh họa quá trình đột biến ........................................................... 20
Bảng 2.2. Các vị trí đột biến ........................................................................... 21
Bảng 3.1. Bảng dinh dƣỡng tại các thời kỳ nuôi............................................. 35
Bảng 3.2. Khuyến cáo chất dinh dƣỡng cần thiết trong một khẩu phần
thức ăn ............................................................................................. 36
Bảng 3.3. Thành phần thức ăn thƣờng sử dụng trong khẩu phần thức ăn ...... 37
Bảng 3.4: Giá các thành phần dinh dƣỡng tại Việt Nam ................................ 51
Bảng 3.5: Phân tích khẩu phần thức ăn – thử nghiệm 1 ................................. 52
Bảng 3.6: Phân tích khẩu phần thức ăn – thử nghiệm 2 ................................. 53
Bảng 3.7: Phân tích khẩu phần thức ăn – thử nghiệm 3 ................................. 54
Bảng 3.8: Phân tích khẩu phần thức ăn – thử nghiệm 4 ................................. 55
Bảng 3.9: Phân tích khẩu phần thức ăn – thử nghiệm 5 ................................. 56
Bảng 3.10: Phân tích khẩu phần thức ăn – thử nghiệm 6 ............................... 57


DANH MỤC HÌNH
Hình 1.1. Sơ đồ lai ghép 1 điểm cắt ................................................................. 6
Hình 1.2. Minh họa bánh xe Rulet ................................................................. 12
Hình 2.2. Biểu diễn giá trị của  ..................................................................... 25


1


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àm f(x), x=(x1,…,xq) 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+1,..,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


2


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 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 tƣợ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



3

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. Nền 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 “Sự 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


4


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. Các khái niệm cơ bản của giải thuật di truyền
1.2.1. 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 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ỏ.



5

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.
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ỷ lệ. Trong sơ đồ
chọn lọc này, cá thể có độ phù hợp f i có xác suất chọn lựa
pi  fi /  j 1 f j ,
N

ở đâ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.


6

+ 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ể bố mẹ

Hai cá thể con

1 0 0 1 1 1 0 1 0 1

1 0 0 1 1 1 0 1 1 0

0 1 0 0 1 1 1 1 1 0

0 1 0 0 1 1 1 1 0 1

Vị trí lai
ghép

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.


7

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ể P0 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àm_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à
// 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);
// Nếu giá trị hàm mục tiêu obj của cá thể tốt nhất X 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);


8

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*/
}
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 f(x) = x2 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 f(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

13

Độ thích nghi
f(x)=x2
169

Số lần đƣợc
chọn
1

11000

24

576

2

3

01000

8

64


0

4

10011

19

361

1

Số hiệu cá
thể
1

Quần thể ban
đầu
01101

2

x


9

Thực hiện quá trình lai ghép với xác suất lai ghép pc=1, 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.
Bảng 1.2. Minh họa quá trình lai ghép
Quần thể sau

Điểm

Quần thể sau

chọn lọc

ghép

lai ghép

0 1 1 0|1

4

01100

12

144

1 1 0 0|0

4

11001


25

625

1 1|0 0 0

2

11011

27

729

1 0|0 1 1

2

10000

16

256

x

Độ thích nghi
f(x)=x2


Để 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 f. Bài toán tìm cực tiểu hàm g chính là bài toán


10

tìm cực đại hàm f = -g, 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 k biến
f(x1,.., xk): RkR. Giả sử thêm là mỗi biến xi có thể nhận giá trị trong miền
Di = [ai,bi]  R và f(x1,.., xk)  0 với mọi xi  Di. Ta muốn tối ƣu hàm f 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 Di cần đƣợc phân cắt thành
(bi - ai)  10n miền con bằng nhau, gọi m là số nguyên nhỏ nhất sao cho
(bi  a i )  10 n  2 mi  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 mi. 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
xi  ai  decimal ( string 2 )

bi a i
2 mi  1

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ân có chiều dài m  i 1 mi , m1 bit đầu tiên biểu diễn giá trị trong
k

khoảng [a1,b1], m2 bit 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 f 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.


11

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(vi) của mỗi nhiễm sắc thể vi (i = 1,…, pop_size)
+ Tìm tổng giá trị thích nghi toàn quần thể: F  i 1

pop size

eval(vi )

+ Tính xác suất chọn pi cho mỗi nhiễm sắc thể vi, (i = 1,…, pop_size):
pi  eval(vi ) / F

+ Tính vị trí xác suất qi của mỗi nhiễm sắc thể vi, (i = 1,…, pop_size):
qi   j 1 pi
i

Tiến trình chọn lọc thực hiện bằng cách quay bánh xe Rulet pop_size
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  q1 thì chọn nhiễm sắc thể đầu tiên v1, ngƣợc lại thì chọn nhiễm
sắc thể thứ i, vi (2  i  pop_size) sao cho qi-1 rqi
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.


12


eval(v2)
eval(vn)

eval(v1)

Hình 1.2. Minh họa 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_sizepc 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ể:
(b1b2…bposbpos+1…bm) và (c1c2.…cposcpos+1…cm)
đƣợc thay bằng một cặp con của chúng:
(b1b2…bposcpos+1…cm) và (c1c2.…cposbpos+1…bm)


13

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
pmmpop_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 ( x1 , x2 )  21.5  x1 sin( 4x1 )  x 2 sin( 20x2 )

Giả sử kích thƣớc quần thể pop_size = 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 x1
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.110000 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.710000 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.


14

Để cực đại hoá hàm f bằng giải thuật di truyền ta tạo ra một quần thể có
pop_size = 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:
v1 = (100110100000001111111010011011111)
v2 = (111000100100110111001010100011010)
v3 = (000010000011001000001010111011101)
v4 = (100011000101101001111000001110010)
v5 = (000111011001010011010111111000101)
v6 = (000101000010010101001010111111011)
v7 = (001000100000110101111011011111011)
v8 = (100001100001110100010110101100111)
v9 = (011000000101100010110000001111100)
v10 = (000001111000110000011010000111011)
v11 = (011001111110110101100001101111000)
v12 = (110100010111101101000101010000000)
v13 = (111011111010001000110000001000110)
v14 = (010010011000001010100111100101001)
v15 = (111011101101110000100011111011110)
v16 = (110011110000011111100001101001011)
v17 = (011010111111001111010001101111101)
v18 = (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ị (x1, x2) mới giải mã, ta có:
eval(v1) = f(6.084492,5.652242) = 26.019600
eval(v2) = f(10.348434,4.380264) = 7.580015


15


eval(v3) = f(-2.516603,4.390381) = 19.626329
eval(v4) = f(5.278638,5.593460) = 17.406725
eval(v5) = f(-1.255173,4.734458) = 25.341160
eval(v6) = f(-1.811725,4.391937) = 18.100417
eval(v7) = f(-0.991471,5.680258) = 16.020812
eval(v8) = f(4.910618,4.703018) = 17.959701
eval(v9) = f(0.795406,5.381472) = 16.127799
eval(v10) = f(-2.554851,4.793707) = 21.278435
eval(v11) = f(3.130078,4.996097) = 23.410669
eval(v12) = f(9.356179,4.239457) = 15.011619
eval(v13) = f(11.134646,5.378671) = 27.316702
eval(v14) = f(1.335944,5.151378) = 19.876294
eval(v15) = f(11.089025,5.054515) = 30.060205
eval(v16) = f(9.211598,4.993762) = 23.967227
eval(v17) = f(3.367514,4.571343) = 13.696165
eval(v18) = f(3.843020,5.158226) = 15.414128
eval(v19) = f(-1.746635,5.395584) = 20.095903
eval(v20) = f(7.935998,4.757338) = 13.666916
Rõ ràng nhiễm sắc thể v15 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  i 1 eval(vi )  387.776822
20

Xác suất chọn lọc pi của mỗi nhiễm sắc thể vi (i = 1,…,20) là:
p1 = eval(v1)/F = 0.067099
p2 = eval(v2)/F = 0.019547
p3 = eval(v3)/F = 0.050355
p4 = eval(v4)/F = 0.044889



16

p5 = eval(v5)/F = 0.065350
p6 = eval(v6)/F = 0.046677
p7 = eval(v7)/F = 0.041315
p8 = eval(v8)/F = 0.046315
p9 = eval(v9)/F = 0.041590
p10 = eval(v10)/F = 0.054873
p11 = eval(v11)/F = 0.060372
p12 = eval(v12)/F =0.038712
p13 = eval(v13)/F = 0.070444
p14 = eval(v14)/F = 0.051257
p15 = eval(v15)/F = 0.077519
p16 = eval(v16)/F = 0.061549
p17 = eval(v17)/F = 0.035320
p18 = eval(v18)/F = 0.039750
p19 = eval(v19)/F = 0.051823
p20 = eval(v20)/F = 0.035244
Các vị trí xác suất qi của mỗi nhiễm sắc thể vi (i = 1,.., 20) là:
q1 = 0.067099

q2 = 0.086647

q3 = 0.137001

q4 = 0.181890

q5 = 0.247240


q6 = 0.293917

q7 = 0.335232

q8 = 0.381546

q9 = 0.423137

q10 = 0.478009

q11 = 0.538381

q12 = 0.577093

q13 = 0.647537

q14 = 0.698794

q15 = 0.776314

q16 = 0.837863

q17 = 0.873182

q18 = 0.812932

q19 = 0.964756

q20 = 1.000000



17

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]
đƣợc phát sinh là:
0.513870

0.175741

0.308652

0.534534

0.947628

0.171736

0.702231

0.226431

0.494773

0.424720

0.703899

0.389647


0.277226

0.368071

0.983437

0.005398

0.765682

0.646473

0.767139

0.780237

Số đầu tiên r = 0.513870 lớn hơn q10 và nhỏ hơn q11, nghĩa là nhiễm sắc
thể v11 đƣợc chọn vào quần thể mới, số thứ hai r = 0.175741 lớn hơn q3 nhỏ
hơn q4, nghĩa là 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’1 = v11 = (011001111110110101100001101111000)
v’2 = v4 = (100011000101101001111000001110010)
v’3 = v7 = (001000100000110101111011011111011)
v’4 = v11 = (011001111110110101100001101111000)
v’5 = v19 = (000101010011111111110000110001100)
v’6 = v4 = (100011000101101001111000001110010)
v’7 = v15 = (111011101101110000100011111011110)
v’8 = v5 = (000111011001010011010111111000101)
v’9 = v11 = (011001111110110101100001101111000)
v’10 = v3 = (000010000011001000001010111011101)

v’11 = v15 = (111011101101110000100011111011110)
v’12 = v9 = (011000000101100010110000001111100)
v’13 = v6 = (000101000010010101001010111111011)


18

v’14 = v8 = (100001100001110100010110101100111)
v’15 = v20 = (101110010110011110011000101111110)
v’16 = v1 = (100110100000001111111010011011111)
v’17 = v10 = (000001111000110000011010000111011)
v’18 = v13 = (111011111010001000110000001000110)
v’19 = v15 = (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 trƣớc để lai tạo
Giả sử thứ tự các số ngẫu nhiên là
0.822951

0.151932

0.625477

0.314685

0.346901


0.917204

0.519760

0.401154

0.606758

0.785402

0.031523

0.869921

0.166525

0.574520

0.758400

0.581893

0.389248

0.200232

0.355635

0.826927


Điều này có nghĩa là các nhiễm sắc thể v’2, v’11, v’13 và v’18 đã đƣợ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’18)
đƣợ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.


×