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

ứng dụng phương pháp tính toán tiến hóa để giải bài toán lập lịch gia công chi tiết máy

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 (30.69 MB, 95 trang )

r í s '
r\hỉ
JQ' '■
ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ
ĐỖ THỊ MINH HUỜNG
ỨNG DỤNG
PHƯƠNG PHÁP TÍNH TOÁN TIẾN HOÁ
ĐỂ GIẢI BÀI TOÁN
LẬP LỊCH GIA CÔNG CHI TIÊT MÁY
Chuyên ngành: Công nghệ thông tin
Ma số : 01.01.10
LUẬN VĂN THẠC s ĩ
Người hướng dẫn khoa học
TIẾN Sĩ HOÀNG XUÂN HUẤN
Hà Nội - Năm 2002
MỤC LỤC
Mở đẩu ị
Chương 1 Thuật toán di truyền và tính toán tiến hoá

3
1.1.Sơ lược về lịch sử 3
1.2.Thuật toán di truyền cổ điển 4
1.2.1.Cấu trúc của thuật toán di truyền cổ điển
4
1.2.2.Cơ sở toán học của thuật toán di truyền cổ điển 7
1.2.2.1 .Khái niệm lược đồ 7
1.2.2.2. Tính chất của lược đồ 8
1.2.2.3. Mối quan hộ giữa lược đồ và quá trình tiến hoá của thuật toán di truyền
cổ điển 9
1.2.3.So sánh thuật toán di truyền cổ điển với một số thuật toán truyền thống


k h ác 13
ỉ .2.4.Một số cải tiến của thuậl toán di truyền cổ điển

15
1.2.4.1.Cải tiến về phương pháp chọn lọc (m odGA l)
15
1.2.4.2.Cải tiến về hàm mục tiêu 17
1.2.4.3.Thuật toán di truyền cổ điển với kích thước quẩn thể thay đổi (modGA2)
19
1.2.4.4.Một số cải tiến của phép trao đổi chéo 21
1.2.4.5.Thuậl toán di truyền hỗn hợp (modG A3) 24
1.3.Tính toán tiến hóa 25
1.3.1.Các chiến lược liến hoá 26
1.3.1.1.Nội dung của các chiến lược tiến hoá 26
1.3. ] .2.So sánh các chiến lược tiến hoá và thuật toán di truyền cổ điển

29
Ị .3.2.Lập trình tiến hoá và lập trình di truyền
30
1.3.2.1 .Lập trình tiến hoá 30
1.3.2.2.Lập trình đi truyền 32
1.3.3.Chương trình tiến hoá 33
Chương 2 Bài toán lập lịch gia công chi tiết máy và phương pháp giải truyền
thống 38
2.1.Nội dung bài toán 39
2.2.Phương pháp giải truyền thống 40
2.2.1 .Trường hợp gia công trên hai máy 40
2.2.2.Trường hợp gia công trên ba máy 43
Chương 3 Mô hình tính toán tiến hoá để giải bài toán lập lịch gia công chi tiết
máy 45

3.1 .Mô hình của bài toán 45
3.2.Mô tả thuật toán cho bài toán

.

46
3.3.Lược đồ tính toán tiến hoá 47
3.3.1. Mã hoá 47
3.3.2.Cấu trúc nhiễm sắc thể và kiểu gien 43
3.3.3.Khởi tạo quần thổ ban đầu

48
3.3.4.Xác định hàm thích nghi 49
3.3.5.Quá trình tiến hoá 50
Chương 4 Thiết kế phần mềm 53
4.1.Cách xAy dựng phần mềm 53
4.1.1 .Sơ đồ phân cấp chức năng 53
4.1.2.Chức năng 1: Nhập tên tệp dữ liệu cho bài toán 53
4.1.3.Chức năng 2: Nhập tham số khởi tạo 54
4.1.4.Chức năng 3:Tìm qui trình gia công 55
4.1.5.Chức năng 4:Võ sơ đồ qui trình tối ưu
59
4.1.6.Chức năng 5: Thoát khỏi chương trìn h 60
4.2.Kết quả chạy kiểm tra trên một số tệp dữ liệu 60
4.2.1.Tệpdll.lx t 60
4.2.2.Tệp dl2.txt 62
4.2.3.Tệp dl3.txt 63
Kết luận 65
Tài liệu tham khảo 66
n v ' 9

