Các mục tiêu

Một phần của tài liệu Tối ưu đa mục tiêu sử dụng giải thuật di truyền với bài toán hỗ trợ người mua hàng trực tuyến lựa chọn sản phẩm (Trang 47)

III. Các luận điểm cơ bản và đóng góp mới của luận văn

2.10.4 Các mục tiêu

Có thể dễ dàng nhận thấy 2 mục tiêu (objective) mà người mua luôn nhắm tới là giá cả (cost) và chất lượng của sản phẩm (performance). Người mua luôn muốn mua được sản phẩm đáp ứng đầy đủ các yêu cầu với một giá rẻ nhất .Và điều khó khăn ở đây đó là 2 mục tiêu này luôn xung đột với nhau. Một sản phẩm với các tính năng nổi trội luôn có một cái giá cao hơn một sản phẩm khác và ngược lại do đó thường đi ngược lại với mong muốn của người mua. Do đó nhiệm vụ của bài toán đa mục tiêu đó là phải dung hòa cả 2 mục tiêu đó.

Mô tả tổng quát:

Min/max F = (fp(x),fc(x))

Từ đây ta thống nhất là sẽ dùng min, tức là mục tiêu của ta là làm tối thiểu hóa vector mục tiêu.

Trong đó F là một vector mô tả 2 mục tiêu chính là giá (cost) và performance ( chất lượng)

Một ví dụ đơn giản về vector mục tiêu trên một sản phẩm gồm 2 thuộc tính.

Sản phẩm X =(weight, cost) với tính chất giá (cost) càng cao trọng lượng (weight) càng thấp và người mua muốn một sản phẩm với giá (cost) thấp và trọng lượng (weight) cũng thấp.

Vector mục tiêu được định nghĩa như sau: F = (fp(X),fc(X))

Hình 2.1 - Vector mục tiêu của sản phẩm có 2 thuộc tính.

Trên đây chỉ là trường hợp đơn giản performance (chất lượng) của ta chỉ có một thuộc tính. Đối với trường hợp tổng quát thì sao? Bây giờ hàm mục tiêu về chất lượng (performance) sản phẩm sẽ trở thành:

fp(x)=(fp1(x)+fp2(x)+…+fp(n-1)(x))

với n là số thuộc tính của sản phẩm (n-1 vì đã bỏ qua thuộc tính giá cả) Nhưng khó khăn đặt ra là các thuộc tính lại không có đơn vị tính giống nhau do đó ta cần có một số tinh chỉnh để hàm mục tiêu có thể thực hiện được. Một cách đơn giản mà ta có thể áp dụng đó là tinh chỉnh (normalize) các thuộc tính để các thuộc tính đều có giá trị là một số thực từ 0 đến 1. Bây giờ hàm mục tiêu về performance (chất lượng) sẽ có dạng:

Fp(x)=(fp1(x)/ X01+fp2(x)/ X02+…..+ f p(N-1)(x)/ X0n-1)

trong đó X0k là giá trị lớn nhất mà thuộc tính Xk có thể có được.

2.10.5 Hƣớng đến một lời giải “tối ƣu”

Để có được một lời giải tối ưu (hoặc gần tối ưu) chúng ta cần qua 2 giai đoạn:

• Hướng các lời giải của chúng ta về miền tối ưu Pareto Xu hướng người mua

Vùng khả thi hay không gian tìm kiếm Vùng yêu thích

fc(X) fp(X)

• Chọn trên miền Pareto một lời giải phù hợp nhất.

2.10.5.1 Điều hƣớng lời giải về miền tối ƣu Pareto

Cũng như với cách mua hàng truyền thống, để người bán hàng có thể chọn ra các sản phẩm phù hợp thì người mua phải cung cấp các tiêu chí (sở thích) về sản phẩm mà mình định mua. Cũng tương tự như vậy để giải quyết bài toán này chúng ta cũng phải thu thập một số thông tin về sản phẩm mà người dùng mong đợi, đây chính là mục tiêu của người dùng.

Chúng ta có thể mô tả một mục tiêu của người dùng bằng một vector như sau: Pref = (P1,P2,…,Pk) (Pref- Preference)

