Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
o0o
THUẬT TOÁN VÀ
THUẬT TOÁN VÀ
PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
THUẬT GIẢI DI TRUYỀN
THUẬT GIẢI DI TRUYỀN
VÀ ỨNG DỤNG
VÀ ỨNG DỤNG
TRONG BÀI TOÁN LẬP LỊCH
TRONG BÀI TOÁN LẬP LỊCH
GVHD : PGS. TS. ĐỖ VĂN NHƠN
HVTH : NGUYỄN THỊ MAI
MÃ HV : CH1301038
LỚP : CH KHÓA 8
Tp. HCM, Thaùng 01 naêm 2014
SVTH: Nguyễn Thị Mai 1
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
MỤC LỤC
SVTH: Nguyễn Thị Mai 2
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
LỜI CẢM ƠN
Em xin chân thành cảm ơn thầy PGS.TS Đỗ Văn Nhơn đã cung cấp cho em
những kiến thức quan trọng, nền tảng, giúp em định hướng tìm tòi, học tập và nắm
vững hơn những phương pháp giải quyết vấn đề, những thuật toán cơ bản và mở
rộng để ứng dụng vào những bài toán cụ thể trên máy tính và trong thực tế.
Trong bài này em xin trình bày nội dung về giải thuật di truyền qua những tìm
hiểu từ các giáo trình, bài báo, tài liệu và ứng dụng của thuật giải di truyền vào bài
toán lập lịch cho trường đại học.
Do thời gian có hạn nên bài viết chưa thực sự hoàn chỉnh, còn nhiều hạn chế và
hiểu biết chưa sâu rộng, mong thầy thông cảm.
Tp. Hồ Chí Minh, ngày 19 tháng 01 năm 2014
Học viên thực hiện
Nguyễn Thị Mai
SVTH: Nguyễn Thị Mai 3
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
I. THUẬT GIẢI DI TRUYỀN
1. Tổng quan về thuật giải di truyền
1.1 Giới thiệu
Genetic Algorithms tạm dịch là Thuật giải di truyền (viết tắt là GA) bắt nguồn từ
ý niệm tiến hóa để tồn tại và phát triển trong tự nhiên. GA là phương thức giải
quyết vấn đề mô phỏng theo quá trình chọn lọc tự nhiên. Nó giúp tìm ra giải pháp
tối ưu trong điều kiện thời gian và không gian cho phép từ các giải pháp ban đầu,
thông qua quá trình chọn lọc, lai ghép và đột biến.
Trong thuật giải di truyền, người ta dùng thuật ngữ vay mượn của di truyền học.
Trong đó, cá thể biểu diễn một lời giải, giải pháp của bài toán. Ở đây, ta quy ước
mỗi cá thể chỉ có một nhiễm sắc thể (NST). NST có thể là một chuỗi tuyến tính.
Trong NST có các đơn vị nhỏ hơn là gen. Mỗi gen đại diện cho một thuộc tính, tính
chất, có vị trí nhất định trong NST. Quần thể là một tập hữu hạn xác định các cá thể
biểu diễn lời giải. Trải qua quá trình tiến hóa, qua mỗi thế hệ, quần thể này tái sinh
các lời giải tốt hơn, thích nghi hơn, đồng thời loại bỏ dần các lời giải kém hiệu quả.
Như vậy, mục tiêu cuối cùng của GA là tạo ra nhiều giải pháp mới có hệ số thích
nghi ngày càng cao. Do đó, ta có thể đánh giá các giải pháp thông qua hệ số thích
nghi này.
1.2 Các bước cơ bản giải bài toán bằng thuật giải di truyền
Một bài toán được giải bằng thuật giải di truyền thường gồm các bước sau:
- Biểu diễn lời giải của bài toán (nhiễm sắc thể) bằng chuỗi nhị phân, chuỗi ký
tự, số thập phân, …
- Khởi tạo quần thể ban đầu gồm N cá thể một cách ngẫu nhiên.
- Xây dựng hàm thích nghi làm tiêu chuẩn đánh giá cá thể
- Xác định xác suất lai tạo, xác suất đột biến.
- Xây dựng các phép lai tạo, chọn lọc, đột biến.
2. Các thành phần cơ bản của GA
Trong GA, một tập các biến của bài toán đưa ra được mã hóa sang một chuỗi
(hay một cấu trúc mã hóa khác) tương tự như một nhiễm sắc thể trong tự nhiên. Mỗi
chuỗi bao gồm một giải pháp có thể của bài toán. Giải thuật di truyền sử dụng các
toán tử được sinh ra bởi sự chọc lọc tự nhiên một quần thể các chuỗi nhị phân (hoặc
các cấu trúc khác), mã hóa khoảng tham số trên mỗi thế hệ, khảo sát các phạm vi
SVTH: Nguyễn Thị Mai 4
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
khác nhau của không gian tham số, và định hướng tìm kiếm đối với khoảng mà là
xác suất cao để tìm kiếm sự thực hiện tốt hơn. Thuật toán di truyền gồm có bốn quy
luật cơ bản là lai ghép, đột biến, sinh sản và chọn lọc tự nhiên. Sau đây, ta sẽ đi vào
chi tiết từ khâu đầu tiên là biểu diễn các cá thể.
2.1 Biểu diễn các cá thể
Biểu diễn cá thể là ánh xạ các tham số của bài toán lên một chuỗi có chiều dài
xác định. Khi thực hiện giải bài toán bằng thuật giải di truyền, việc đầu tiên ta cần
làm là xác định cách biểu diễn các cá thể. Tùy theo từng bài toán cụ thể mà có
những cách biểu diễn khác nhau sao cho phù hợp, thuận lợi khi giải toán.
2.1.1 Biểu diễn nhị phân
Mỗi cá thể tương ứng với một chuỗi bao gồm các bit 0 và 1. Ý nghĩa của các bit
này phụ thuộc vào từng tình huống cụ thể. Đây là cách biểu diễn đơn giản nhất và
thông dụng nhất.
Ví dụ 1: hai NST được biểu diễn dưới dạng nhị phân như sau:
Ví dụ 2: Cho bài toán: có n đồ vật với trọng lượng và giá trị khác nhau được cho
trước trong một cái túi có trọng lượng đã biết. Yêu cầu: hãy chọn ra các đồ vật để
cho vào túi sao cho tổng giá trị các đồ vật trong túi là lớn nhất.
Trong trường hợp này, ta đánh số đồ vật từ 1 đến n, mỗi cá thể được biểu diễn
bằng một xâu nhị phân độ dài n. Trong đó, bit thứ i bằng 1 có nghĩa là đồ vật thứ i
được cho vào túi, bằng 0 là bỏ lại.
2.1.2 Biểu diễn sử dụng hoán vị
Biểu diễn hoán vị thường được sử dụng trong bài toán sắp xếp. Mỗi cá thể tương
ứng với một hoán vị của tập n ký hiệu nào đó. Mỗi NST là một chuỗi các số thể
hiện vị trí trong một dãy. Ví dụ: cách biểu diễn 2 NST dưới đây là biểu diễn hoán
vị.
SVTH: Nguyễn Thị Mai 5
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Một ví dụ cụ thể hơn, cách biểu diễn này đã được áp dụng cho bài toán người du
lịch:
Một thương gia phải đi qua nhiều thành phố (n). Hãy vạch lộ trình đi qua tất cả
các thành phố đó sao cho quãng đường đi là ngắn nhất. Biết rằng mỗi thành phố chỉ
đi qua một lần.
Ký hiệu các thành phố là T
1
, T
2
, …, T
n
mỗi cá thể sẽ là một danh sách hoán vị
của T
1
, T
2
, …, T
n
biểu diễn lộ trình mà người thương gia đã đi qua. Ví dụ
T
8
T
5
T
9
T
3
… là ký hiệu của hành trình từ T
8
T
5
T
9
T
3
…
Như vậy, mỗi chuỗi con sẽ biểu diễn cho một đỉnh của không gian tìm kiếm và
qua đó thể hiện được cách trả lời có thể có của bài toán. Sau đó, mỗi chuỗi NST sẽ
được giải mã lại để trả về các thông số ban đầu của bài toán.
2.1.3 Biểu diễn bằng giá trị
Phương pháp này thường được dùng trong các bài toán có chứa những giá trị
phức tạp. Trong mã hóa giá trị, mọi NST là một chuỗi chứa những giá trị nào đó.
Những giá trị này có thể có dạng bất kỳ liên quan đến bài toán, từ số nguyên, số
thực, ký tự cho đến các đối tượng phức tạp hơn.
Ví dụ: Ta biểu diễn 3 NST bằng giá trị như sau:
NST A được biểu diễn dưới dạng số thực
NST B được biểu diễn dưới dạng chuỗi ký tự
NST C được biểu diễn dưới dạng danh sách thuộc tính
2.1.4 Biểu diễn dưới dạng cây
Mã hóa theo cây được dùng chủ yếu cho các chương trình ( hoặc biểu thức) tiến
hóa, cho lập trình gen Trong mã hóa theo cây, mọi NST là một cây chứa các đối
tượng như hàm hoặc lệnh trong một ngôn ngữ lập trình nào đó. Dưới đây là 2 NST
được biểu diễn bằng phương pháp này.
SVTH: Nguyễn Thị Mai 6
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
NST A (Chromosome A) biểu diễn một nhánh công thức toán học
NST B (Chromosome B) biểu diễn lệnh trong ngôn ngữ lập trình.
Ví dụ: Bài toán tìm hàm từ những giá trị cho trước. Cho trước một số đầu vào và
đầu ra. Tìm hàm cho ra kết quả tốt nhất với mọi đầu vào.
Mã hóa: NST là các hàm được biểu diễn bằng cây.
Sau khi biểu diễn được các cá thể cho bài toán, ta có thể bắt tay ngay vào việc
thực hiện giải thuật di truyền theo các bước đã có trong phần trước. Bước đầu là cần
có một quần thể ban đầu. Nó có thể có được bằng cách chọn ngẫu nhiên các cá thể
hoặc có thể dùng chiền thuật lựa chọn thông qua hàm thích nghi:
2.2 Hàm thích nghi
Hàm thích nghi lấy một chuỗi NST là đầu vào và trả về giá trị tượng trưng cho
chuỗi NST đó để đánh giá trên vấn đề cần giải quyết.
Hàm thích nghi có vai trò tương tự như môi trường sống trong sự tiến hóa của tự
nhiên. Vấn đề tương tác giữa một cá thể với môi trường sống được thể hiện qua giá
trị của hàm thích nghi trong mỗi cá thể.
Giá trị hàm thích nghi là Tối đa hay Tối thiểu tùy theo bài toán sẽ quyết định xác
suất của mỗi chuỗi có thể tham gia vào các toán tử di truyền
2.3 Quá trình lai ghép
Quá trình này diễn ra bằng cách ghép một hay nhiều đoạn gen từ hai nhiễm sắc
thể cha-mẹ để hình thành nhiễm sắc thể mới mang đặc tính của cả cha lẫn mẹ.
Chọn ngẫu nhiên hai (hay nhiều) cá thể bất kỳ trong quần thể. Giả sử
các nhiễm sắc thể của cha mẹ đều có m gen.
Tạo một số ngẫu nhiên trong khoảng từ 1 đến m-1 (ta gọi là điểm lai).
Điểm lai này sẽ chia hai chuỗi nhiễm sắc thể cha-mẹ thành hai nhóm nhiễm
sắc thể con là m
1
và m
2
. Hai chuỗi nhiễm sắc thể con lúc này sẽ là m
11
+m
22
và m
21
+m
12
Đưa hai cá thể mới này vào quẩn thể để tham gia các quá trình tiến
hóa tiếp theo.
2.4 Quá trình sinh sản (tái sinh)
Phép tái sinh: là quá trình các cá thể được sao chép dựa trên độ thích nghi của
nó. Phép tái sinh có thể mô phỏng như sau:
SVTH: Nguyễn Thị Mai 7
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Tính độ thích nghi của từng cá thể trong quẩn thể hiện hành, lập bảng cộng
dồn các giá trị thích nghi (theo số thứ tự gán cho từng cá thể). Giả sử quần
thể có n cá thể. Gọi độ thích nghi của cá thể thứ i là Fi, tổng dồn thứ i là
Fti, tổng độ thích nghi của toàn quần thể là Fm.
Tạo một số ngẫu nhiên F trong đoạn từ 0 đến Fm.
Chọn cá thể thứ k đầu tiên thỏa mãn F ≥ Ftk đưa vào quần thể của thế hệ
mới.
Ví dụ: Mỗi cặp bố mẹ sinh hai con theo một trong hai phương pháp sau
Vô tính
• Mỗi ấu nhi là một bản sao chính xác từ cha
• Mỗi ấu nhi là một bản sao chính xác từ mẹ
Hữu tính (giao nhau)
• Một vài bits được sao từ mẹ, vài bits được sao chép từ cha
• Cứ tiếp tục sao từ một cặp bố mẹ cho đến chừng nào điểm giao nhau,
thì sao chép từ cặp bố mẹ khác.
Sinh sản hữu tính giao nhau một nửa
Bố
Mẹ
Ấu nhi 1
Ấu nhi 2
Sinh sản hữu tính giao nhau ba điểm
Bố
Mẹ
Ấu nhi 1
Ấu nhi 2
2.5 Quá trình đột biến
SVTH: Nguyễn Thị Mai 8
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Quá trình tiến hóa được gọi là quá trình đột biến khi một hoặc một số tính trạng
của con không được thừa hưởng từ hai chuỗi nhiễm sắc thể cha-mẹ. Phép đột biến
xảy ra với xác suất thấp hơn rất nhiều lần so với xác suất xảy ra phép lai. Phép đột
biến có thể mô tả như sau:
Chọn ngẫu nhiên một số k từ khoảng 1 ≥ k ≥ m
Thay đổi giá trị của gen thứ k
Đưa nhiễm sắc thể con vào quần thể để tham gia quá trình tiến hóa tiếp
theo
2.6 Quá trình chọn lọc
Là quá trình loại bỏ các cá thể xấu và để lại những cá thể tốt. Phép chọn
được mô tả như sau:
Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần
Loại bỏ các cá thể cuối dãy, chỉ để lại n cá thể tốt nhất.
SVTH: Nguyễn Thị Mai 9
11101001000
00001010101
11101010101
00001001000
11111000000
11101001000
00001010101
11001011000
00101000101
00111110000
11101001000
00001010101
10001000100
01101011001
00111110000
11101001000 11101011000
Các chuỗi ban đầu Mặt nạ lai ghép Các cá thể con
Lai ghép điểm đơn:
Lai ghép điểm kép:
Lai ghép đồng nhất:
Đột biến điểm:
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
3. Các toán tử
Hình 1. Các toán tử chung cho thuật giải di truyền
3.1 Toán tử chọn lọc
Mục đích của việc chọn này nhằm nhấn mạnh sự lọc cá thể trong quần thể
và hi vọng tạo ra quần thể con của nó có giá trị thích nghi cao hơn.
- Chọn lọc Bánh xe Roulette (Roulette Wheel Selection)
Công thức:
Trong đó, là giá trị thích nghi của cá thể
SVTH: Nguyễn Thị Mai 10
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Lúc này ta biểu diễn (phần trăm) trong một vòng tròn(bánh xe) và ta
chọn cá thể cha mẹ một cách ngẫu nhiên(như quay chiếc nón kỳ diệu). Dĩ
nhiên với giá trị thích nghi càng lớn thì xác suất được chọn của cá thể càng
cao.
Hình. Bánh xe Roulette thể hiện 8 cá thể với hàm thích nghi tương ứng.
Cá thể thứ 5 có hàm thích nghi lớn hơn các cá thể khác nên bánh xe
Roulette sẽ lựa chọn cá thể 5 hơn các cá thể khác.
- Chọn lọc ngẫu nhiên (Random Selection): Chọn cá thể cha mẹ một cách
ngẫu nhiên trong quần thể. Việc này coi các cá thể là vai trò như nhau.
- Chọn lọc xếp hạng (Rank Selection)
Nếu như ta thực hiện cách chọn Roulette Wheel Selection thì có nhược
điểm là: nếu sự khác biệt quá lớn: >> thì các trường hợp chọn đều rơi
vào hết dẫn đến hội tụ quá sớm. Vì thế để kiểm soát trường hợp này ta có
rất nhiều cách, đây là hai cách đơn giản nhất:
SVTH: Nguyễn Thị Mai 11
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Cách 1: Chọn ngẫu nhiên các cặp cá thể trong quần thể. Tạo giá trị R
(0, 1), nếu R < r thì chọn cá thể đầu, ngược lại chọn cá thể sau làm
cá thể cha mẹ. Trong đó r là tham số đưa vào.
Cách 2: Chọn 2 cá thể random, giá trị cá thể nào lớn hơn thì chọn làm
cá thể cha mẹ.
- Chọn lọc cạnh tranh (Tournament Selection): Chọn u cá thể trong quần thể
và chọn giá trị cao nhất đưa vào “hồ chứa”. Lặp lại quá trình trên cho đến khi
“hồ chứa” các cá thể cha mẹ đầy. Lúc này quần thể cha mẹ có giá trị thích
nghi trung bình rất cao.
- Chọn lọc Boltzmann (Boltzmann Selection)
Lấy ý tưởng từ thuật toán giả luyện thép để tìm minimize hay
maximize. Điều khiển nhiệt độ làm lạnh thép chậm dần đi nếu muốn
tìm minimize và ngược lại.
Ví dụ là giá trị thích nghi cao nhất hiện tại. Nếu cá thể tiếp
theo có độ thích nghi mà > thì cá thể này được chọn vì cá thể
này được chọn với xác suất Boltzmann:
Trong đó: , g là số lượng generate hiện tại, G
là số lượng tối đa của g. Giá trị α được chọn nằm trong đoạn [0, 1]. Dừng lại
khi T = 0.
- Lấy mẫu ngẫu nhiên (Stochastic Universal Sampling)
SVTH: Nguyễn Thị Mai 12
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Nếu muốn chọn ra N mẫu thì khoảng các giữa các mẫu được chọn là 1/N.
Ta cần tạo ngẫu nhiên một số = [0,1/N]. Số này là vị trí được chọn trong
quần thể tức là từ vị trí N, lấy N phần tử trong quần thể.
3.2 Toán tử đột biến
- Flip bit: chuyển đổi giá trị của gen được chọn. Ví dụ từ 0 đổi thành 1 và từ 1
đổi thành 0. Toán tử này chỉ được sử dụng với các gen nhị phân.
Cho hai chuỗi được chọn để đột biến:
Đảo giá trị của gen đã chọn từ 0 sang 1 và từ 1 thành 0. Kết quả của chuỗi đã
được đột biết là:
- Boundary (Giới hạn): Phép đột biến thay thế giá trị của gen đã chọn với giới
hạn tăng hoặc giảm. Toán tử này có thể sử dụng cho gen ở kiểu integer hoặc
float.
- Gaussian: Toán tử thêm một đơn vị giá trị phân phối ngẫu nhiên Gauss vào
gen đã chọn. Giá trị gen mới bị loại bỏ khỏi giới hạn trên và dưới của gen đó.
Toán tử này chỉ dùng cho gen kiểu integer và float.
3.3 Toán tử lai ghép
- Lai ghép một điểm (one-point crossover): lựa chọn ngẫu nhiên một điểm lai
ghép. Sau đó, sao chép toàn bộ phần trước điểm lai ghép của NST cha. Phần sau
điểm lai ghép được sao chép từ NST còn lại.
Ví dụ: Cho hai NST cha để lai ghép.
Sau khi tiến hành lai ghép một điểm ta có NST con như sau:
SVTH: Nguyễn Thị Mai 13
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
- Lai ghép hai điểm (two-point crossover): lựa chọn ngẫu nhiên 2 điểm lai ghép
trong một NST. Sau đó, hoán vị hai NST cha giữa những điểm lai này để tạo ra
2 NST mới.
Cho 2 NST cha để lai ghép:
Hoán vị hai NST giữa các điểm lai ghép, ta được kết quả sau:
- Lai ghép đồng nhất (Uniform crossover): Phép lai ghép đồng nhất quyết định
(xác suất – tỉ lệ trộn) NST cha nào sẽ phân phối giá trị gen trong NST con. Phép
lai này cho phép NST cha được trộn ở mức độ gen hơn là mức độ phân đoạn
(như phép lai 1 hoặc 2 điểm).
Cho 2 chuỗi NST cha:
Nếu tỉ lệ trộn là xấp xỉ 0.5 và phân nửa gen của NST con lấy từ NST Parent 1,
phân nửa còn lại lấy từ NST Parent 2.
Kết quả sau khi thực hiện phép lai đồng nhất:
- Lai ghép số học: phép lai này cộng tuyến tính hai vector NST cha để tạo ra 2
NST con theo công thức:
Trong đó, a: hệ số trọng lượng ngẫu nhiên được chọn trước phép lai.
Cho 2 chuỗi NST cha. Mỗi chuỗi có 4 gen kiểu float.
Áp dụng công thức trên và giả sử hệ số trọng lượng là 0.7, ta có hai chuỗi kết
quả như sau:
SVTH: Nguyễn Thị Mai 14
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
- Lai ghép Heuristic: Phép lai này sử dụng giá trị thích nghi của 2 NST cha để
quyết định hướng nghiên cứu. NST con được tạo ra từ công thức sau:
r: số ngẫu nhiên giữa 0 và 1.
Có thể chuỗi kết quả offspring1 không tin cậy. Có thể xảy ra nếu r được chọn
như khi một hoặc nhiều gen rơi ra khỏi phạm vi trên dưới cho phép. Vì thế, phép
lai heuristic có một tham số n được định nghĩa bởi người dùng, là số lần thử để
tìm r và cho ra NST con đáng tin cậy. Nếu sau n lần thử mà không tạo ra NST
con đáng tin cậy nào, NST cha xấu nhất được trả về như offstring1.
4. Các tham số
Xác suất lai ghép: là tham số cho biết tần suất thực hiện toán tử lai ghép. Nếu
không có lai ghép, cá thể con sẽ chính là bản sao của cá thể “cha mẹ”. Nếu xác suất
lai ghép bằng 100%, khi đó mọi cá thể con đều được tạo ra qua quá trình lai ghép.
Xác suất đột biến: là tham số cho biết tần suất đột biến của nhiễm sắc thể. Nếu
không có đột biến, thế hệ con được tạo ra ngay sau giai đoạn lai ghép mà không bị
thay đổi. Ngược lại, một hoặc một số phần của nhiễm sắc thể sẽ bị thay đổi. Nếu
xác suất đột biến là 100%, toàn bộ nhiễm sắc thể sẽ bị thay đổi. Nếu tham số này
bằng 0%, không có gì bị thay đổi hết
Kích thước quần thể: là tham số cho biết có bao nhiêu cá thể (NST) trong 1 thế
hệ của quần thể. Nếu có quá ít cá thể, khả năng thực hiện lai ghép rất nhỏ và khi đó
chỉ có một vùng tìm kiếm nhỏ mới được khảo sát. Ngược lại, việc kích thước quần
thể quá lớn cũng không tốt, do nó sẽ làm chậm quá trình giải bài toán.
5. Công thức
Tính độ thích nghi của mỗi nhiễm sắc thể v
i
(i=1… n)
SVTH: Nguyễn Thị Mai 15
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
n: kích thước quần thể
:hàm mục tiêu
Tìm tổng giá trị thích nghi của quần thể
Tính xác xuất chọn P
i
cho mỗI nhiễm sắc thể v
i
Tính xác suất tích luỹ p
i
cho mỗi nhiễm sắc thể P
i
Tiến trình chọn lọc được thực hiện bằng cách quay bánh xe rulet kích thước
quần thể lần. Mỗi lần chọn ra 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 một số ngẫu nhiên r trong khoảng [0, 1]
Nếu r < q1thì chọn nhiễm sắc thể v1, ngược lại chọn nhiễm sắc thể vi (2 ≤ i ≤
kích thước quần thể) sao cho qi-1 < r ≤ qi
6. Cấu trúc giải thuật di truyền
SVTH: Nguyễn Thị Mai 16
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Procedure Giải_thuật_di_truyền;
Begin
t:=0;
Khởi tạo ngẫu nhiên quần thể P(t);
Tính độ thích nghi từng cá thể trong P(t);
Repeat
t:=t+1;
Chọn các cá thể từ P(t - 1);
Lai tạo các cá thể đã chọn tạo ra P(t) mới;
Đột biến các cá thể trong P(t) theo xác suất p
m
;
Đánh giá độ phù hợp các cá thể trong tập P(t);
Until (thoả điều kiện dừng);
End;
7. Các giai đoạn của thuật giải di truyền
Giai đoạn 1: Khởi tạo quần thể ban đầu
Tạo quần thể đầu tiên trong thuật giải, là nơi xuất phát quá trình tiến hóa, bao
gồm tất cả các giá trị thô ban đầu. Tùy theo vấn đề của bài toán mà có cách khởi
động khác nhau. Trước một bài toán áp dụng thuật giải di truyền, ta cần phải xác
định rõ nhiễm sắc thể và cá thể cho vấn đề, và thông thường đó sẽ kết quả cuối
cùng. Việc phân tích sẽ dựa trên kết quả là cơ bản nhất.
Giai đoạn 2: Đánh giá cá thể
SVTH: Nguyễn Thị Mai 17
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Chắc chắn rằng việc chọn cá thể sẽ thông qua kết quả, hay mục đích của vấn
đề. Dựa trên mức độ thích nghi của cá thể, bao gồm những vướng mắc mà cá thể
gặp phải. Thông thường, đặt mỗi vấn đề nhỏ tương ứng với một giá trị điểm thích
nghi, kết quả đánh giá gồm tổng các số điểm đó. Cá thể tốt nhất sẽ có số điểm thấp
nhất hoặc lớn nhất. Theo thuyết tiến hóa của Darwin, nhiễm sắc thể tốt nhất sẽ tồn
tại và tạo ra các cá thể con mới.
Giai đoạn 3: Lai ghép
Lai ghép nhằm nâng cao kết quả cá thể, do đó, toán tử lai ghép sẽ tạo điều
kiện cho tiến trình hội tụ nhanh hay chậm. Còn tùy thuộc vào cách tổ chức và phân
bố các nhiễm sắc thể mà chúng ta có xác suất lai ghép nhanh hay chậm.
Giai đoạn 4: Đột biến
Cũng giống như lai ghép, toán tử đột biến làm tăng nhanh quá trình hội tụ,
nhưng tăng một cách đột ngột, cũng có khi sẽ không gây tác dụng gì một khi không
thành công. Không ai có thể đánh giá được phương pháp đột biến nào tốt hơn, do đó
có một vài phương pháp đơn giản, cũng có vài trường hợp khá phức tạp.
Giai đoạn 5: Xét Điều kiện kết thúc
Thoát ra quá trình tiến hóa quần thể, dựa vào bài toán mà có các cách kết
thúc vấn đề khác nhau, một khi đã đạt đến mức yêu cầu. Một vài trường hợp thông
thường như sau:
-Kết thúc theo kết quả: một khi đạt đến mức giá trị yêu cầu thì chấm dứt
ngay quá trình thực hiện.
-Kết thúc dựa vào số thế hệ: chọn số thế hệ, quá trình sẽ dừng đúng ngay số
thế hệ đã qui định trước, không cần biết kết quả như thế nào.
SVTH: Nguyễn Thị Mai 18
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
-Tính theo thời gian: không cần biết đã bao nhiêu thế hệ hay kết quả nào, chỉ
dựa vào số giờ qui định mà kết thúc.
-Tổ hợp: dùng nhiều phương án khác nhau cho vấn đề, chẳng hạn như : chạy
theo số thế hệ xong sau đó đánh giá cho chạy theo kết quả, hoặc ngược lại.
II. BÀI TOÁN LẬP LỊCH
1. Giới thiệu bài toán
Lập lịch có thể được định nghĩa là một bài toán tìm kiếm chuỗi tối ưu để
thực hiện một tập các hoạt động chịu tác động của một tập các ràng buộc cần phải
được thỏa mãn. Người lập lịch thường cố gắng thử đến mức tối đa sự sử dụng các
cá thể, máy móc và tối thiểu thời gian đòi hỏi để hoàn thành toàn bộ quá trình nhằm
sắp xếp lịch.Vì thế bài toán lập lịch là một vấn đề rất khó để giải quyết . Hiện nay
có nhiều khả năng để phát triển các kỹ thuật hiện tại để giải quyết bài toán này.
Những kỹ thuật đó bao gồm: các tiếp cận Trí tuệ nhân tạo như hệ thống tri thức cơ
sở (knowledge-based systems), bài toán thoả mãn ràng buộc, hệ chuyên gia, mạng
Nơron và các tiếp cận của các Nghiên cứu hoạt động: lập trình tính toán, lập trình
động, tìm kiếm nhánh và đường biên, kỹ thuật mô phỏng, tìm kiếm Tabu và phương
pháp nút cổ chai.
2. Khảo sát yêu cầu bài toán
Bài toán đặt ra vấn đề cần sắp xếp thời khoá biếu cho một trường đại học.
Cần có sự sắp xếp lịch học cho các lớp tại các phòng ở mỗi địa điểm, sao cho vừa
phù hợp lại vừa tiện dụng nhất.
Cho số lượng lớp là K. Mỗi lớp có một số môn học. Ta có D giáo viên, mỗi
giáo viên có thể dạy được một số môn nhất định. Số môn thực tế được đưa bởi V.
Yêu cầu lập lịch cho năm ngày trong tuần, và 6 giờ mỗi ngày.
3. Khảo sát, thu thập dữ liệu, thông tin, tri thức (DIK)
SVTH: Nguyễn Thị Mai 19
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Danh sách cơ sở dữ liệu cần có:
Danh sách cơ sở trường
Danh sách khoa
Danh sách khoá học
Danh sách học phần học và các lớp trong học kỳ
Danh sách lớp học
Danh sách giáo viên
Danh sách phòng học
Danh sách môn học và số tiết
Bảng phân công giáo viên giảng dạy tại các lớp
Bảng yêu cầu ràng buộc của giáo viên vớI lịch dạy
Bảng yêu cầu ràng buộc của lớp với lịch học
Bảng yêu cầu ràng buộc của phòng với lịch sử dụng phòng đó
4. Hướng giải quyết bài toán
4.1 Ý tưởng
Dựa vào thuật toán di truyền cổ điển.
Cấu trúc dữ liệu: Một lịch là một ma trận với n cột và K dòng (số lớp). Mỗi phần
tử của ma trận chỉ ra rằng giáo viên dạy lớp này đang dạy môn nào đó.
Minh họa cấu trúc dữ liệu
SVTH: Nguyễn Thị Mai 20
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
SVTH: Nguyễn Thị Mai 21
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
4.2 Các ràng buộc
Ràng buộc cứng:
Một giáo viên chỉ dạy được một lớp trong cùng một quãng thời gian.
Các lớp chỉ có một môn học trong cùng một quãng thời gian
Tất cả các bài học của một môn nào đó dạy tại một lớp phải được dạy
bởi cùng một giáo viên.
Một giáo viên không thể dạy quá 20 giờ mỗi tuần.
Ràng buộc mềm:
Một lớp có thể có các giờ trống
Một lớp có thể có cùng một môn nhiều lần trong một ngày
Tất cả các giáo viên có cùng số lượng giờ dạy như nhau.
4.3 Áp dụng thuật giải di truyền giải quyết bài toán lập lịch
Hàm thích nghi: gán một số nguyên cho mỗi cá thể, được được đo bằng sự vi
phạm các ràng buộc
Mỗi một ràng buộc cứng được gán một số trong đoạn từ 0 đến 1000000 cho
hàm thích nghi. Với mỗi ràng buộc mềm được gán giá trị trong đoạn 0 đến
200000
Việc chọn lọc là một tiến trình tương đối nhạy cảm. Để phát triển quần thể,
chúng ta cần lựa chọn cá thế khỏe mạnh để tái sinh.
Việc lựa chọn được thực hiện theo 2 pha:
lựa chọn trước bằng đấu loại
lựa chọn hiện thời ngẫu nhiên
Ví dụ chọn lọc:
SVTH: Nguyễn Thị Mai 22
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Với mỗi tiến trình lai, gen của 2 cá thể được đổi chỗ cho nhau
Hầu hết các phép lai đều theo chiều hướng thay đổi vị trí của các lớp
SVTH: Nguyễn Thị Mai 23
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Đột biến: đổi ngẫu nhiên một môn học và bảo đảm rằng sẽ không có việc đột
biến trên cùng môn đó một lần nữa. Nhưng, với mỗi giáo viên tương ứng,
chúng ta sẽ chọn một giáo viên hợp lệ với môn học
SVTH: Nguyễn Thị Mai 24
Thuật toán và phương pháp giải quyết GVHD: PGS.TS Đỗ Văn Nhơn
Vấn đề của bài toán khá phức tạp về mặt ràng buộc, nhưng phương pháp chia
để trị vẫn là biện pháp hữu hiệu trong mọi vấn đề phức tạp. ở đây cũng vậy, theo
phân cấp các ràng buộc mà ta giải quyết bài toán xếp thời khóa biểu này thành hai
giai đoạn khác nhau:
Giai đoạn 1: nhằm giải quyết thành phần ràng buộc ở mức lớp học, với các
vấn đề cơ bản phức tạp của những đối tượng liên quan tới việc học của lớp.
Khi đã có được kết quả cuối cùng là lịch học cho từng lớp một cách hoàn
chỉnh, chúng sẽ được dùng làm thông tin cho giai đoạn sau.
Giai đoạn 2 : tổng hợp lại các ràng buộc còn lại và đã được đơn giản hóa
trong giai đoạn trước. Kết quả của giai đoạn này chính là mục tiêu cuối cùng
của bài toán. Đó là lịch học của các lớp trong một cơ sở.
Cả hai giai đoạn tuy có mục tiêu và dữ liệu khác nhau, nhưng về cách giải
quyết có tính tương tự nhau, nên không khác gì nhiều khi áp dụng vào mô hình
thuật giải di truyền.
Giai đoạn 1 - Xếp lịch học các lớp
Chọn mô hình cá thể lớp học
Lịch học của một lớp có hai thành phần chính, bao gồm: các môn học và các giờ
học trong tuần. Việc đặt ngẫu nhiên các môn học với các giờ học sẽ tạo thành một
lịch học cho từng lớp. Như vậy một lớp học tương ứng sẽ có nhiều lịch học khác
nhau, do đó ta chọn mỗi lịch học làm cá thể trong thuật giải di truyền.
Và trong hai thành phần đó, thì các giờ học là thành phần ổn định hơn về số
lượng cũng như về giá trị của chúng, cho nên ta chọn môn học làm đơn vị nhiễm
sắc thể trong cá thể. Vì đối với môn học việc làm nhiễm sắc thể là phù hợp với tính
không ổn định của nó : với số lượng các môn phụ thuộc từng lớp học, cũng giống
như số lượng nhiễm sắc thể trong cá thể, có chiều dài không nhất thiết phải cố định
hay bằng nhau. Ngoài ra chưa kể đến tính phức tạp của môn học về số tiết phải học
luôn bị thay đổi, trong khi giá trị các giờ học thì ngược lại, có thể xác định một cách
rõ ràng và nhanh chóng.
Mô hình cá thể trong lịch lớp
SVTH: Nguyễn Thị Mai 25