J - O I c a m ơ n
(Z7’iưó'ũ flit, tôi xin cfiân tíỉàníỉ cảm on ỹiáo ’D .S . J ị oàncj
ÍXụân uãn ctã tận tìníi Hướng ắẫn tôi íỉoàn tPiàn fl íuận ưãn nàiỷ
tíiòí tôi cũng xin ctược cảm ơn tfiàij -pfîcim ạ ^UÍiULỊ ctã tạo ctíELL Ízíện
fiLCÓncj Ja n ưà ctóncj Cjóịi ý kiến cfio tuận uãn của tôi ctược íioàn cĩiinpL lỉơn.
<^vfĩân ctây, tôi cũng xin (jày tỏ [òtiỹ (jiểt ơn tói các tfiàij txoncj U\(ioa
d ôncj ÍỈồạí cMọc Q aôc t—^La c^íà c^Aíội ctã có cỏncỊ ctào tạo, ỹiúịi
ctỡ ctề tỏi có ctược Cuận ưãn này.
diLÔÏ càncj, tôi xin cảm ơn tấ t cả íjạn (jè ưà nnünß người tnãn cua tôi
ctã ctộng ưiẽn ưà ỹi-ủịi ctỡ tôi trong CỊUÚ txinfi (ỉọc tậịi ưà íioàn tíiànlỉ Cuận
ưãn.
J ị à e^Nội, Kÿàjj ỹ tfiány 7 0 năm 2 0 0 2
t 9

ác aiả
2ồơ D i l i <zHườriỹ
1
MỞ ĐẨU
Bài toán lập lịch gia công các chi tiết máy thuộc loại bài toán quy hoạch
nguyên (xem [3]) và thuộc loại bài toán NP_ khó (xem [4]) nên khó giải bằng
thuật toán truyền thống. Hiện nay, người ta mới giải quyết được trường hựp it
máy bằng thuật toán truyền thống (2-3 máy).
Để giải các bài toán khó, một phương pháp có hiệu quả đang được dùng
rộng rãi là phương pháp tính toán tiến hoá. Phương pháp tiến hoá là phương
pháp mô phỏng tiến hoá tự nhiên, bắt đầu được ứng dụng vào những năm
1950. Nó được Holland trình bày một cách có hệ thống để giải quyết các bài
toán tối Ư U hàm nhiều biến nhờ kiểu gien nhị phân (nay được gọi là GA cổ
điển) năm 1975 (xem [15]). Từ đấy đến nay phương pháp này được phát triển
ứng dụng một cách phong phú theo nhiều hướng tiếp cận khác nhau. Nội dung
của luận văn này là tìm hiểu phương pháp tính toán tiến hoá và ứng dụng nổ

dể thiết kế phần mềm cho bài toán lập lịch gia công chi tiết máy.
Bố cục của luận văn gồm 4 chương như sau:
Chương 1: Thuật toán di truyền và tính toán tiến hoá
Giới thiệu tóm tắt phương pháp tính toán tiến hoá: bắt đầu từ giải thuật di
truyền cổ điển đến sự phát triển hiện thời và tính toán tiến hoá. Đồng thời luận
văn cũng nêu những mặt mạnh, yếu của nó và so sánh với thuật toán di truyền
cổ điển.
Chương 2: Bài toán lập lịch gia công chi tiết máy và các phương
pháp giải truyền thống.
Phái biểu bài toán và đặc điểm giải bài toán. Trình bày phương pháp giải
Ihông dụng truyền thống Johnson, đồng thời có minh hoạ bằng ví dụ.
Chương 3: ứng dụng thuật toán tiến hon để giải bài toán lập lịch gia
công chỉ tiết máy.
'ìỉn r/ rỉtm r r /i/irỉo 'Ịịf/ /lỉ iá / i ỊÓịJị_ (c á n fir'll /in á rỉ? r /iả i t à i /d á n /â /i íir h ợ in cônr/ r / i i ỉiê l m á i/
2
Trong chương này, tác giả trình bày việc áp đụng phương pháp tiến hoá
cho bài toán lập lịch gia công chi tiết máy.
Trước hết, tác giả phân tích bài toán để tìm ra cách mã hoá (cách biểu
diễn nhiễm sắc thể) sao cho tự nhiên, dễ hiểu, dễ thao tác. Tiếp theo là các
toán tử di truyền được dùng cho bài toán. Luận văn cũng đưa ra cách khởi tạo
quẩn thể ban đầu và thuật toán tiến hoá (trong các phần này đều có ví dụ minh
hoạ).
Chương 4: Thiết kế phần mềm.
Trình bày việc thiết kế phàn mềm bằng ngôn ngữ PASCAL. Tác giả cũng
ncu rõ các giao diện trong phần mềm, cách sử dụng các giao diện và các chức
năng của phần mềm.
Phần mềm này đã được chạy và kiểm tra trên một số tệp dữ liệu thực. Kết
quả cho tương đối khả quan. Các kết quả chạy thử được đưa vào cuối chương
để xem xét và đánh giá.
ỉ/nff

f/((n r/
/t/ịHƯ!tr/ /ihrí/i /tn/t /nán /ir>Ị /<aá (ỉf r/ini Ạàt (oáit ỉộ/r ỉicỉt </ia ró Ị Ị ọ r/ii /iêĩ má-
1
/
3
CHƯƠNG 1
THUẬT TOÁN DI TRUYỂN v à t ín h t o á n t iê n HOÁ
1.1. Sơ lược về lịch sử
Vào cuối những năm 50, thuật toán di truyển cổ điển đã được biết đến,
trong thời kỳ này nó được sử dụng để giải quyết các bài toán riêng rẽ xuất
phát từ sinh học.
Thuật toán di truyền (Genetic Algorithm - viết tắt là GA) cổ điển được
J.H.Holland và các đồng nghiệp của ông ở trường đại học Michigan giới thiệu
năm 1975. Ông trình bày một cách có hệ thống trong [15] để giải quyết các
bài toán tối ưu hàm nhiều biến nhờ kiểu gien nhị phan, đồng thời ông cũng là
một trong những người có nhiều công trình nghiên cứu liên quan đốn GA cổ
điển [14], [16].
Vé GA cổ điển, sau LH.Holland còn có rất nhiều người nghiên cứu về lý
thuyết cũng như ứng dụng của nó trong các lĩnh vực khác nhau như sinh học,
khoa học máy tính Nhiều công trình nghiên cứu về GA cổ điển đã được công
bố ở nhiều nơi trên thế giới. Hai trong số này phải kể đến K.A. DeJong và D.
E. Goldberg là những người có nhiều công trình nghiên cứu về GA cổ điển và
những phát triển của nó trong nhiều lĩnh vực khác nhau: K. A. DeJong [5],
[6], [7], [8], còn D.E. Goldberg [11], [12], [13], [14], [15]. Đặc biệt D. E.
Goldberg đã dưa ra một cải tiến rất nổi tiếng của thuật toán di truyền cổ điển,
đó là “thuật toán di truyền hỗn hợp” trong một công trình của ông vào năm
1993 [15]. Kể từ đó, nó nhanh chóng được nhiều tác giả cải tiến một cách
phong phú để giải quyết các bài toán khó trong thực tiễn với tên gọi chung là
tính toán tiến hoá. Việc giải quyết các bài toán tuy đa dạng nhưng thủ tục áp
dụng vẫn dựa trên lược đồ GA cổ điển.

'ìíiư / r ỉm ự / / ị Ỉ! t ỜỈỊ Ị r/ /i / i á / i ỉ ín /t /c ó n t iê n ỉ to n tlô r/iả ì /ĩà i /n á n (â /i ỉi r ỉi r/ia c â u f/ c/ứ_ /i r ? m á Ị/
4
1.2. Thuật toán di truyền cổ điển
Thuậl toán di truyền cổ điển là các kỹ thuật phỏng Iheo quá trình tiến hoá
tự thích nghi của các quần thể sinh học dựa trên học thuyết Darwin.
Tư tưởng của thuật toán di truyền cổ điển là làm theo tự nhiên. Thuật
toán di truyền cổ điển và sự tiến hoá tự nhiên có cùng một nguyên lý. Trong
sự tiến hoá tự nhiên, mỗi loài sinh vật đều phải tìm cách thích nghi tốt nhất với
một môi trường sống phức tạp luôn luôn thay đổi. Sự thích nghi đó dược đúc
kết và ghi lại trong cấu trúc nhiễm sắc thể của chúng. Rõ ràng, những sinh vật
thuộc thế hệ sau được sinh ra (tính trung bình) sẽ thích nghi với môi trường
tốt hơn thế hệ cha, mẹ chúng. Thuật toán di truyền cổ điển được bắt chước
lương tự như sự tiến hoá tự nhiên.
1.2.1. Cấu trúc của thuật toán di truyền cổ điển
Thuật toán đi truyền cổ điển được J.H.Holland giới thiệu để giải bài toán
tối ưu:
Ị ìnax f(x) / xeM Ị, trong đó M là hình hộp írong không gian số thực n
chiều, f(x) dương với mọi xeM.
• Cấu trúc nhiễm sắc thể và kiêu gien
Trong GA cổ điển, mỗi X trong M được mã hoá bởi một chuỗi nhị phíìn
độ dài m: z = (Z|, Z2 , zm) gọi là nhiễm sắc thể-viết tắt là NST (hay còn gọi là
cá thể), mỗi Zj được gọi là một gien và chỉ nhận một trong hai giá trị 1 hoặc 0.
Ví dụ về một NST trong GA cổ điển:
1 1 0 0 1 0 1
0 0
1
Mỏi kiểu gien (tức là một NST cụ thể) biểu thị một lời giải có thể của
bài toán, một quá trình tiến hoá được thực hiện trên một quần thể (một tập hợp
NST) tương dương với sự tìm kiếm trong một không gian các lời giải có thể.
'ÌỈỊH/ ( /m ư / ịilu ừ ìiự / / i/i á /i /in h /c á n /tr u / ị n ó r/ô {/¡ải /<ài /n ó n lâ /i /ích r/ia r ô ìtợ c /t i /¡ r ì m á i/

5
Sự lìm kiếm này đòi hỏi sự cân bẳng giữa hai mục đích: lìm lời giải tốt nliAÌ và
khám phá kliông gian tìm kiếm.
Thuật toán di truyền cổ điển thực hiện tìm kiếm theo nhiều hướng bằng
cách duy trì một tập lời giải có thể, khuyến khích sự hình thành và trao đổi
thông tin giữa các hướng. Tập hợp lời giải trải qua các quá trình tiến hoá và
cuối cùng cho ta một lời giải đủ tốt tuỳ theo yêu cầu. Tại mỗi thế hệ các lời
giải tương đối tốt được tái sinh, trong khi đó các lời giải tương đối tồi bị loại
bỏ.
Để phân biệt giữa các lời giải khác nhau, người ta xác định một hàm
eval trên lập nhiễm sắc thể để đánh giá độ "thích nghi" của mỗi cá thể hay
chính là độ tốt, xấu của từng lời giải (hàm này đóng vai trò của một môi
trường sống trong thuyết tiến hoá).
• Cấu trúc của GA cổ điển
Procedure GA
Begin
t <-0
khởi tạo P(t)
đánh giá P(t)
Repeat
t <- t+1
chọn lọc P(t) từ P(t-1)
thay đổi P(t)
đánh giá P(t) và chọn cá thể tốt nhất
Until điều_kiệnjkết__thúc;
End
Quá trình tiến hoá được diễn ra trong vòng lặp: Tại thế hệ thứ t thuật toán
duy trì một tập lời giải P(t) = {x,', * 2 . Mỗi lời giải xí được đánh giá “độ
f/t m f/ / ị h n ’rfỊư / /lỉ iá /i /in /i /n ó n fir u /ic á f /r r/iả i /<ài /o á n fâ /i ỉir ỉi r/ia rn nợ r / t i ỉié ĩ m á y
6

Ihich nghi". Mot tap lofi giai mod diroc xay dung (vong lap thu t+1) bang cach
"chon loc" cac ca the Ihich nghi hon ta duoc tap ldi giai trung gian. San do
mot so ca the trong tap loi giai da duoc chon bi bie'n d6i bang phtrong phap
"lai ghep" va "dot bien" de tao thanh cac ldi giai mcfi cho thcihe thur t+1.
• Phep chon loc
Phep chon loc la mot qua trinh chon cac ca the de tham gia vao cac pha
tiep theo cua qua trinh tien hoa. Viec lira chon cac ca th£ tir mot qu&i the dua
tren do thich nghi cua ca the do, nghia la nhirng ca the nao co gia tri ham thich
nghi cao co nhieu kha nang duoc chon d^ tai tao trong cac the he ti6p theo.
Phep chon loc co the duoc bieu di6n du6i dang mot banh xe x6 so, do la
mot hlnh tron trong do m6i ca th^ trong th€ h6 hien thcfi chie'm mot phAn
tuong ung vcfi gia tri cua ham muc tieu cua no. Cac gia tri nay chinh la cac
xac sua't chon loc cua m6i ca the v, duoc tinh theo c6ng thiic p; = eva!(Vj)/F
(trong do evaKv^ la gia tri cua ham thich nghi cua m6i cac the vi? F la tong cac
gia tri cua cac ham thich nghi cua qucin the).
• Phep trao doi cheo
Phep Irao doi cheo (con goi la phep lai ghep), ket hap cac dac tinh tren
NST cua bo va me de tao thanh hai ca the m6i bang cach trao d6i cac doan
gien tuong ung tren cac NST cua bo va me.
V6i hai NST x = (x,, x2, , xm)
va y = (y „y2v ,y m)
Chon diem tuong giao k (co the lAy ngau nhieu) ta se duoc hai NST mdi:
x* = (x ,x k, yk+„ ym)
va y’ = (y„ ,yk,x k+1, x j.
Vi du: vdi hai NST bo, me
Parent 1
1
0
1
0 1 0

oli:
0 0 0
Parent2
0 I 1 1
0 0 1 1 0 1
War/ /i/ii('(inq /i/in/i
/in / 1
/can /¡fin /tea ffr
r/ini
(<ai /non /n/t /
'iff
</ia roar/ r /i /i<~7 timif
7
Chọn điểm lương giao k =3, thì sau khi thực hiện trao đổi chéo các NST
của bố, mẹ la được hai NST mới:
Childl
i
0
1 1 0 0
1 1 0
1
Child2
0 1 1
0 1
ót 1
0 0'
d
• Phép đột biến
Phép đột biến là sự sửa đổi một vài gien của một NST được chọn, bằng
cách Ihay đổi ngẫu nhiên với xác suất là tỉ lệ đột biến pm.

Với mỗi vị trí i trong NST:
x = (x,,x2, X;, , xm)
Ta sinh ra một số thực ngẫu nhiên Pj trong [0,1]. Sau phép đột biến ta
được NST mới:
x' = (x'„ x'2, x’J
Xi
1 - X :
Trong đó Xị'
nếu p, > pr
nếu Pi < p,
1.2.2. Cơ sở toán học của thuật toán di truyền cổ điển
Cơ sở lý thuyết của thuật toán di truyền cổ điển dựa trên biểu diễn chuỗi
nhị phân và khái niệm lược dồ.
Khái niệm lược đồ là một khái niệm quan trọng trong việc biểu diễn các
cá thể có những thuộc tính giống nhau. Sự phát triển hay suy tàn của các cá
thể đều được lý giải một cách khoa học trong lý thuyết lược đồ. Đây cũng
chính là sự lý giải cho tính hiệu quả của GA cổ điển mà chủ yếu là thông qua
các phép: chọn lọc, lai ghép và đột biến.
I.2.2.I. Khái niệm lược đồ
Một lược đồ được xây dựng bằng cách bổ sung các ký hiệu không quan
tâm vào bộ ký tự của gien. Một lược đồ đại diện cho tất cả các chuỗi mà
mọi vị trí (trừ các vị trí "*") đều giống nó.
ẩ ữ ỳ / tt r / ịt ỉ ttM ự / /ih á / i / ín /t /c á n /ic n fw á (ĩ? r /iả i f-à i /o á n ỉâ/< (icỈỊ r/ia rô n ợ r / t i / i ê ĩ )ỊinỊẨ'
8
Trường hợp đặc biệt:
Lược đồ (01011100) chỉ đại diện cho duy nhất một chuỗi (01011100).
Lược đồ (********) đại diện cho mọi chuỗi có độ đài 8.
Rõ ràng, mỗi lược đồ đều đại diện cho 2r chuỗi, trong đó r là số các ký tự
không quan tâm ở trong lược đồ đó. Ngược lại, mỗi chuỗi có độ dài m có
thể phù hợp với 2m lược đồ khác nhau.

V í dụ: chuỗi (10011010) phù hợp với 28 lược đồ sau:
( 10011010) (**011010) (***11010)
(*0011010) (*0*11010)
(1*011010) (10011***)
( 1001101*) ( 100110**) (* * * * * * * * )
Vộy một quần thể n chuỗi có độ đài m có thể được biểu diễn bằng 2™
đến nx2m lược đồ khác nhau.
1.2.2.2. Tính chất của lược đồ
Lược đồ có hai tính chất quan trọng là bậc và độ dài xác định.
• Bậc của lược đồ
Cho một lược đồ s, la ký hiệu o(S) là số các vị trí nhận giá trị 0 hoặc 1
của lược đồ, o(S) được gọi là bậc của lược đồ.
Như vậy bậc của lược đồ xác định "độ cụ thể" của lược đồ đó.
Ví dụ cho ha lược đồ sau :
s, = (*11*01*1); S2 = (**ll*l**); s3 = (1010**01).
các lược đồ trên có bậc tương ứng là o(S|) = 5; oCSj) = 3; o(S3) = 6.
Bậc của lược đồ sẽ liên quan đến việc tính xác suất tồn tại của một lược
đồ khi đột biến.
• Đô dài xác đinlì của íươc đồ
J IB ọ /iư / (ín n f/ / ị/ịỊùtỊỊ{/ / ị/ịá /t /i n ft to án ỉic n ỉiriá fifí r/in i /tài ỉo á ii /â/t ficft f/ia rótif/ (Ỉ!i / i r ĩ ìiư ít/
9
Cho lược đồ s, ta ký hiệu Ỗ(S) là khoảng cách vị trí xác định đầu tiên và
vị trí xác định cuối cùng của lược đồ. Khi đó Ỗ(S) được gọi là độ dài xác định
của lược đồ (hay là độ cô đọng của thông tin chứa trong lược đồ).
Ví dụ :
Với ba lược đồ trên ta có:
Ô(S|) = 8-2 = 6; S(S2) = 6-3 = 3; Ô(S3) = 8 -1 -7 .
Trong trường hợp lược đồ có đúng một vị trí xác định thì độ dài xác định
bằng không.
Độ dài xác định của lược đồ liên quan đến việc tính xác suất tồn tại của

một lược đồ khi trao đổi chéo.
1.2.2.3. Mối quan hệ giữa lược đồ và quá trình tiến hoá của
thuật toán dỉ truyền cổ điển
Trong cấu trúc của thuật toán di truyền cổ điển, quá trình giả lập tiến hoá
được lặp bốn bước sau:
l.t <-t+l
2. Chọn P(t) từ P(t+1)
3. Thay đổi P(t)
4. Đánh giá P(t)
Ta thấy:
- Bước ( t <— t+1 ) chỉ có tác dụng tăng đồng hồ tiến hoá lên một nhịp.
- Bước (đánh giá P(t)) chỉ đánh giá quần thể hiện hành.
Như vậy, hoạt động chủ yếu của quá trình tiến hoá xảy ra trong hai bước
còn lại của chu kỳ tiến hoá, đó là: chọn lọc P(t) và thay đổi P(t), hai bước này
tương đương với việc thực hiện ba phép: chọn lọc, lai ghép và đột biến của
thuật toán di truyền. Chúng ta sẽ xem xét sự ảnh hưởng của lược đồ tới ha
phcp trên.
//j tợ f/n n ( / /iliá /i l íì i/i /c á n /ir n ỉto á rfô t /i ả i feài foá )Ị ỉâ /i ỉir /i (fia c ô n g r ỉt i /ir í/ ỉìtá/ìf
10
• Với phép chọn lọc
Xét tập lời giải S(t) tại thế hệ thứ t của quá trình tiến hoá (ở đây ta gọi
ngắn gọn là quần thể). Ký hiệu Ç(S,t) là số các chuỗi trong tập lời giải tại thế
hệ thứ t ứng với lược đồ s (ở đây ta gọi mỗi chuỗi này là cá thể). Ta cần xác
định £,(S,t+l) là số các cá Ihể trong quần thể tại thế hệ thứ t+1 ứng với lược đồ
s.
Ta ký hiệu eval(S,t) là độ thích nghi của lược đồ tại thế hệ thứ t và nó
được tính theo công thức sau:
eval(S,t)=£eval(v¡j)/p ( i=l pop_size; j=l p).
Trong đó p là số cá thể trong quần thể ứng với lược đồ s tại thế hộ thứ t.
Mỗi cá thể được chọn lọc ra để thực hiện phép tái sinh với xác

suất Pị = eval(v¡)/F(t).
Trong đó:
F(t) là tổng độ thích nghi của toàn bộ quần thể tại thế hệ thứ t.
eval(vị) là giá trị hàm phù hợp của chuỗi thứi.
F(t) = ]Teval(v¡), i=l pop_size.
Sau bước chọn lọc ta có £(S,t+l) chuỗi ứng với lược đồ s. Để xây dựng
công thức của Ẹ,(S,t+l), ta quan tâm tới ba kết quả sau:
1. Xác suất chọn lọc của mỗi cá thể ứng với lược đồ s là eval(S,t)/F(t).
2. Số cá thể ứng với lược đồ s là £,(S,t).
3. Số lần chọn lọc cá thể là pop_size.
Do vậy, ta có công thức :
Ç(S,l+l) = pop_size X ẽ,(S,t) X eval(S,t) / F(t)
Ta gọi độ thích nghi trung bình của quần thể là F(t) = F(t) / pop_size, thì
Ç(S,t+l) = Ç(S,t)xeval(S,t)/F(t)
( 1)
11
Phương trình (1) được gọi là phương trình sinh trưởng của lược đồ. Từ
phương trình này, ta nhận thấy: ở các thế hệ sau, số các cá thể ứng với một
lược đồ có chất lượng trên trung bình sẽ tăng lên, số các cá thể ứng với một
lược đồ có chất lượng dưới trung bình sẽ giảm xuống, còn các cá thể ứng với
lược đồ có chất lượng trung bình sẽ ổn định.
• Với phép lai ghép
Ta xét một ví dụ sau:
V = (0100111010)
111
s2 = (010*****10)
Ta thấy cá thể V phù hợp với cả hai ỉược đồ s, và S2, giả sử V dược chọn
để trao đổi chéo và điểm bắt chéo tại pos = 8. Ta thấy sau phép lai ghép, thì
lược đồ S| vẫn tồn tại, nghĩa là một trong số các cá thể con vẫn phù hợp với
lược đồ Sị vì điểm bắt chéo pos = 8 sau các vị trí xác định của lược đổ S|.

Trong khi đó, lược đồ S2 bị loại bỏ, tức là không có cá thể con nào phù
hợp với lược đồ này, vì các vị trí xác định của lược đồ s2 nằm ở hai đầu của
điểm bắt chéo và do vậy chúng bị tách ra và đặt vào hai cá thể con khác nhau.
Nhận xét về các yếu tố ảnh hưởng đến sự loại bỏ một lược đồ:
- Độ dài xác định của lược đồ đóng vai trò quan trọng đối với sự tồn tại
và sự loại bỏ của một lược đồ. Độ dài xác định 5(S) càng lớn thì nguy cơ lược
đồ bị loại bỏ càng cao.
- Điểm bắt chéo được chọn ngẫu nhiên trong (m-1) vị trí (m là độ dài
của chuỗi nhị phân biểu diễn cá thể) nên xác suất bị loại bỏ của lược đồ s (ký
hiệu là pd(S)) còn phụ thuộc vào xác suất chọn điểm bắt chéo.
Do đó ta có: pd(S) = 5(S)/(m-1 ).
Vậy xác suất tồn tại của lược đồ s (ký hiệu là Ps(S)) là:
Ps(S)= 1 -5(S)/(m-l).
’i ím / r fm m /ih i ù ì tự / / ị h á /ị /Í ii/i /c á n /ic n /io á ftp f/in i /'-à i /ná)! /â /i ỉir /i (/in rô 1 1 Ịf r /t i ỉ iô ĩ v tá t /
12
- Xác suất trao đổi chéo pc cũng ảnh hưởng tới xác suất loại bỏ lược đồ
s, vì chỉ cổ pc số cá thể tham gia trao đổi chéo.
Kết hợp cả ba yếu tố ảnh hưởng trên ta có công thức tồn tại của lược đồ
S:
Ps(S) = 1 - Pc X ô(S)/(m-l).
- Khi điểm bắt chéo được chọn giữa các vị trí xác định của lược đồ thì
lược đồ đó vãn có một khả năng rất nhỏ tồn tại. Chẳng hạn, trong ví dụ trên,
nếu như hai chuỗi tham gia trao đổi chéo đều bắt đầu bằng "010" và kết thúc
bằng "10" thì lược đồ S2 sẽ bị loại bỏ sau khi trao đổi chéo. Nhưng khả năng
trôn xảy ra là rất nhỏ, nên công thức xác suất tồn tại lược đồ s thay đổi như
sau:
ps(S )> l-p c x8(S)/(m-l).
Sau khi trao đổi chéo, phương trình sinh trưởng của lược đồ có dạng sau:
Ç(S,t+l) > Ç(S,t) X eval(S,t)/ F(t) X [1 - pc X 8(S)/(m-l)]
(2)

Phương trình (2) cho ta ước lượng về số các cá thể phù hợp với lược đổ s
trong thế hộ tiếp theo sau hai phép chọn lọc và lai ghép.
• Với phép đột biến
Vì phcp đột biến thay đổi một vị trí trên một chuỗi với xác suất pm, nên
một lược đồ chỉ tồn tại sau khi đột biến nếu như bit bị đột biến không phải là
bit xác định.
Ta đã biết xác suất đột biến của một bit là pm, do đó xác suất giữ nguyên
một bit sẽ là 1- pm. Vì mỗi lần thực hiện đột biến (ngẫu nhiên) một bit trong
các bit xác định là độc lập nhau, nên theo công thức tính xác suất của các sự
kiện độc lập ta có xác suất tồn tại của một lược đồ sau phép đột biến là:
ps(S) = (1 - pm) 0(S) (trong đó o(S) là bậc của lược đồ).
Vì pm« l nên ps(S) « 1 - o(S) X p m.
Ịfn</ rf(tn(/ {t/irfrína /tỉtá/i /íìi/i /oán /tru ểtoá fíe ợiảí f‘òi /cán ỉâ/i ỉìc/i r/ia róm/ r/ii ỉiêJ mát/
13
Như vậy sau ba phép chọn lọc, lai ghép, đột biến ta có công thức của
phương trình sinh trưởng:
4(S,t+l) > £(S,t) X eval(S,t) / F(t) X [1 - pc X 5(S)/(m-l) - o(S) X pm]
(3)
Ta cần lưu ý rằng phương trình (3) dựa trên giả thiết hàm thích nghi f
luôn mang giá trị dương, còn nếu áp dụng thuật toán di Iruyền cho các bài
toán tối ưu mà hàm tối ưu mang cả giá trị âm, thì la phải chuyển từ hàm tối ưu
sang hàm thích nghi cho phù hợp.
Kết quả cuối cùng của phương trình sinh trưởng được phát biểu qua định
lý sau:
Định lý về lược đồ: Trong các thế hệ tiếp sau của thuật toán di truyền cổ
điển, số các cá thể phù hợp với lược đồ trên trung bình với bậc thấp và độ dài
xác định ngắn tăng dần theo luỹ thừa.
1.2.3. So sánh thuật toán di truyền cổ điển với một số thuật toán
truyền thống
Trong phần này ta so sánh thuật toán di truyền cổ điển với một số thuật

toán truyền thống rất phổ biến, đó là: thuật toán “vét cạn”, thuật toán ‘leo đồi”
và thuật toán ‘luyện kim”.
Như chủng la đã biết, trong thuật toán “vét cạn” (tìm kiếm theo bề rộng
hoặc theo độ sãu), về mặt nguyên tắc các phương pháp tìm được nghiệm của
bài toán nếu bài toán có nghiệm, song trong thực tế, rất nhiều bài toán không
thể áp dụng được phương pháp này, vì ta phải phát triển một không gian trạng
thái quá lớn, trước khi đi tới trạng thái đích, mà do những hạn chế về thời gian
tính toán và dung lượng bộ nhớ, không cho phép chúng ta làm được điều đó.
Trong thuật toán ‘leo đồi” sử dụng kỹ thuật “nâng cấp lặp”, kỹ thuật này
áp đụng cho một điểm đơn (điểm hiện tại) trong không gian tìm kiếm. Trong
Ề r ỉm ụ / / ị / t r ờ i ! Ị r/ / ị h á / ị U n / ị /n á n / ¡ fin /ị n á r lô ( / i ả i ỉ ' à i / o á n ỉâ / i / i r / t g i a r â n (/ r / u ’ ỉ i ô ĩ m á t /
14
một lÀn nAiig cấp, một điổm mới dược chọn trong số các diổm lAn cận của
diểm hiện hành nếu nlnr điổm đó cho kết quả tốt hơn của hàm mục tiêu. Việc
tìm kiếm sẽ kết thúc khi không thể nâng cấp thêm được nữa. Rõ ràng thuật
toán leo đồi chỉ cho ta kếl quả tối ưu cục bộ, kết quả này phụ thuộc vào sự lựa
chọn của điểm xuất phát, mặt khác ta không có được Ihông tin sai số vẻ kết
quả tìm được so với kết quả tối ưu toàn cục.
Để khắc phục nhược điểm trên, thuật toán leo đồi đã được cải tiến bằng
cách tăng số lượng các điểm xuất phát (điểm xuất phát cho mỗi lần chạy có
thể được chọn ngẫu nhiên hoặc được chọn tuỳ theo kết quả của các lần chạy
trước). Sự thành công hay thất bại của mỗi lần chạy (cho ta kết quả tối ưu toàn
cục hay cục bộ), phụ thuộc vào sự lựa chọn điểm xuất phát và hình dáng của
"mặt cong" của hàm giá. Nếu mặt cong chỉ có một số ít cực đại địa phương thì
tối ưu toàn cục được tìm ra rất nhanh. Chính vì vậy mà kể cả sau khi đã được
cải tiến thì khả năng tìm được lời giải tốt nhất cho mỗi lần chạy cũng là rất
nhỏ.
Trong thuật toán luyện kim, người ta dùng kỹ thuật thay đổi entropy của
hệ. Ở phương pháp này người ta đã điều khiển tốc độ hội tụ của quần thể
bằng cách biến đổi nhiệt động học với một tham số nhiệt độ T toàn cục. Để

hạn chế việc tối ưu cục bộ và tăng khả năng khám phá không gian tìm kiếm,
người ta đã dùng thủ thuật giảm nhiệt độ T từng bước (đến một mức nào đó).
Tuy nhiên vì T chỉ giảm đến một mức nhất định, vì vậy phương pháp này cũng
không tránh khỏi hạn chế Irong việc khám phá không gian tìm kiếm mới và sự
hội tụ địa phương.
Còn đối với GA cổ điển thực hiện tìm kiếm theo nhiều hướng, bằng cách
duy trì một tập hợp các lời giải có thể và khuyên khích sự hình thành và trao
đổi thông tin giữa các hướng (thể hiện qua phép trao đổi chéo). Một quá trình
tiến hoá được thực hiện trên một quần thể (một tập hợp NST) tương đương với
sự tìm kiếm trong một không gian các lời giải có thể. Sự tìm kiếm này đòi hỏi
'ìí n t / r f t d ự / / i / i i ừ ỉ i i ọ / i l i á / i / í n ỉ t / c á n f ie n h c á rt ô r / ì ả i f‘ à i ( o á n fâ / t ( i r / l Ị / ì a CÔ ỊỰ / r i ' i / i ô ĩ i u á n
15
sự cAn bằng giữa liai mục đích: tìm lời giải lốt nhAÌ và khám phá không gian
tìm kiếm mới.
Chính vì vậy mà thuật loán đi truyền cổ điển khắc phục được những
nhược điểm của các thuật toán truyền thống nói trên.
1.2.4. Một sô cải tiến của thuật toán di truyền cổ điển
Thuật toán di truyền cổ điển chuẩn đôi khi mắc một số hạn chế. Một:
trong những hạn chế cần quan tâm nhất là vấn đề hội tụ sớm về một cực đại,
mà cực đại đó không phải là lời giải tối ưu.
Đổ khắc phục được điều này đã có nhiều công trình được nghiên cứu và
công bố. Một số công trình khắc phục những hạn chế của thuật toán di truyền
do cơ chế lấy lược đồ (chọn các chuỗi) và các tính chất của hàm mục tiêu gây
ra. Ngoài ra một số công trình đề cập đến những thực nghiệm về GA cổ điển
với tập lời giải có kích thước thay đổi qua các thế hệ, một số công trình khác
đưa ra những ý tưởng vẽ các cải tiến phép trao đổi chéo, và cuối cùng là cải
tiến GA cổ điển trên mọi phương diện - đó là GA hỗn hợp.
1.2.4.1. Cải tiến về phương pháp chọn lọc (modGAl)
Để tiện cho việc trình bày ta gọi GA cổ điển chuẩn là GA_old. Phương
pháp cải liến này gọi là modGAl. Khác với GA_old, (rong modGAl bước

chọn P(t) từ P(l-l) được thay bằng hai bước:
+ Bước 1 : chọn r cá thể một cách độc lập (không nhất thiết khác nhau),
để cho tái tạo.
+ Bước 2: chọn r cá thể phân biệt để loại bỏ.
Việc chọn lọc trên được thực hiện dựa theo độ thích nghi của các cá thể,
các cá thể có độ thích nghi trên trung bình có nhiều khả năng được chọn để tái
lạo hơn, các cá thể có độ thích nghi dưới trung bình có khả năng được chọn để
loại bỏ cao hơn. Sau khi thực hiện hai bước trên ta có ba nhóm cá thể không
nhất thiết rời nhau trong quán thể:
'ìín r/
(filin/
/i/ii i'(U i(/ / l ỉ i á / i /i n ỉ ) / c á n ( i f ) Ị /t o á r fr
(/ini
/ t à i /o á n /ó / ị
ỉirh
r /ia
cỘỊự/ rỉti
/ i é ĩ m á t /
16
- r cá thổ (không nhất thiết khác nhau) đổ tái tạo.
- r cá thể (khác nhau) để loại bỏ.
- các cá thể còn lại (trung hoà).
Số cá thể trung hoà trong một thế hệ có từ pop_size - 2r đến pop_size-r,
luỳ thuộc vào số các cá thể cha, mẹ phân biệt được chọn và số các cá thể sinh
và tử.
Sau đó quần thể mới P(t+1) được xây dựng, gồm pop_size - r cá thể và r
cá thể con của r cá thể cha, mẹ sinh ra.
• Giải thuật modGAl
Procedure modG A1
Begin

t < -0
khởi tạo P(t)
đánh giá P(t)
while ( not điều_kiện_dừng) do
begin
t <r- t+1
chọn sinh từ P(t-l)
chọn tử từ P(t-l)
xây dựng P(t): cho các cá thể cha mẹ sinh sản
đánh giá P(t)
end
End
Trong thuật toán trên có một vấn đề khó giải quyết là chọn r cá thể để
loại bỏ. ở dây ta thực hiện bước chọn lọc này sao cho các cá thể tốt hơn có
xác suất chết thấp hơn. Đổ đạt được điều này, quá trình xây dựng quẩn thể mới
P(t+1) được tiến hành như sau:
17
- Bước 1 : chọn r cá thể cha, mẹ lừ P(t). Mỗi cá thể đã dược chọn được
đánh dấu để được áp dụng chỉ một phép biến đổi gien.
- Bước 2: Chọn pop_size - r cá thể phân biệt từ P(t) và sao chép chúng
sang P(t+1).
- Bước 3: Cho r cá thể cha, mẹ sinh sản tạo ra r cá thể con.
- Bước 4: Nhập r cá thể con vào quẩn thể P(t+1 ).
ưu điểm của quá trình chọn lọc trên
- Các cá thể cha, mẹ và con đều có cơ hội có mặt trong thế hệ mới.
- Việc áp dụng các toán tử đi truyền (bước 3) trên từng cá thể mà không
trên lừng bit (như phép đột biến trong GA cổ điển chuẩn), điều này có nghĩa là
các toán lử di truyền (trao đổi chéo, đột biến, đảo gien), được sử dụng một
cách đồng nhất, một số cá thể cha, mẹ được trao đổi chéo, một số khác bị đột
biến, phần còn lại bị đảo gicn.

* ưu điểm của modGAl
Tránh được có nhiều bản sao của một cá thể trong quần thổ mới (nó
có thể xảy ra nhưng rất hãn hữu). Vì vậy nó hạn chế được sự hội tụ sớm của
thuật toán GA_old.
1.2.4.2. Cải tiến về hàm mục tiêu
• Chuyển đổi hàm mục tiêu thành hàm thích nghi
ở đây các bài toán được xét đều giả thiết rằng: hàm mục tiêu có miền giá
trị thuộc tập dương và ta chỉ xét các bài toán tối ưu tìm giá trị lớn nhất của
hàm. Nhưng các bài toán đã gặp trong thực tế là đa dạng, vì vậy để giải quyết
được vấn đề này ta xél hai trường hợp sau:
+ Trường hợp I: Nếu là bài toán tối ưu yêu cẩu làm cực tiểu hàm f(x),
ta đưa về bài toán làm cực đại hàm g(x) với g(x) = -f(x). Khi đó giá trị xopl làm
cực đại hàm g(x) cũng chính là điểm làm cực tiểu hàm f(x).
J 8
+ Trường hợp 2: Nếu hàm mục tiêu f có cả giá trị âm, thì ta có thổ cộng
them một hằng số dương c nào đó sao cho f(x) có miền giá trị thuộc lập
dương.
• Phép sửa đổi hàm phù hợp theo từng bước lặp
Phương pháp sửa đổi này có liên quan đến tính chất của hàm cần được
tối ưu. Có nhiều hướng tiếp cận vấn đề này, chẳng hạn: phương pháp luyện
kim kỹ thuật Ihay đổi entropy của hệ. ở phương pháp này người ta đã điều
khiển tốc độ hội tụ của quần thể bằng cách biến đổi nhiệt động học với một
tham số nhiệt độ toàn cục.
Phương pháp được nhiều người quan tâm nhất là: biến đổi chính hàm
phù hợp, bằng cách đưa ra một phép vị tự để thay đổi hàm phù hợp.
Goldberg đã phân phép vị tự thành ba loại sau đây:
+ Phép vị tự tuyến tính:
Hàm phù hợp fj' dược sửa đổi giá trị theo công thức : f|'=a X fj + b, ỏ
đó f| là giá trị ban đầu của hàm phù hợp, a, b là các tham số.
Thường các tham số a, b phải được chọn sao cho:

- Độ thích nghi trung bình trước sửa đổi fi(avg) và độ Ihích nghi trung
bình sau sửa đổi fj’^vg) là tương ứng nhau sao cho không làm ảnh hưởng tới
pha chọn lọc, bởi vì trong pha này những cá thể có độ thích nghi trên trung
bình có nhiều khả năng được chọn để tái sinh hơn.
- Độ thích nghi cao nhất có một khoảng cách nhất định với độ thích
nghi trung bình.
Hạn chế của phương pháp này là: trong các thế hệ sau có thể nảy sinh
các độ thích nghi âm. Hơn nữa các Iham số a, b thường là cố định và không
liên quan gì đến bài toán.
)f> K / / t ỉt t K ỉ n ọ / i h á / i / Í h / ị /orht / i r í i ỉ i c ó ( í t ' Ị / i ả i / à i /o á n táh ỉ ị r / t f / i f í r ó ìt r / r í t i / i ô ĩ m ái/
19
+ Phép vị tự làm tròn xichma:
Đây là phương pháp cải tiến của phép vị tự tuyến tính, nhằm xử lý
các giá trị thích nghi âm và đưa được các dữ kiện của bài toán vào hàm đánh
giá. Giá trị sửa đổi của hàm phù hựp fj' được tính theo công thức:
fj' = fj+ (f-c x ơ ).
Trong đó c là một số nguyên dương cho trước (thường chọn trong khoảng
từ 1 đến 5), ơ là độ chênh lệch tiêu chuẩn của quần thể, f là giá trị trung bình
của hàm phù hợp, các giá trị âm nếu có của f dược gán bằng 0.
+ Phép vị tự luỹ thừa:
Hàm phù hợp fj' được sửa đổi giá trị theo công thức: fj - fjk.
Trong đó k là một số gần bằng 1. Một số nghiên cứu cho rằng k nên
chọn luỳ theo bài toán, một số công trình thường chọn k = 1.005 đã cho một
kết quả khả quan.
I.2.4.3. Thuật toán di truyền cổ điên với kích thước quần thê thay
đổi (niodGA2)
Vấn để kích thước của quần thể trong thuật toán đi truyền đóng vai trò
quan trọng đối với tính hiệu quả của thuật toán. Nếu dùng quần thể có kích
thước nhỏ, GA_olcl sẽ có thể hội tụ sớm về một kết quả không mong muốn.
Ngược lại, nếu dùng kích thước quần thể lớn thì có thể dãn đến sự lãng phí về

thời gian và tài nguyên.
Sau đay ỉà một thuật toán đi truyền cải tiến với kích thước quần thể thay
đổi (ta gọi là mođGA2). Thuật toán này đưa ra khái niệm tuổi thọ của mộí cá
tliể - là số thế hệ mà cá thể đó tồn tại. Tuổi thọ của cá thể phụ thuộc vào độ
thích nghi của cá thể đó và nó ảnh hưởng đến kích Ihước của quán thể Irong
quá trình tiến hoá. Hướng tiếp cận phương pháp chọn lọc này có vẻ phù hợp
với quy luật của tự nhiên. Hơn nữa trong phương pháp này các cá thể con có
cơ hội cạnh tranh sinh tồn với các cá thể cha, mẹ của chúng.
y/ý/y r ỉttn ự /lỉn M iự i / 1 / 1 Ó/ 1 /Íh /ị /c á n /iô)! /ifìá fỉ(‘ ợ iả i /'à i /d á n iâ /i fir/t f/ia r e n n r /u ' fi r / lìư íự
20
Trong thuật toán này, tại thời điểm t, quẩn thể P(t) gồm có pop_size(t) cá
thể. Trong bước "tái kết hợp P(t)", một quần thể "bổ trợ mới" được xây dựng:
Auxpop_size(l) = [pop_size(t) X p], trong đó p là xác suất sinh sản.
Mọi cá thể trong quẩn thể có thể được chọn để sinh sản ra thế hệ con
(Ihực hiện trao đổi chéo và đột biến) với xác suất bằng nhau.
Tham số tuổi thọ của mỗi cá thể được gán một lần trong bước đánh giá
P(l) (sau khi khởi tạo hoặc sau bước tái kết hợp). Tham số này không thay đổi
trong suốt quá trình tiến lioá (từ lúc cá thể dược sinh ra cho đến khi bị loại
bỏ). Nếu ta gọi D(t) là số cá thể bị chết tại thế hệ t, thì kích thước của quần thể
sau vòng lặp là :
pop_siz,e(t+l) = Auxpop_size(t) + pop_size(t) - D(t)
• Nội dung của modGA2:
Procedure modGA2
Begin
t = 0
khởi tạo P(t)
đánh giá P(t)
while ( not điều_kiện_dừng ) do
begin
t= t+1

tăng tuổi thọ mỗi cá thể 1 đơn vị
tái kết hợp P(t)
đánh giá P(t)
loại bỏ các cá thể có tuổi thọ cao hơn tuổi thọ của nó
end
End
y/ý/i/ (ỉu Hr/ /ihii'diK / /i/iá / i fin / t /aáỊ Ị (tê n ỉtc á rtf (/in i ỉ à i /o ó n /ó/ ị /ìc/ ị f/ia r ô n r/ r/n ỉ i f ĩ m á i/

×