Trong đó Pi là một hằng số, mô tả giá trị mà người mua mong muốn có được ở thuộc tính xi . Và k là số thuộc tính mà người dùng mô tả về sản phẩm. Trong đó 1≤k ≤ n (n là số thuộc tính của sản phẩm) vì không nhất thiết người dùng phải mô tả tất cả các thuộc tính.

Và mục tiêu của chúng ta là đưa giá trị của các thuộc tính được mô tả về càng gần với giá trị Pi càng tốt. Đây chính là nơi ta áp dụng hướng tiếp cận hướng mục đích, mỗi Pi là một mục đích của chúng ta.

Một mục đích trên thuộc tính xi có thể được mô tả một cách đơn giản là: min | fpi(x) – xi | Và hàm mục tiêu về chất lượng sản phẩm sẽ có dạng: f p(x)= min( 1 k i  | fpi(x) – xi | )

Khi tối ưu từng mục đích (goal) chúng ta hi vọng rằng các sản phẩm trong không gian tìm kiếm của thuật toán di truyền sẽ điều hướng về miền tối ưu Pareto.

Hình 2.2 - Điều hướng về miền tối ưu Pareto.

2.9.5.2 Chọn trên miền tối ƣu Pareto lời giải tối ƣu nhất

Theo định nghĩa của miền tối ưu Pareto thì những lời giải trên miền này không thể so sánh với nhau được nữa vì trên miền này không có lời giải nào hoàn toàn thống trị lời giải khác. Khi chúng ta đã chọn lọc được các lời giải trên miền Pareto (ở bước trên) thì việc tiếp theo đó là chọn ra trên miền đó 1 hoặc nhiều lời giải mà ta cho là tốt hơn những lời giải khác (cũng thuộc miền Pareto). Chúng ta phải làm việc này vì trên miền Pareto không đảm bảo chỉ tồn tại 1 lời giải.

Để chọn ra lời giải tốt hơn trên miền này chúng ta sẽ áp dụng cách tiếp cận Weighting Objective. Khi đó ta cần thêm các thông tin về mức độ quan trọng của các mục tiêu (đây là các đánh giá khách quan của người ra quyết định-người mua hàng).Đây chính là mối tương quan về độ trội của các mục tiêu.

Lúc này vector mô tả sở thích của người mua có dạng: Pref = ((wp1,P1),(wp2,P2),…..,(wpk,Pk))

Trong đó w i chính là độ quan trọng của mục tiêu thứ i trong mục tiêu về chất lượng của sản phẩm f pi(x).

Miền tối ưu

Khi đó trọng số quan trọng của mục tiêu về chất lượng sản phẩm (performance) sẽ là : wp = 1 k i  wpi

Và độ quan trọng của mục tiêu về giá cả wc Với các ràng buộc:

wc+wp=1

Khi người dùng thay đổi các trọng số độ quan trọng của các mục tiêu thì các lời giải ―tối ưu‖ sẽ di chuyển trên miền Pareto. Người ra quyết định có thể thay đổi trọng số này để có thể chọn ra các lời giải ―tối ưu‖.

Hình 2.3. Di chuyển trên miền Pareto bằng cách thay đổi trọng số

2.10.6 Các cải tiến để phù hợp với bài toán.

2.10.6.1 Mô tả cấu trúc gene của thuật giải di truyền

Do nhu cầu của bài toán (cần trả về một tập lớn hơn 1 lời giải tối ưu) nên mỗi gen sẽ được biễu diễn bằng một mảng các định danh của các lời giải trong không gian tìm kiếm (trong trường hợp cụ thể đó là các id của các sản phẩm trong cơ sở dữ liệu). Số lời giải trả về có thể phụ thuộc vào mong muốn của người dùng (nhưng phải lớn hơn 1, không ai lại muốn không tìm thấy sản phẩm nào).

Mô tả một gen:

ID1 ID2 … IDN

Trong đó n là số kết quả mà người dùng mong đợi được trả về.

Kết quả tốt nhất mà ta mong đợi để chọn đó là gen mà tất cả các ID trong gen đều nằm trên miền tối ưu Pareto hoặc tồi hơn có thể có một số ID thuộc Pareto và một số ít hơn nằm gần miền Pareto. Trường hợp không thành công là không có ID nào thuộc miền Pareto lúc này thuật giải chưa được hội tụ, hoặc hội tụ quá sớm gây ra tối ưu cục bộ.

