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

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 51)

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

2.10.6Cá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ó. (adsbygoogle = window.adsbygoogle || []).push({});

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. (adsbygoogle = window.adsbygoogle || []).push({});

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ố vòng lặp là 100. Nhiễm sắc thể có độ thích nghi cao nhất trong các thế hệ chính là kết quả cần tìm.

CHƢƠNG III.

XÂY DỰNG WEBSITE BÁN HÀNG TRỰC TUYẾN.

3.1 Chƣơng trình website bán hàng máy tính xách tay có hỗ trợ ngƣời mua chọn sản phẩm.

3.1.1 Mô hình Usecase 3.1.1.1 Usecase admin 3.1.1.1 Usecase admin

Hình 3.1. Lược đồ Usecase Admin Đổi Password

Đăng nhập

Xem thông tin đơn hàng Quản lý mức giá Quản lý thông tin về sản phẩm Quản lý hãng sản xuất Quản lý loại ổ cứng Quản lý bộ nhớ Quản lý danh mục sản phẩm Admin

3.1.1.2. Usecase khách hàng

3.1.2 Mô tả các Actor

Actor Admin: Quản trị hệ thống, người duy nhất có thể thay đổi các thông tin của hệ thống, như cập nhật thông tin sản phẩm (adsbygoogle = window.adsbygoogle || []).push({});

Actor khách hàng: Hệ thống không yêu cầu mỗi khách hàng phải có tài khoản riêng. Một người dùng bất kỳ có thể vào hệ thống tìm và mua máy tính bất cứ lúc nào.

3.1.3. Hoạt động của chƣơng trình.

Chương trình quan tâm đến nhu cầu của người mua hàng. Khách hàng ngoài việc xem thông tin về sản phẩm mới nhất, sản phẩm bán chạy nhất, tìm kiếm theo danh mục sản phẩm, hãng sản xuất, loại CPU, khoảng giá, còn có thể tìm kiếm theo sở thích. Khách hàng sẽ tự lựa chọn các thông số, và hệ thống sẽ đưa ra các mặt hàng theo nhiều tiêu chí đó. Đây chính là phần sử dụng giải thuật di truyền để đáp ứng nhu cầu tối ưu đa mục tiêu của người dùng.

Ví dụ, khi ta nhập vào 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; ở thế hệ đầu, ta có các thông số sau:

Hình 3.2 - Lược đồ Usecase Khách hàng Duyệt danh mục theo hãng sản xuất Thêm hàng vào giỏ Thanh toán Tìm kiếm theo sở thích Tìm kiếm Xem danh sách sản phẩm nhiều người quan

tâm nhất Xem giỏ hàng Xem thông tin chi

tiết sản phẩm Xem danh sách sản phẩm mới ra mắt Khách hàng Xem danh sách sản phẩm bán chạy nhất Đăng ký Đăng nhập Đăng xuất

- Thông số về xác suất chọn pi của các cá thể trong quần thể Bảng 3.1. Thông số về xác suất chọn pi của các cá thể trong quần thể

- Thông số về vị trí xác suất qi của các cá thể trong quần thể

Bảng 3.2. Thông số về vị trí xác suất qi của các cá thể trong quần thể Ta có kết quả sau 100 thế hệ:

Thế hệ thứ Hàm thích nghi 1 0.713245 2 0.798258 5 0.831267 10 0.849097 20 0.849134 30 0.873579 40 0.873579 50 0.873579 100 0.873579 Bảng 3.3. Hàm thích nghi của 100 thế hệ - Và kết quả trả về sau 100 thế hệ:

Hình 3.3.1: Kết quả tìm kiếm sau 100 thế hệ là 3 máy ứng với hàm thích nghi cao nhất 3 máy đó có hàm thích nghi lần lượt là: 0.873579, 0.849134, 0.849097. Khi trọng số thay đổi, hàm thích nghi cũng thay đổi theo, và kết quả trả về là khác nhau. Gọi giá trị thay đổi của các trọng số trọng lượng, giá cả, thời gian lần lượt là w1,w2, w3, thì giá trị trọng số còn lại là 1 – (w1+w2+w3+ w1+w2+ w3). Khi đó hàm thích nghi được tính lại như sau:

f= (w1+w1). (1-|p1-x1| )/x*1+ (w2+w2). (1-|p2-x2| )/x*2+(w3+w3). (1-|p3- x3| )/x*3+(1 – (w1+w2+w3+ w1+w2+ w3). (1-|p4-x4| )/x*4.

f= w1. (1-|p1-x1| )/x*1+ w2. (1-|p2-x2| )/x*2+w3. (1-|p3-x3| )/x*3 –(w1+w2+ w3). (1-|p4-x4| )/x*4

Sau mỗi một thế hệ ta lựa chọn một gen (máy) có hàm thích nghi cao nhất để lại cho thế hệ sau.

Ví dụ, ta thay đổi trọng số: tham số trước w trọng lượng=0.2, w giá =0.4, w thời gian = 0.2, w Ram =0.2, nay ta thay đổi w trọng lượng=0.1, w giá =0.3, w thời gian = 0.1, w Ram =0.5, thì kết quả trả về là 3 máy có hàm thích nghi lần lượt là: 0.976654, 0.911922, 0.699197

Hình 3.3.3. Kết quả trả về khi thay đổi trọng số

3.2. Cài đặt

Môi trường phát triển ứng dụng

Hệ thống website được cài đặt dựa trên các môi trường phát triển sau: • Môi trường cài đặt ứng dung: Visual Studio 2012.

• Ngôn ngữ sử dụng: ASP.NET

• Hệ quản trị cơ sở dữ liệu: SQL Server Giao diện chương trình

Hình 3.4. Giao diện trang chủ Giao diện trang tìm kiếm

Hình 3.5. Giao diện trang tìm kiếm Giao diện chức năng tìm kiếm theo sở thích.

Hình 3.6. Giao diện trang tìm kiếm theo sở thích. Và kết quả

3.3. Đánh giá kết quả

Ứng dụng minh họa đã cài đặt thành công, thực hiện được yêu cầu đặt ra. Thực hiện truy vấn và trả về kết quả phù hợp với yêu cầu của chương trình đã trình bày ở trên.

Hệ thống chạy chậm khi có một lượng khách hàng lớn tham gia hệ thống, vì vậy cần có biện pháp để cải thiện khả năng thực thi của chương trình. Nhưng chương trình đáp ứng được cho việc chọn sản phẩm nào phù hợp nhất với khách hàng, sản phẩm mà chính khách hàng đang tìm kiếm thông tin về nó.

Tốc độ chạy của chương trình còn phụ thuộc vào một máy tính cụ thể, do giải thuật di truyền sử dụng tương đối nhiều tính toán.

Giao diện chương trình rất thân thiện, giúp người dùng dễ dàng sử dụng. (adsbygoogle = window.adsbygoogle || []).push({});

So sánh với các trang web bán hàng trực tuyến khác

Một số trang web bán hàng trực tuyến trên thế giới, ví dụ như các trang

http://www.amazon.com, http://www.ebay.com, tại Việt Nam có

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 51)