Trong hầu hết các nghiên cứu, các tác giả sử dụng GA với sơ đồ chính như Hình 2.2 dưới đây. Trong [1], các phép toán trong GA được tác giả sử dụng bao gồm phép chọn lọc cá thể bố mẹ từ quần thể hiện tại (SGA_Selection), phép lai ghép các bố mẹ thành cá thể con (SGA_Crossover), phép đột biến các cá thể con (SGA_Mutation) và phép tái tạo hay chọn và tạo ra quần thể mới từ các cá thể bố mẹ và con sau khi được đột biến (SGA_Reproduction).
Để sinh một thế hệ mới từ thế hệ hiện tại, các phép toán di truyền trên được áp dụng như sau: Chọn một cặp bố mẹ từ quần thể hiện tại bằng SGA_Selection, thực hiện phép lai ghép (SGA_Crossover) theo xác suất pc để tạo hai con và thực hiện đột biến trên hai con này theo xác xuất đột biến là pm. Hai con được sinh ra sẽ cạnh tranh với cặp bố mẹ của chúng để tồn tại ở thế hệ tiếp thông qua phép toán SGA_Reproduction. Quá trình này được lặp lại cho đến khi thu được quần thể có đủ số lượng cá thể là Npop.
Kích thước của quần thể (số cá thể - Npop) trong các thế hệ là như nhau và được xác định trước. Điều kiện dừng trong thuật toán này là khi đạt được số thế hệ tối đa (Gmax), tham số Gmax được xác định bởi chuyên gia, hoặc khi sự khác nhau giữa hai thế hệ liền nhau dưới ngưỡng cho trước diff. Cuối cùng, cá thể tốt nhất được chọn để đưa ra kết quả của quá trình tìm kiếm bằng thuật toán SGA này.
Hình 2.3. Sơ đồ các bước chính của thuật toán di truyền (GA).
2.4.3Áp dụng GA tìm kiếm tham số tối ưu
a, Phát biểu bài toán
Trong quá trình xây dựng hệ luật khi áp dụng thuật toán sinh luật
IFRG1[1], nếu chỉ sử dụng một hệ S* với M luật thì nhiều khả năng hàm đánh
giá mục tiêu fp(S*) dẫn đến tối ưu tham số mang tính địa phương, tức là nó chỉ tối ưu đối với hệ đúng M luật. Một lý do khác là chúng ta khó xác định số luật
Khởi tạo quần thể xuất phát và đánh giá cá thể Bắt đầu
Tạo quần thể mới và đánh giá cá thể
Dừng? No Yes Chọn lọc Lai ghép Đột biến Kết thúc
M đối với một bài toán để có được bộ tham số tối ưu theo đúng nghĩa của nó (1.6). Ở đây chúng ta sẽ đánh giá mục tiêu hiệu quả phân lớp đối với một bộ tham số dựa trên nhiều hệ luật, giả sử với bộ tham số PAR, áp dụng thuật toán sinh luật IFRG1 để sinh hệ luật S0. Đặt Ns là số lượng các hệ luật cần dùng để đánh giá hiệu quả đối với PAR, khi đó để lấy ra Ns hệ luật {S*1, S*2,..., S*Ns} có số lượng các luật lần lượt là M1, M2,..., MNs, gọi Ns hệ này là Set(Ns) (ký hiệu S**).
Set(Ns) = {S*i | S*i= HAFRG(PAR, IFRG1, Mi), i = 1,...,Ns},
trong đó các Mi được cho trước. Theo cách này, chúng ta đánh giá các mục tiêu trong (2.1) dưới dạng trung bình, khi đó ký hiệu fp(S**) =
Ns i p i Ns f S 1 * 1 ( ), fn(S**) = Ns i n i Ns f S 1 * 1 ( ) và fa(S**) = Ns i a i Ns f S 1 * 1 ( ) tương ứng là hiệu quả phân lớp, số luật và độ dài trung bình của luật đánh giá trên Ns hệ luật Set(Ns).
Bài toán tối ưu ở trên có 3 mục tiêu, để áp dụng giải thuật di truyền, theo cách thông thường chúng ta kết nhập theo trọng số các mục tiêu trong (2.1) thành một mục tiêu dưới dạng sau:
wp.fp(S**) + wn.fn(S**)-1+ wa.fa(S**)-1max, (2.21)
trong đó 0 <wp,wn,wa< 1 và wp+wn+ wa= 1, hiển nhiên fn(S**) > 0 và
fa(S**) > 0 do đó fn(S**)-1 và fa(S**)-1 luôn tồn tại.
Theo điều kiện (2.3), ta giảm bớt tham số fm(c+) trong tập PAR, vì fm(c+) = 1- fm(c-). Hơn nữa, trong ĐS2GT chỉ gồm hai gia tử {L,V}, từ điều kiện(2.4) cho phép giảm bớt tham số (V), vì (V) = 1-(L). Như vậy không gian tìm kiếm sẽ được thu hẹp rất nhiều, cụ thể
PAR = { fmj(c-), j(L), kj | j =1,2,...,n }, (2.22)
Ngoài ra, để các giá trị ngôn ngữ mang ngữ nghĩa và định lượng của chúng thích hợp với thực tế, chúng ta sẽ đặt ràng buộc (2.2) theo khoảng giới
hạn nhỏ hơn. Tuy rằng việc thu hẹp giới hạn của các tham số làm cho hiệu quả của mô hình có thể không cao, nhưng các giá trị ngôn ngữ biểu diễn trong luật mờ sẽ có tính thực tế hơn. Khi đó ràng buộc (2.2) trở thành
Laj < fmj(c-) < Lbj, Lcj<µj(L) < Ldj, j=1,2…n (2.23)
trong đó các hằng số thỏa mãn 0 ≤ Laj ≤ Lbj≤ 1và 0 ≤ Lcj≤ Ldj ≤ 1 được lựa chọn để phù hợp với thực tế bài toán.
b, Phương pháp biểu diễn chuỗi gen trong GA
Để thiết kế thuật toán tìm kiếm tối ưu cho cả hệ luật và tham số mờ gia tử, chúng ta áp dụng mã hóa kép trong chuỗi gen của mỗi cá thể. Chuỗi gen, ký hiệu là C, bao gồm các gen biểu diễn các tham số gia mờ gia tử cho bài toán gọi là CP gồm 3 đoạn.
Đối với phần CP, sử dụng mã hóa số thực. Phần này bao gồm N cặp tham số mờ gia tử của N thuộc tính trong bài toán, mỗi thuộc tính có 3 tham số là
fm(c-) và(L), kj (trong ĐS2GT, ta có fm(c+) = 1-fm(c-) vàV = 1-(L)). Vậy chuỗi gen của phần này có độ dài 3N, Cp = {fm1(c-),1(L),k1,fm2(c-),2(L),
k2,..., fmN(c-),N(L), kN}. Giới hạn giá trị của mỗi allen, CP[i], trong chuỗi gen của phần này là [min, max] (0<min<max<1) nhằm phù hợp với tính ngữ nghĩa trực quan của người dùng, nếu khoảng giới hạn này càng lớn thì mức độ dị biệt về ngữ nghĩa của các giá trị ngôn ngữ càng cao và ngược lại. Trong bài này, chúng tôi sử dụng khoảng giới hạn [0.2, 0.8].
Cuối cùng, chuỗi gen của mỗi cá thể trong thuật toán GA là C = CP.
fm1(c-) fm2(c-) … fmN(c-) 1(L) 2(L) … N(L) k1 k2 … kN
c, Đánh giá cá thể (evaluation)
Để có được những cá thể như trên ta phải lấy được các tham số, từ đó sinh hệ luật bằng cách tính giá trị các hạng từ, khoảng tính mờ và hàm định lượng ngữ nghĩa của các hạng từ, sau đó đánh giá tỉ lệ phân lớp của hệ luật.
Để đánh giá cá thể trong quần thể ta phải dựa vào một mục tiêu nào đó, rất nhiều tác giả chuyển từ hàm đa mục tiêu về về dạng một mục tiêu bằng việc kết nhập thành hàm mục tiêu như sau:
fitness = wp.fp(S) + wn.fn(S)-1+ wa.fa(S)-1 (2.24)
trong đó wp, wn là các tro ̣ng số kết nhập, 0 <wp, wn, wa < 1 và wp+ wn +
wa=1.
Mỗi cá thể có chuỗi gen C = CP, phần CP sẽ xác định một bộ tham số mờ gia tử cho các thuộc tính. Bộ tham số mờ này được dùng để tính toán và định lượng ngữ nghĩa của các giá trị ngôn ngữ trong tập X và sử dụng chúng trong các luật mờ đã được sinh trong tập S0. Như vậy, chúng ta sẽ áp dụng hệ luật được chọn với định lượng ngữ nghĩa của các giá trị ngôn ngữ trong các luật để thực hiện phân lớp trên tập dữ liệu của bài toán và đánh giá các tiêu chí trong (2.4).
d, Thuật toán tinh chỉnh tham số mờ gia tử
Thuật toán tìm kiếm tối ưu bộ tham số dựa trên các phép toán di truyền gọi là thuật toán FPO-SGA[1] (fuzzy parameters optimization - SGA) như sau:
Inputs:
- Tập dữ liệu mẫu D = { (pi; ci) | i=1, ..., N }, pi = (di,1, ..., di,n) P, ciC
= {C1, ..., Cm}, n là số thuộc tính, m là số lớp, N là số mẫu dữ liệu;
- Giới hạn ràng buộc các tham số theo (2.8) gồm: 0 ≤ Laj<Lbj ≤ 1, và 0 ≤
Lcj<Ldj ≤ 1;
- Trọng số cho các mục tiêu của hàm thích nghi (2.6): 0 <wp, wn, wa< 1,
- Bộ các tham số mờ gia tử và mức phân hoạch kj của các thuộc tính
PAR = { fmj(c-), fmj(c+) = 1- fmj(c-), j(h), kj | h H, j = 1, ..., n };
Actions:
Bước 1) Khởi tạo một quần thể xuất phát gồm Np cá thể Pop0 = { p0,1,
p0,2, ..., p0,Np } để tính tham số nhiệt ban đầu T0 (ký hiệu pk,i là cá thể thứ i
trong quần thể của thế hệ k,nó là mã hóa của bộ tham số PAR, Np là kích thước của quần thể tại mỗi thế hệ trong SGA);
Bước2) Với mỗi p0,iPop0, thực hiện quá trình sinh hệ luật phân lớp
S(p0,i) = IFRG1(p0,i). Tính độ phù hợp của mỗi cá thể Fit(S(p0,i)) dựa trên hệ
luật S(p0,i) theo công thức (2.24), và tính tham số nhiệt ban đầu:
p N i N j j p i N p Fit N p Fit T p p 1,..., 2 1 , 0 , 0 0 )) ( ( 1 )) ( (S S
Bước 3) Đặt k = 0. Lặp theo mỗi k cho đến khi k = Gmax, Popk = {pk,1,
pk,2, ..., pk,Np} và thực hiện
3.a) Tính tham số nhiệt cho thế hệ k+1, Tk+1 = k
.Tk, trong đó < 1 là hệ số giảm nhiệt độ (thường chọn 0.7);
3.b) Tạo quần thể mới Popk+1 cho thế hệ k+1 như sau: Lặp theo i cho đến khi |Popk+1| = Np,
Chọn hai cặp cá thể bố mẹ p, qPopk sử dụng phép chọn lọc
SGA_Selection(Popk, Tk+1). Sau đó thực hiện các phép lai ghép, độ biến và thay thế trên cặp bố mẹ này sử dụng các phép
SGA_Crossover, SGA_Mutation, SGA_Replacement để tạo cặp cá thể mới p, q và đưa vào Popk+1.
Kết quả Popk+1 = {pk+1,1, pk+1,2, ..., pk+1,Np}
3.c) Với mỗi pk,iPopk+1, thực hiện quá trình sinh hệ luật phân lớp S(pk,i)
= HAFRG(pk,i). Tính độ phù hợp của mỗi cá thể Fit(S(pk,i)) dựa trên
hệ luật S(pk,i) theo công thức (2.6).
Bước 4) Trả về kết quả bộ tham số tương ứng với cá thể có độ phù hợp cao nhất trong thế hệ cuối cùng, PARopt.
End.
Các tham số trong thuật toán này được sử dụng để sinh hệ luật IFRG1
và để thực hiện các phép di truyền của SGA phải được cho trước. Tham số mức phân hoa ̣ch kj là một giá trị nguyên 1,2,3… được mã hóa bởi gen là mô ̣t số thực trong [0,1].
Ví dụ 2.2: Cho mẫu dữ liệu được bao gồm 8 mẫu dữ liệu được chia làm
3 lớp với hai thuộc tính Curvature và Diameter như sau:
CT DT Class 0.36 0.86 0 0.57 0.76 0 0.35 0.04 0 0.38 0.89 1 0.82 0.69 1 0.24 0.41 2 0.33 0.91 2 0.51 0.99 2
Thực hiện tối ưu tham số mờ bằng thuật toán FPO-SGA theo phương pháp sinh luật dựa trên khoảng tính mờ IFRG1.Chúng ta sử dụng giá trị ngôn ngữ sinh là c- = small và c+ = large, bộ tham số gia tử của hai thuộc tính được mã hóa trong mỗi cá thể gồm PAR = {fmj(c-), µj(L), kj | j =1,2}, giới hạn các tham số mờ gia tử là 0.1 ≤ fmj(c-), µj(L) ≤ 0.9 và mức phân hoạch kj∈ [1,3].
Các tham số chạy thuật toán tối ưu α = 0.7, 𝛾max = 9, kích thước quần thể tại mỗi thế hệ Np = 10, số thế hệ tiến hóa Gmax = 15. Trọng số cho các thành phần trong hàm mục tiêu (2.24) là wp = 0.9, wn = 0.01
Các tham số gia tử tối ưu bằng thuật toán FPO-SGA:
Curvature Diameter fm(c-) 0.501 0.9 fm(c+) 0.499 0.1 µ(L) 0.468 0.669 µ(V) 0.532 0.331 kj 3 1
Với số luật sinh ra là 7, độ phù hợp của mỗi cá thể fitness = 0.9143. Hệ luật bao gồm các luật sau:
R1
ifCurvature is LL.small and Diameter is smallthenClass 0 c= 1, s= 0.0515
R2
ifCurvature is VL.large and Diameter is smallthenClass 0 c=1, s=0.0276
R3
ifCurvature is VL.small and Diameter is smallthenClass 1 c= 1, s= 1.329
R4
ifCurvature is LV.large and Diameter is smallthenClass 1 c=1, s=0.0291
R5
ifCurvature is LV.small and Diameter is smallthenClass 2 c= 1, s= 0.0407
R6
ifCurvature is LL.small and Diameter is large thenClass 2 c=1, s=0.0168
R7
ifCurvature is VL.large and Diameter is largethenClass 2 c=1, s=0.017