Hình 2.4 - Các trạng thái gen trong quần thể.

2.10.6.2 Vai trò của các thao tác chọn lọc, lai ghép, đột biến trên quần thể

Chọn lọc: Quá trình này nhằm mục đích loại bỏ khỏi quần thể những gen chứa các lời giải xấu (những lời giải nằm xa miền tối ưu Pareto) (xem hình trên). Tuy nhiên vấn đề cần quan tâm ở đây đó là bảo toán tính tốt và tính đa dạng của quần thể. Khi loại bỏ các gen xấu chúng ta có thể loại bỏ luôn cả các lời giải tốt (hoặc tương đối tốt) tồn tại trong gen.

Lai ghép: Đây là một quá trình tự nhiên trong đó các nhiễm sắc thể giữa 2 gen sẽ được hoán đổi cho nhau. Nhiệm vụ chính của nó là làm tăng tính đa dạng của quần thể, với hi vọng các gen tốt hơn sẽ được tạo ra.

Gen xấu

Gen tương đối tốt Loại gen tốt

Chúng ta cần một số cải tiến để bảo đảm rằng các gen đời sau sẽ tốt hơn đời trước. Bởi vì độ tốt của một gen được xác định bằng tổng độ tốt của mỗi nhiễm sắc thể (gen nào có nhiều nhiễm sắc thể (NST) trên miền Pareto, hoặc gần miền Pareto hơn thì gen đó tốt hơn). Nên khi lai ghép ta sẽ chuyển các NST tốt của một gen (bố hoặc mẹ) vào gen của người còn lại. Như vậy sau khi lai ghép sẽ tạo ra một gen hoàn toàn trội hơn 2 gen bố mẹ và một gen sẽ chứa toàn những tính xấu. Khi đó trong quá trình chọn lọc ta chỉ giữ lại một gen con tốt vừa được tạo ra và một gen (bố hoặc mẹ) tốt hơn. Khi đó ta sẽ vừa bảo đảm các nhiễm sắc thể tốt sẽ không bị ―vô tình‖ loại bỏ và tính đa dạng của quần thể cũng vẫn được bảo tồn qua các đời.

Hình 2.5 - Lai ghép.

Đột biến: Vai trò của thao tác đột biến là để tránh tối ưu hóa cục bộ (các gen chưa tiến đến được miền Pareto). Qua thao tác đột biến chúng ta sẽ đưa các lời giải tốt hơn vào không gian quần thể của thuật giải di truyền.

Đột biến Hình 2.6 : Đột biến fp(x) fc(x) Gen bố

Gen con xấu Gen con tốt

Gen mẹ fp(x)

2.10.6.3. Hàm thích nghi

Hàm thích nghi của mỗi sản phẩm sẽ có dạng như sau: F =

1

k

i

 fpi(x)+ fc(x)

trong đó fpi(x) là hàm mục tiêu của thuộc tính về chất lượng thứ i (người mua quan tâm đến k thuộc tính-ngoài giá).

fc(x) hàm mục tiêu về giá

Một sản phẩm tốt khi có giá trị hàm thích nghi lớn hơn. Khi thuật giải cố gắng tối đại hóa hàm thích nghi, thực chất là đang điều hướng các sản phẩm về miền tối ưu Pareto.

Để kết hợp cả 2 giai đoạn điều hướng chúng ta có thể kết hợp cả 2 cách dùng hướng mục đích và trọng số vào cùng một hàm mục tiêu như sau:

fpi(x)= wi(1- | pi-xi | /x*i) và fc(x) = wc (1- | pc- c | /c*) trong đó wi là độ quan trọng của thuộc tính i.

pi là giá trị mà người dùng mong đợi ở thuộc tính i. xi là giá trị của thuộc tính i

x *i là giá trị tối đa mà thuộc tính i có thể có được. c* là giá tiền tối đa mà một sản phẩm có thể có.

2.11. Các bƣớc thực hiện giải thuật trong khâu lựa chọn sản phẩm của bài toán bán hàng qua mạng máy tính xách tay.

2.11.1. Khởi tạo.

Khởi tạo ngẫu nhiên 1 quần thể gồm có m cá thể ( giả sử là 10). Mỗi cá thể là 1 nhiễm sắc thể gồm n máy tính. Nếu ta muốn kết quả trả về 3 máy, chọn n =3. Thành phần của các chính là ID của các máy.

