HỘI NGHỊ NCKH KHOA SP TOÁN-TIN<br />
<br />
THÁNG 05/2015<br />
<br />
GIẢI THUẬT DI TRUYỀN (GAs) VÀ CÁC ỨNG DỤNG<br />
ThS. Trần Kim Hương<br />
Khoa Sư phạm Toán-Tin, Trường Đại học Đồng Tháp<br />
Email: tkhuong@dthu.edu.vn<br />
ThS. Nguyễn Thị Ngọc Chi<br />
Khoa Sư phạm Toán-Tin, Trường Đại học Đồng Tháp<br />
Tóm tắt. Giải thuật di truyền (GAs) trong lĩnh vực tin học là một trong những<br />
giải thuật thú vị, bởi vì nó mô phỏng qui luật đấu tranh sinh tồn của tự nhiên và<br />
cũng là một giải thuật vô cùng hiệu quả đối với các loại bài toán tối ưu. Trong bài<br />
viết này, chúng tôi trình bày những đặc điểm cơ bản nhất của GAs, nêu một vài ứng<br />
dụng và một số công trình nghiên cứu về GAs đã được công bố ở trong nước.<br />
1. Mở đầu<br />
Nhà bác học Charles Darwin đã nêu ra lý thuyết về sự tiến hóa tự nhiên của các<br />
loài vật, qua nhiều thế hệ sinh vật phát triển dựa trên nguyên lý của sự chọn lọc tự<br />
nhiên “loài nào thích nghi thì sẽ tồn tại”, như ta thấy trong tự nhiên các loài vật sẽ<br />
cạnh tranh nhau về nơi trú ẩn, thực phẩm,…các cá thể cùng loài còn cạnh tranh nhau<br />
để thu hút bạn tình trong mùa sinh sản do đó những cá thể nào ít thích nghi thì ít có<br />
cơ hội tồn tại hơn và những cá thể thích nghi được thì sẽ phát triển và cho ra nhiều<br />
con cái. Trong quá trình sinh sản sẽ tổ hợp các đặc tính tốt từ tổ tiên, sau một vài thế<br />
hệ những loài tiến hóa tự nhiên sẽ thích nghi hơn trong môi trường phát triển. Dựa<br />
trên nền tảng lý thuyết tiến hóa tự nhiên này, đến năm 1975 Holland đã phát triển ý<br />
tưởng này vào hệ thống nhân tạo, ông áp dụng nguyên tắc này để tối ưu hóa các vấn<br />
đề và xây dựng thuật toán di truyền (GAs). Hiện nay GAs được xem như một công<br />
cụ mạnh mẽ để giải quyết các vấn đề về tìm kiếm và tối ưu hóa phức tạp như thời<br />
gian biểu, lập kế hoạch mua sắm, …Trong bài viết này, chúng tôi nêu ra cách thức<br />
hoạt động và các ứng dụng của GAs để giải quyết các bài toán cụ thể.<br />
2. Kết quả chính<br />
2.1 Giải thuật di truyền (GAs)<br />
GAs là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giải pháp thích hợp<br />
cho các bài toán tối ưu tổ hợp (combinatorial optimization), là một phân ngành của<br />
giải thuật tiến hóa, vận dụng các nguyên lý của tiến hóa như: di truyền, đột biến,<br />
chọn lọc tự nhiên, và trao đổi chéo. Nó sử dụng ngôn ngữ máy tính để mô phỏng<br />
quá trình tiến hoá của một tập hợp những đại diện trừu tượng (gọi là những nhiễm<br />
sắc thể), của các giải pháp có thể (gọi là những cá thể) cho bài toán tối ưu hóa vấn<br />
đề. Tập hợp này sẽ tiến triển theo hướng chọn lọc những giải pháp tốt hơn.<br />
GAs cũng như các thuật toán tiến hoá, đều được hình thành dựa trên một quan<br />
niệm được coi là một tiên đề phù hợp với thực tế khách quan. Đó là quan niệm "Quá<br />
trình tiến hoá tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất và tự nó đã mang<br />
tính tối ưu". Quá trình tiến hoá thể hiện tính tối ưu ở chỗ thế hệ sau bao giờ cũng tốt<br />
hơn thế hệ trước.<br />
94<br />
<br />
HỘI NGHỊ NCKH KHOA SP TOÁN-TIN<br />
<br />
THÁNG 05/2015<br />
<br />
Ngày nay, GAs càng trở nên quan trọng, đặc biệt là trong lĩnh vực tối ưu hoá,<br />
một lĩnh vực có nhiều bài toán thú vị, được ứng dụng nhiều trong thực tiễn nhưng<br />
thường khó và chưa có phương pháp hiệu quả để giải quyết.<br />
2.1.1 Các tính chất của giải thuật di truyền<br />
GAs là kỹ thuật chung, giúp giải quyết vấn đề bằng cách mô phỏng sự tiến hóa<br />
của con người hay của sinh vật nói chung (dựa trên thuyết tiến hóa muôn loài của<br />
Darwin), trong điều kiện qui định sẵn của môi trường. Mục tiêu của GAs không<br />
nhằm đưa ra lời giải chính xác tối ưu mà là đưa ra lời giải tương đối tối ưu.<br />
Một cá thể trong GAs sẽ biểu diễn một giải pháp của bài toán. Tuy nhiên,<br />
không giống với trong tự nhiên là một cá thể có nhiều nhiễm sắc thể (NST) mà để<br />
giới hạn trong GAs, ta quan niệm một cá thể có một NST. Do đó, khái niệm cá thể<br />
và NST trong GAs coi như là tương đương.<br />
Một NST được tạo thành từ nhiều gen, mỗi gen có thể có các giá trị khác nhau<br />
để quy định một tình trạng nào đó. Trong GAs, một gen được coi như một phần tử<br />
trong chuỗi NST.<br />
Một tập hợp các cá thể có cùng một số đặc điểm nào đấy được gọi là quần thể.<br />
Trong thuật giải di truyền, ta quan niệm quần thể là một tập các lời giải của một bài<br />
toán.<br />
2.1.2 Các bước cơ bản của giải thuật di truyền<br />
Bắt đầu<br />
<br />
Nhận các tham số<br />
của bài toán<br />
<br />
Khởi tạo quần thể<br />
ban đầu<br />
<br />
Tính giá trị thích nghi<br />
<br />
Điều kiện<br />
dừng<br />
<br />
Sinh sản<br />
<br />
Lai ghép<br />
<br />
Lựa chọn giải pháp tốt<br />
nhất<br />
<br />
Đột biến<br />
<br />
Kết<br />
thúc<br />
<br />
Hình 1: Sơ đồ thực hiện giải thuật di truyền đơn giản<br />
Như trong hình 1, ta thấy giải thuật di truyền đơn giản được thực hiện qua năm<br />
bước cơ bản sau:<br />
1. [Bắt đầu ] Nhận các tham số cho thuật toán.<br />
2. [Khởi tạo] Sinh ngẫu nhiên một quần thể gồm n cá thể ( là n lời giải cho bài<br />
toán)<br />
95<br />
<br />
HỘI NGHỊ NCKH KHOA SP TOÁN-TIN<br />
<br />
THÁNG 05/2015<br />
<br />
3. [Quần thể mới ] Tạo quần thể mới bằng cách lặp lại các bước sau cho đến<br />
khi quần thể mới hoàn thành<br />
[Thích nghi] Ước lượng độ thích nghi eval(x) của mỗi cá thể.<br />
[Kiểm tra ] Kiểm tra điều kiện kết thúc giải thuật.<br />
[Chọn lọc] Chọn hai cá thể bố mẹ từ quần thể cũ theo độ thích nghi của<br />
chúng (cá thể có độ thích nghi càng cao thì càng có nhiều khả năng được chọn)<br />
[Lai ghép] Với một xác suất lai ghép được chọn, lai ghép hai cá thể bố<br />
mẹ để tạo ra một cá thể mới.<br />
[Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể mới<br />
5. [Chọn kết quả] Nếu điều kiện dừng được thỏa mãn thì thuật toán kết thúc và<br />
trả về lời giải tốt nhất trong quần thể hiện tại<br />
GAs có hai loại điều kiện dừng cơ bản (1) dựa trên cấu trúc nhiễm sắc thể,<br />
kiểm soát số gen được hội tụ, nếu số gen hội tụ vượt quá số phần trăm nào đó của<br />
tổng số gen, việc tìm kiếm sẽ kết thúc; (2) dựa trên ý nghĩa đặc biệt của một nhiễm<br />
sắc thể, đo tiến bộ của giải thuật trong một số thế hệ cho trước, nếu tiến bộ này nhỏ<br />
hơn một hằng số ε xác định, kết thúc tìm kiếm.<br />
2.2 Nguyên lý hoạt động<br />
Nền tảng lý thuyết của GAs dựa trên biểu diễn chuỗi nhị phân và lý thuyết sơ<br />
đồ. Một sơ đồ là một chuỗi, dài bằng chuỗi nhiễm sắc thể, các thành phần của nó có<br />
thể nhận một trong các giá trị của tập ký tự biểu diễn gen hoặc một ký tự đại diện<br />
“*”. Sơ đồ biểu diễn một không gian con của không gian tìm kiếm. Không gian con<br />
này là tập tất cả các chuỗi trong không gian lời giải mà với mọi vị trí trong chuỗi giá<br />
trị của gen trùng với giá trị của sơ đồ [1]<br />
Ví dụ: các chuỗi và sơ đồ có chiều dài 10.<br />
Sơ đồ (*111100100) sẽ khớp với hai chuỗi:<br />
{(0111100100), (1111100100)}<br />
Và sơ đồ (*1*1100100) sẽ khớp với 4 chuỗi<br />
{(0101100100), (0111100100), (1101100100), (1111100100)}<br />
Đương nhiên, sơ đồ (1001110001) chỉ khớp với chính nó, và sơ đồ<br />
(**********) khớp với tất cả các chuỗi có chiều dài 10. Rõ ràng là mỗi sơ đồ cụ thể<br />
có tương ứng 2r chuỗi, với r là số ký tự đại diện ‘*’ có trong sơ đồ. Mặc khác, mỗi<br />
chuỗi chiều dài m sẽ khớp với 2m sơ đồ.<br />
Một chuỗi chiều dài m, sẽ có tối đa 2m sơ đồ. Trong một quần thể kích thước n,<br />
có thể có tương ứng từ 2m đến nx2m sơ đồ khác nhau.<br />
Các sơ đồ khác nhau có những đặc trưng khác nhau. Các đặc trưng này thể<br />
hiện qua hai thuộc tính quan trọng bậc và chiều dài xác định.<br />
Bậc của sơ đồ S (ký hiệu σ(S)) là chiều dài của chuỗi trừ đi số ký tự đại diện.<br />
Bậc xác định đặc trưng của sơ đồ.<br />
Ví dụ: ba sơ đồ chiều dài 10<br />
S1=(***001*110)<br />
S2=(****00**0*)<br />
S3=(11101**001)<br />
Có bậc tương ứng:<br />
σ(S1)=6; σ(S2)=3; σ(S3)=8<br />
96<br />
<br />
HỘI NGHỊ NCKH KHOA SP TOÁN-TIN<br />
<br />
THÁNG 05/2015<br />
<br />
Khái niệm bậc của sơ đồ giúp cho việc tính xác suất sống còn của sơ đồ do ảnh<br />
hưởng của đột biến.<br />
Chiều dài xác định của sơ đồ S (ký hiệu là δ(S)) là khoảng cách giữa hai vị trí<br />
cố định ở đầu và cuối. Nó định nghĩa “độ nén” của thông tin chứa trong một sơ đồ.<br />
Ví dụ:<br />
δ(S1)=10-4=6; δ(S2)=9-5=4; δ(S3)=10-1=9<br />
Như vậy, một sơ đồ chỉ có một vị trí cố định duy nhất thì sẽ có chiều dài xác<br />
định là 0<br />
Khái niệm chiều dài xác định của sơ đồ giúp tính xác suất sống còn của sơ đồ<br />
do ảnh hưởng của phép lai.<br />
GAs sử dụng một quần thể của các lời giải có thể. Mỗi lời giải được đại diện<br />
bởi một NST, nó chỉ là một đại diện trừu tượng. Các NST được mã hóa thành các<br />
chuỗi nhị phân, mỗi vị trí trên chuỗi tồn tại hai giá trị là “1” hoặc “0”. Chẳng hạn<br />
như: 1 0 0 1 0 1 0 1 1 0.<br />
Độ tốt của một cá thể được đánh giá bằng hàm mục tiêu g(x) với x là một NST.<br />
Hàm mục tiêu g(x) sau khi được tính toán sẽ là cơ sở để đánh giá độ thích nghi của<br />
cá thể. Hàm thích nghi f(x) là sẽ quyết định khả năng một cá thể được chọn lọc vào<br />
thế hệ sau, việc ánh xạ g(x)→ f(x) có nhiều phương pháp ánh xạ khác nhau phụ<br />
thuộc vào mục đích của bài toán.<br />
2.3 So sánh GAs với kỹ thuật tối ưu khác<br />
Hoạt động của GAs đơn giản là việc mô phỏng sự tiến hóa và chọn lọc tự<br />
nhiên bằng máy tính bắt đầu từ một quần thể ngẫu nhiên. Bên cạnh đó để tối ưu ta<br />
cần hàm lượng giá hoặc hàm thích nghi để chọn cá thể tốt và loại bỏ cá thể xấu.<br />
Thuật toán di truyền (GAs) khác với kĩ thuật tối ưu khác ở chỗ [2]:<br />
- GAs làm việc với bộ mã của biến chứ không phải làm việc trực tiếp trên<br />
biến.<br />
- Hầu hết các kĩ thuật tối ưu thông thường tìm kiếm từ một đỉnh, trong khi đó<br />
GAs luôn hoạt động trên tập hợp đỉnh (điểm tối ưu), điều này là một ưu điểm của<br />
GAs giúp tăng cơ hội tiếp cận tối ưu toàn cục và tránh hội tụ sớm tại điểm cục bộ<br />
địa phương.<br />
- GAs đánh giá hàm mục tiêu để phục vụ quá trình tìm kiếm, vì vậy có thể<br />
ứng dụng cho bất kì bài toán tối ưu nào (liên tục hay rời rạc).<br />
- GAs thuộc lớp các thuật toán xác suất, các thao tác cơ bản của GAs dựa trên<br />
khả năng tích hợp ngẫu nhiên trong quá trình xử lý.<br />
2.4 Ứng dụng của GAs<br />
GAs được sử dụng cho những bài toán khó, và đã được ứng dụng thành công<br />
cho một số bài toán như: lập kế hoạch, điều khiển tương thích, chương trình trò<br />
chơi, các bài toán vận tải, bài toán người đi du lịch,…Sau đây là một vài ứng dụng<br />
tiêu biểu của GAs [1].<br />
Bài toán người du lịch (TSP)<br />
TSP được mô tả như sau: Một du khách muốn thăm những thành phố anh quan<br />
tâm; mỗi thành phố thăm qua đúng một lần; rồi trở về điểm khởi hành. Biết trước<br />
chi phí di chuyển giữa hai thành phố bất kỳ. Yêu cầu của bài toán là xây dựng một<br />
lộ trình thỏa các điều kiện trên với tổng chi phí nhỏ nhất.<br />
<br />
97<br />
<br />
HỘI NGHỊ NCKH KHOA SP TOÁN-TIN<br />
<br />
THÁNG 05/2015<br />
<br />
TSP là bài toán tối ưu tổ hợp, không gian tìm kiếm là tập các hoán vị của n<br />
thành phố. Bất cứ hoán vị nào của n thành phố cũng là một lời giải chấp nhận được.<br />
Lời giải tối ưu là một hoán vị với chi phí tối thiểu của hành trình. Không gian tìm<br />
kiếm là n!. Có thể giải bài toán này bằng nhiều phương pháp: phương pháp nhánh<br />
cận, phương pháp gần đúng hay những phương pháp tìm kiếm heuristic. Phương<br />
pháp nhánh cận đã được chứng minh đạt sự tối ưu về lời giải, tuy nhiên phương<br />
pháp này lại mất khá nhiều thời gian khi số đỉnh của đồ thị lớn.<br />
Trong những năm gần đây, đã xuất hiện nhiều thuật toán đạt gần đến lời giải<br />
tối ưu của bài toán TSP: láng giềng gần nhất, đảo gần nhất, đảo xa nhất…và TSP<br />
cũng trở thành một đích ngắm của cộng đồng GAs.<br />
Với bài toán này chúng ta sẽ đánh số các thành phố và dùng một vector nguyên<br />
để biểu diễn một NST lộ trình v= biểu diễn một lộ trình: từ i1 đến i2…,<br />
từ in-1 đến in và trở về i1 (v là một hoán vị của vector ), hàm lượng giá<br />
chính là chi phí của lộ trình.<br />
Bài toán lập lịch<br />
Lập lịch là bài toán tổ chức sản xuất. Một công ty cần sản xuất nhiều loại hàng<br />
hóa; những hàng hóa này có thể được sản xuất theo những kế hoạch khác nhau. Mỗi<br />
kế hoạch xử lý gồm một chuỗi thao tác; những thao tác này sử dụng một số tài<br />
nguyên và cần thời gian chạy máy. Một lịch sản xuất là một kế hoạch thực hiện các<br />
đơn đặt hàng. Trong đó, một số đơn đặt hàng có thể được thực hiện với cùng những<br />
thao tác tương đương. Nhiệm vụ là lên kế hoạch, lập lịch sản xuất, để thực hiện các<br />
đơn đặt hàng này nhanh nhất có thể.<br />
Bài toán lập lịch là chọn một chuỗi các thao tác đồng thời chỉ định về thời gian<br />
bắt đầu/ kết thúc và các tài nguyên cần thiết cho mỗi thao tác. Điều cần quan tâm<br />
chính yếu là chi phí thời gian máy rỗi, năng lực lao động và các đơn đặt hàng cần<br />
hoàn thành đúng hạn.Ý tưởng chính trong phương pháp là mã hóa biểu diễn của lịch<br />
phân công là các toán tử di truyền phải thực hiện theo cách có ý nghĩa, và một bộ<br />
giải mã phải luôn tạo ra một lời giải hợp lệ cho bài toán. Thủ tục giải mã mô phỏng<br />
các thao tác của công việc theo cách mà khi một máy tính sẵn sàng chọn lựa, thì<br />
thao tác cho phép đầu tiên từ danh sách ưu tiên được lấy ra. Ví dụ nếu danh sách ưu<br />
tiên của máy m1 là: m1(40 o3 o1 o2 ‘chờ’ ‘nhàn rỗi’), thì thủ tục giải mã vào thời<br />
điểm 40 có thể thực hiện đơn đặt hàng o3 trên máy m1. Nếu không được, thủ tục giải<br />
mã sẽ thực hiện đơn đặt hàng o1 và o2 (nghĩa là, tìm ở o1 trước; nếu không được mới<br />
tìm ở o2). Biểu diễn này bảo đảm tạo một lịch phân công hợp lệ.<br />
Lập thời khóa biểu cho trường học<br />
Bài toán thời khóa biểu là một bài toán kết hợp nhiều ràng buộc không tầm<br />
thường thuộc nhiều loại. Có nhiều phiên bản của bài toán thời khóa biểu, một trong<br />
những bài toán này có thể được mô tả như sau: Có một danh sách các giáo viên, một<br />
danh sách các khoảng thời gian, một danh sách các lớp. Bài toán cần tìm thời khóa<br />
biểu tối ưu (giáo viên – thời gian – lớp); hàm mục tiêu phải thỏa những mục tiêu này<br />
(các ràng buộc mềm) gồm: Có một số giờ được xác định trước cho mỗi giáo viên và<br />
mỗi lớp; Chỉ một giáo viên trong một lớp vào một giờ nhất định; Một giáo viên<br />
không thể dạy hai lớp cùng lúc; Đối với mỗi lớp được xếp thời khóa biểu vào một<br />
khoảng thời gian, phải có một giáo viên…Ngoài ra còn có các mục tiêu sư phạm<br />
như trải một số lớp ra nguyên tuần, những mục tiêu thuộc cá nhân như những giáo<br />
98<br />
<br />