……… 2.11.2. Tính độ thích nghi. Hàm thích nghi F = 1 k i  fpi(x) + fc (x) fpi(x)= wi(1- | pi-xi | /x*i) fc(x) = wc (1- | pc- c | /c*)

Các thuộc tính gồm có: trọng lượng, giá cả, thời gian pin, bộ nhớ Ram. Số thuộc tính có thể thêm hay bớt tùy chương trình, người dùng có thể nhập vào 1 hay nhiều thông số thuộc tính.

Các ràng buộc là tổng các trọng số quan trọng bằng 1. Ta có thể thích hợp các trọng số bằng cách lấy giá trị trọng số của từng thuộc tính chia tổng trọng số. - Tính độ thích nghi của từng ID, sau đó tính tổng độ thích nghi Yi của các

ID trong một nhiễm sắc thể.

- Tính độ thích nghi của toàn quần thể.

- Tính xác suất chọn pi của mỗi nhiễm sắc thể pi= Yi/Yi

- Tính vị trí xác suất qi của mỗi nhiễm sắc thể. IDa IDb IDc

q i= i j pj

Ví dụ, Ta muốn tìm một máy với các thông số: trọng lượng 2 kg, trọng số quan trọng 0,2; giá 12000000, trọng số quan trọng 0,4; thời gian sử dụng pin: 3 giờ, trọng số quan trọng 0,2, Ram 2 GB, trọng số 0,2;

Giả sử ta tính trên máy tính có các thông số như sau:

Trọng lượng 2.3 kg; giá: 15000000; thời gian sử dụng pin: 3 giờ; Ram 4GB

- Hàm thích nghi chất lượng: là tổng của các thông số chất lượng (trừ giá cả) = 1 k i  fpi(x) fpi(x)= wi(1- | pi-xi | /x*i) Thuộc tính trọng lượng: ftrong_luong(x)= 0.2*(1- | 2-2.3 | /2.3) =0.173913 Thuộc tính thời gian sử dụng pin:

f thoi_gian_pin(x)= 0.2*(1- | 3-3 | /3) = 0.2 Thuộc tính bộ nhớ Ram: fRam(x)= 0.2*(1- | 2-4 | /4) =0.1. Tổng thuộc tính chất lượng: 1 k i

 fpi(x) = ftrong_luong(x)+ f thoi_gian_pin(x) + fRam(x) = = 0.173913 + 0.2 + 0.1= 0.473913

Thuộc tính giá:

fc (x)= 0.4*(1- | 12000-15000000| /15000000) =0.32 Tính hàm thích nghi F = 1 k i  fpi(x) + fc (x) = 0.473913 + 0.32= 0.793913

Vì mỗi nhiễm sắc thể ở đây ta tạo ra 3 máy nên cần tính tổng độ thích nghi của 3 máy và chia trung bình. Giả sử 3 máy trong một nhiễm sắc thể có độ thích nghi lần lượt là 0.793913, 0.233421,0.531288; thì độ thích nghi của nhiễm sắc thể đó là:

(0.793913+ 0.233421+0.531288)/3=0.519541 Tính độ thích nghi của toàn quần thể:

Giả sử các nhiễm sắc thể có độ thích nghi lần lượt là: Nhiễm sắc thể 1 0.519541 Nhiễm sắc thể 2 0.732134 Nhiễm sắc thể 3 0.827654 Nhiễm sắc thể 4 0.423567 Nhiễm sắc thể 5 0.523145 Nhiễm sắc thể 6 0.327156 Nhiễm sắc thể 7 0.472390 Nhiễm sắc thể 8 0.289576 Nhiễm sắc thể 9 0.532855 Nhiễm sắc thể 10 0.643298 Thì tổng độ thích nghi của toàn quần thể là 5.291316

- Tính xác suất chọn pi của mỗi nhiễm sắc thể: pi= Yi/Yi

Các xác suất chọn (còn gọi là xác suất tích lũy) lần lượt là:

0.098187 0.061829

0.138365 0.089276

0.156417 0.054727

0.080049 0.100704

- Tính vị trí qi của mỗi nhiễm sắc thể qi= i j pj  q1=p1, q2=q1+p2 q3=q2+p3 … q10=q9+p10

Các vị trí xác suất của quần thể lần lượt là: q1=0.0982 q6 =0.6337 q2=0.2366 q7=0.723 q3=0.393 q8=0.7777 q4=0.473 q9=0.8784 q5=0.5719 q10=1 2.11.3. Chọn lọc.

Quá trình chọn lọc được thực hiện bằng cách quay bánh xe rulet m 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 một số r ngẫu nhiên trong khoảng [0..1]

Nếu r < q1 thì chọn nhiễm sắc thể đầu tiên, ngược lại thì chọn nhiễm sắc thể thứ i (2<=i<=m) sao cho qi-1< r <=qi.

Hiển nhiên sẽ có thể có một số nhiễm sắc thể được chọn nhiều lần. Điều này phù hợp với lý thuyết , các nhiễm sắc thể tốt nhất 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 bị chết đi.

Giả sử số ngẫu nhiên r trong 10 lần phát sinh là:

r 2=0.33 r 4=0.15 r 6=0.23 r 8=0.55 r 10=0.45

Thì các nhiễm sắc thể được chọn lần lượt là: Nhiễm sắc thể 3 v3 do 0.23<0.28<0.393 (q2<r<q3) Tiếp theo là các nhiễm sắc thể v3,v2,v2,v3,v3,v8,v5,v9,v4

Như vậy các nhiễm sắc thể mới được đưa vào quần thể là v3, v3, v2, v2, v3, v3, v8, v5, v9, v4

Bây giờ ta áp dụng phép toán di truyền: kết hợp, lai vào các cá thể trong quần thể mới vừa được chọn từ quần thể cũ như trên. Một trong những tham số của hệ di truyền là xác suất lai pc. Xác suất này cho ta số nhiễm sắc thể bằng m* pc mong đợi, các nhiễm sắc thể này được dùng trong việc 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 một số ngẫu nhiên trong khoảng từ [0..1] + Nếu r < pc thì chọn nhiễm sắc thể đó thì lai tạo.

Giả sử chọn xác suất lai pc = 0.2. Các số ngẫu nhiên sau 10 lần gieo lần lượt là:0.35;0.45;0.87;0.24;0.16;0.94;0.27;0.14;0.46;0.76.

Như vậy ta thấy có 2 số r=0.16 và 0.14<0.2. Vậy ta chọn nhiễm sắc thể thứ 5 và thứ 8 để lai.

(Trường hợp số nhiễm sắc thể được chọn là lẻ thì cộng thêm hoặc bớt đi 1 nhiễm sắc thể)

2.11.4. Thực hiện phép lai ghép và đột biến.

Bây giờ ta ghép đôi các nhiễm sắc thể đã chọn được một cách ngẫu nhiên, ta chọn các ID có độ thích nghi tốt nhất trong mỗi cặp nhiễm sắc thể đưa vào một nhiễm sắc thể, một nhiễm sắc thể còn lại là các ID máy còn lại. Như vậy, sau quá trình lai cho ta một gen trội hơn gen bố mẹ và một gen chứa toàn các

nhiễm sắc thể xấu. Quá trình lai như vậy đảm bảo các gen tốt được giữ lại, đồng thời đảm bảo tính đa dạng quần thể được đảm bảo qua các đời.

Thực hiện phép đột biến bằng cách phát sinh với tỉ lệ đột biến là pm, số thành phần được đột biến là [pm*m*n], với mỗi lần đột biến, để xác định vị trí ID máy đột biến ta gieo một số ngẫu nhiên từ 1 đến m*n, số phát sinh chính là vị trí của ID đột biến, với mỗi một vị trí như vậy lại gieo một số ngẫu nhiên để tìm ID máy thay thế.

Tính lại độ thích nghi của các nhiễm sắc thể. Nhiễm sắc thể tốt nhất ta giữ lại.

Bài toán dừng khi đạt số vòng lặp tối đa. Trong bài toán này ta chọn số

Một phần của tài liệu Tối ưu đa mục tiêu sử dụng giải thuật di truyền với bài toán hỗ trợ người mua hàng trực tuyến lựa chọn sản phẩm (Trang 47)

Tải bản đầy đủ (PDF)

(74 trang)