2.4.1 Dạng thức thuật toán Quy ước chung Quy ước chung
Các thuật tốn trình bày trong mục này được thiết theo các quy ước sau đây: a) Mọi tập mờ được tham chiếu đến tập nền U cho trước.
b) Nếu x là tập mờ trên U, e U thì x[e] là tham chiếu đến giá trị của hàm thuộc X,
x[e] = X(e)
44
Algorithm <tên thuật toán> Chức năng Input - - Output - Method <cáccâu lệnh> End. Các câu lệnh
Thuật tốn được mơ tả qua các câu lệnh sau đây:
Câu lệnh gán
Cú pháp
z <biểu thức>
Ngữ nghĩa
Lệnh gán được thực hiện theo 2 bước sau:
Bước 1. Tính giá trị g của <biểu thức> bên vế phải. Bước 2. Copy trị g cho biến z.
Duyệt các phần tử của tập X
45
for each element e in X do T;
endfor
Ngữ nghĩa
Thực hiện T với mỗi phần tử e của tập X. Cú pháp 2
for each element e in X with d do T;
Endfor
Ngữ nghĩa
Thực hiện T với mỗi phần tử e X và thỏa điều kiện d.
Câu lệnh rẽ nhánh dạng khuyết
Cú pháp
if d then A endif
Ngữ nghĩa
Nếu thỏa điều kiện d thì thực hiện A. Nếu e khơng thỏa thì bỏ qua.
46 Câu lệnh rẽ nhánh dạng đủ Cú pháp if d then A else B endif Ngữ nghĩa
Nếu thỏa điều kiện d thì thực hiện A,
ngồi ra (nếu d khơng thỏa) thì thực hiện B.
2.4.2 Thuật tốn hợp hai tập mờ
Algorithm Union Input - Tập mờ X trên U - Tập mờ Y trên U Output - Tập mờ Z trên U: X = X Y Method Create Z on U;
for each element e in U do Z[e] max(X[e], Y[e]); endfor
return Z; End Union.
47
2.4.3 Thuật toán giao hai tập mờ
Algorithm Intersection Input - Tập mờ X trên U - Tập mờ Y trên U Output - Tập mờ Z trên U: Z = X Y Method Create Z on U;
for each element e in U do Z[e] min(X[e], Y[e]); endfor return Z; End Intersection. 2.4.4 Thuật toán bù một tập mờ Algorithm Complementation Input - Tập mờ X trên U Output - Tập mờ Z trên U: Z = X’ Method Create Z on U;
for each element e in U do Z[e] 1-X[e];
endfor return Z;
48
2.4.5 Thuật toán Cut một tập mờ
Algorithm Cut Input
- Tập mờ X trên U - Biểu thức điều kiện d Output
- Tập mờ Z trên U: Z = Cut(X, d) Method
Create Z on U;
for each element e in U do if Satisfy(X[e], d) then Z[e] X[e] else Z[e] 0 endif endfor return Z; End Cut.
49
2.4.6 Thuật toán CutToSet một tập mờ
Algorithm CutToSet Input
- Tập mờ X trên U - Biểu thức điều kiện d Output
- Tập (rõ) Z trên U: Z = CutToSet(X, e)
Method
Create Z on U;
for each element e in U do if Satisfy(X[e], d) then Z[e] 1 else Z[e] 0 endif endfor return Z; End CutToSet.
50
2.4.7 Các thuật toán so sánh hai tập mờ Thuật toán kiểm tra hai tập mờ X Y Thuật toán kiểm tra hai tập mờ X Y
Algorithm Sub Input
- Tập mờ X trên U - Tập mờ Y trên U Output
- true if X Y else false Method
for each element e in U do
if X[e] > Y[e] then return false endif
endfor return true; End Sub.
Thuật toán kiểm tra hai tập mờ X = Y
Algorithm Eq Input
- Tập mờ X trên U - Tập mờ Y trên U Output
- true if X = Y else false Method
for each element e in U do
if X[e] Y[e] then return false endif
endfor return true; End Eq.
51
Thuật toán kiểm tra hai tập mờ X Y (X là tập con thực sự của Y)
Algorithm SSub Input
- Tập mờ X trên U - Tập mờ Y trên U Output
- true if X Y else false Method
less false
for each element e in U do
if X[e] > Y[e] then return false endif;
if X[e] < Y[e] then less true endif;
endfor return less; End SSub.
52
CHƯƠNG 3 CÁC BÀI TOÁN ỨNG DỤNG 3.1 Đặt vấn đề
Nội dung của Chương 3 dành cho các đề tài ứng dụng lý thuyết tập mờ trong thực tiễn. Các ứng dụng được tổ chức theo ba kịch bản với mục đích như sau.
Ứng dụng đầu tiên khảo sát các nhu cầu bổ sung vítmin và khống chất trong một trại chăn ni bị sữa. Ứng dụng này xử lý một lượng khá lớn (120) tập mờ với các phép toán cắt theo ngưỡng, cộng các tập mờ và sắp giảm các phần tử của một tập mờ theo độ thuộc.
Ứng dụng thứ hai hướng đến khả năng vận dụng lý thuyết tập mờ trong khảo sát thị trường và sở thích cá nhân. Như ta đã biết, trong thời đại thông tin bùng nổ như hiện nay thì việc xây dựng các sản phẩm cho thị trừơng đáp ứng được thị hiếu đa dạng của khách hàng là một trong những điều kiện có thể làm gia tăng thu nhập của doanh nghiệp. Kịch bản cho ứng dụng này được triển khai trên cơ sở xử lý 100 phiếu thăm dò ý kiến khách hàng về các loại thực phẩm dùng trong các bữa ăn trên máy bay của một hãng hàng không. Kết quả sẽ cho ra ba trong số năm loại thực phẩm được hành khách ưa chuộng nhất.
Ứng dụng thứ ba dành cho việc xử lý các ý kiến chuyên gia với mức độ năng lực khác nhau nhằm tìm ra một đánh giá chính xác nhất về các khả năng dự đoán nguyên nhân sinh ra các sự cố như hỏng hóc hoặc khuyết tật của hệ thống, dịch bệnh,…
Các chương trình xử lý chạy với thời gian khơng q 2 giây với các tham biến có thể thay đổi, thí dụ như ngưỡng cắt hoặc trình độ của các chuyên gia thể hiện qua trọng số, do đó có thể khảo sát dữ liệu theo nhiều phương án khác nhau.
3.2 Trại bò
3.2.1 Phát biểu bài toán
Sau đợt kiểm tra sức khỏe định kì tại một trại ni bị sữa các bác sĩ thú ý khám cho 120 con bò sữa và ghi chép mức độ thiếu vitamin A, C, D, E và khoáng
53
chất vi lượng M theo thang 100 độ, trong đó mức độ 0 là khơng thiếu, mức 100 là thiếu trầm trọng.
Các bác sĩ thú y yêu cầu bổ sung các chất cần thiết như sau:
o Mức độ 0..29: không cần bổ sung.
o Mức độ 30..59: bổ sung 1 đơn vị.
o Mức độ 60..79: bổ sung 2 đơn vị.
o Mức độ 80..100: bổ sung 3 đơn vị.
Khi đó, thí dụ, bị số 1 mang giá trị B1 = (A: 91, C: 70, D: 36, E: 20, M: 7) được hiểu là
Bò số 1:
Thiếu vitamin A mức độ 91%, do đó cần bổ sung 3 đơn vị. Thiếu vitamin C mức độ 70%, do đó cần bổ sung 3 đơn vị. Thiếu vitamin D mức độ 36%, do đó cần bổ sung 1 đơn vị. Thiếu vitamin E mức độ 20%, do đó khơng cần bổ sung. Thiếu khoáng chất M mức 7%, do đó khơng cần bổ sung.
Dựa vào dữ liệu khám sức khỏe hãy cho biết mỗi con bò cần bổ sung bao nhiêu đơn vị vitamin và yếu tố vi lượng tương ứng đồng thời lên kế hoạch dự toán tổng số đơn vị thực phẩm chức năng cần đặt mua cho tồn trại.
3.2.2 Thuật tốn và tổ chức dữ liệu
Các tập mờ trong bài này được xây dựng trên tập nền chứa các vitamin A, C, D, E và vi lượng M.
U = { A, C, D, E, M }
Các ngưỡng được ghi trong mảng nguong bao gồm 4 mức như yêu cầu của trại bò. Đơn khám cho mỗi con bò được ghi trong biến tập mờ x. Sau khi đọc trị, mức độ thiếu chất của mỗi tập mờ ứng với mỗi con bò từ file dữ liệu “cows.inp”, ta thực hiện phép Cut từng mục theo ngưỡng tương ứng và tính ra số đơn vị cho mỗi loại chất của mỗi con bò. Như vậy, trị của biến mờ x lúc này thể hiện số đơn vị cần bổ sung theo mỗi chất cho mỗi con bò. Kết quả này được ghi vào file
54
“cows.out” chứa dữ liệu ra. Cuối cùng ta ghi vào output file tổng số các đơn vị cần bổ sung cho cả đàn bị.
3.2.3 Chương trình:
Nằm trong phụ lục 1: file cows.cpp 3.2.4 Dữ liệu
Dữ liệu cần xử lý được thu thập và làm sạch, sau đó được ghi trong file “cows.inp” dưới dạng sau:
Dòng đầu tiên: số chất cần bổ sung n = 5
Tiếp theo là tên của n chất cần bổ sung: A, C, D, E, M. Dữ liệu này phục vụ cho việc khởỉ tạo tập nền.
Tiếp theo là 120 dòng dữ liệu chứa kết quả khám cho mỗi con bò của trại. Mỗi phiếu khám được ghi trên một dòng gồm 5 thành phần A, C, D, E và M tương ứng.
3.2.5 Kết quả thực hiện
Kết quả thực hiện chương trình được ghi ra file “Cows.out” với nội dung như sau:
Kết quả xử lý từng cá thể, với mỗi cá thể i ghi rõ số đơn vị thuốc cần bổ sung theo mỗi lọai.
Cuối file ghi các kết quả tổng hợp ở trong file cows.out
3.3 Thực đơn hàng không
3.3.1 Phát biểu bài tốn
Một hãng hàng khơng muốn dựa vào ý kiến của khách hàng để chọn ra 3 loại thực phẩm trong số 5 loại thực phẩm thơng dụng: cơm, mì, cá, bị, gà phục vụ bữa ăn trên các chuyến bay tại Châu Á của hãng.
Hãng tổ chức lấy ý kiến của N khách hàng như sau: với mỗi loại thực phẩm trong số 5 loại kể trên khách hàng cho điểm ưu tiên là một số ngun từ 0 (hồn tồn khơng thích) đến 100 (rất thích).
55
Ta có,
Tập nền U = { cơm, mì, cá, bị, gà }.
Giả sử hành khách x ghi trong phiếu điều tra số 1 như sau:
Hãng hàng khơng ABC xin lắng nghe ý kiến q khách
Phiếu số: 1
Xin Q Khách vui lịng điền giá trị trong khoảng 0 đến 100 vào các món ăn dưới đây. Giá trị 0 cho biết q khách hồn tồn khơng thích món này, giá trị 100 cho biêt q khách rất thích món này.
Cơm Mì Cá Thịt bị Thịt gà
12 55 8 80 75
Xin trân trọng cảm ơn.
Khi đó ta có tập mờ x = (cơm:12, mì: 55, cá: 8, bị: 80, gà: 75) với ý nghĩa như sau:
a) Tập mờ x = {cơm:12, mì: 55, cá: 8, bị: 80, gà: 75} được liên kết với tập nền
U = { com, mi, ca, bo, ga }
b) Nếu được ăn theo kiểu tự chọn thì khách sẽ chọn bữa ăn gồm 3 món theo trật tự ưu tiên như sau:
Bị Gà Mì
3.3.2 Thuật toán
Các tập mờ trong bài này được xây dựng trên tập nền chứa năm loại thực phẩm thông dụng U = { com, mi, ca, bo, ga }.
56
Ngưỡng sẽ được thay đổi thông qua mỗi phương án thực hiện chương trình là 50, 30 và 55 (%). Dữ liệu của mỗi phiếu điều tra được đọc từ input file “menu.inp” vào biến tập mờ x, sau đó được Cut theo ngưỡng để chuyển qua tập rõ 0/1 và cộng dồn vào biến tổng. Cuối cùng dữ liệu trong biến tổng được sắp giảm theo tần suất xuất hiện và lấy 3 món có tần suất cao nhất.
3.3.3 Chương trình
Nằm trong phụ lục 2: file Menu.cpp
3.3.4 Dữ liệu
Sau khi được làm sạch, dữ liệu được ghi trong file “Menu.inp” với cấu trúc sau đây:
Dòng đầu tiên: số lượng thực phẩm n = 5.
Tiếp đến là 5 dòng ghi tên các thực phẩm: com, mi, ca, bo, ga. Tiếp đến là tổng số phiếu điều tra m = 100
Tiếp đến là 100 dòng ghi ý kiến của hành khách, mỗi dòng 5 mức sở thích cho mỗi loại thực phẩm theo trật tự cơm, mì, cá, bị và gà.
3.3.5 Kết quả thực hiện
Kết quả thực hiện được ghi trên màn hình. Sau khi tổng hợp ta thu được 3 trong số 5 loại thực phẩm được yêu thích nhất là gà, mì và cá.
57
3.4 Xử lý lỗi hệ thống
3.4.1 Phát biểu bài toán
Một hệ thống bị trục trặc. 10 chuyên gia được mời để thẩm định. Ý kiến của các chuyên gia xoay quanh 4 nguyên nhân: CPU, ROM, chương trình điều khiển CP và bộ phận làm mát CON. Năng lực của mỗi chuyên gia không đồng nhất mà lần lượt theo các trọng số 2, 5, 4, 7, 2, 3, 6, 5, 8, 9.
Ý kiến của mỗi chuyên gia được ghi trong một phiếu đánh giá khả nâng gây lỗi cho hệ thống theo mức điểm từ 0 (không nghi ngờ về lỗi) đên 100 (chắc chắn có lỗi).
Thí dụ, chun gia thứ nhất có dữ liệu: (2, 5, 73, 25, 33) mang ý nghĩa như sau:
Trọng số của chuyên gia thứ nhất là 2.
Nguyên nhân do CPU: 5%
Nguyên nhân do ROM: 73%
Nguyên nhân do trình điều khiển CP: 25%
Nguyên nhân do bộ tản nhiệt CON: 33%
Yêu cầu: Tổng hợp ý kiến của các chuyên gia về lỗi của hệ thống để Ban giám đốc có thể làm căn cứ ra quyết định kiểm tra những yếu tố nào?
3.4.2 Thuật toán
Các tập mờ trong bài này được xây dựng trên tập nền chứa năm nguyên nhân được nghi ngờ gây lỗi hệ thống U = { CPU, ROM, CP, CON }.
Ngưỡng sẽ được thay đổi thông qua mỗi phương án thực hiện chương trình là 50, 30 và 55 (%). Dữ liệu của mỗi chuyên gia được đọc từ input file “system.inp” vào biến tập mờ x, sau đó được Cut theo ngưỡng để chuyển qua tập rõ 0/1, nhân với trọng số và cộng dồn vào biến tổng. Cuối cùng, dữ liệu trong biến tổng được sắp giảm theo tần suất xuất hiện và ghi vào file kết quả “system.out”.
Trọng số được xử lý theo cách hiểu sau đây: Nếu chuyên gia c có trọng số s thì mỗi phiếu đánh giá của chuyên gia được coi là s phiếu.
58
3.4.3 Chương trình
Nằm trong phụ lục 3: file System.cpp
3.4.4 Dữ liệu file “system.inp” file “system.inp” 5 CPU ROM CP CON 10 2 5 73 25 33 5 82 88 16 79 4 12 7 15 47 7 75 40 1 30 2 55 38 48 42 3 4 82 50 21 6 98 21 18 39 5 62 54 36 47 8 81 85 77 65 9 39 79 24 10 3.4.5 Kết quả thực hiện
Kết quả thực hiện theo mỗi ngưỡng được giải trình chi tiết trong file “system.out” với cấu trúc sau đây:
Với mỗi chuyên gia hệ thống cung cấp
Nội dung đánh giá của chuyên gia về từng loại nguyên nhân đọc theo input file. Hệ thống xem ý kiến ban đầu này là tập mờ.
Cut theo ngưỡng khảo sát (trong lần thực hiện này là 55) và chuyển tập mờ sang tập rõ 0/1.
59
Nhân số điểm của từng nguyên nhân với với trọng số của chuyên gia Cộng dồn vào một biến tổng.
Sắp giảm biến tổng theo điểm tổng của các nguyên nhân. Công bố kết quả.
file “System.out” So nguyen nhan: 4 So phieu: 10
Chuyen gia 1, Trong so: 2 Read: 1. CPU: 5 2. ROM: 73 3. CP: 25 4. CON: 33 Cut by 55 1. CPU: 0 2. ROM: 1 3. CP: 0 4. CON: 0
Chuyen gia 2, Trong so: 5 Read: 1. CPU: 82 2. ROM: 88 3. CP: 16 4. CON: 79 Cut by 55 1. CPU: 1 2. ROM: 1 3. CP: 0 4. CON: 1
60
Chuyen gia 3, Trong so: 4 Read: 1. CPU: 12 2. ROM: 7 3. CP: 15 4. CON: 47 Cut by 55 1. CPU: 0 2. ROM: 0 3. CP: 0 4. CON: 0
Chuyen gia 4, Trong so: 7 Read: 1. CPU: 75 2. ROM: 40 3. CP: 1 4. CON: 30 Cut by 55 1. CPU: 1 2. ROM: 0 3. CP: 0 4. CON: 0
Chuyen gia 5, Trong so: 2 Read: 1. CPU: 55 2. ROM: 38 3. CP: 48 4. CON: 42 Cut by 55
61
1. CPU: 1 2. ROM: 0 3. CP: 0 4. CON: 0
Chuyen gia 6, Trong so: 3 Read: 1. CPU: 4 2. ROM: 82 3. CP: 50 4. CON: 21 Cut by 55 1. CPU: 0 2. ROM: 1 3. CP: 0 4. CON: 0
Chuyen gia 7, Trong so: 6 Read: 1. CPU: 98 2. ROM: 21 3. CP: 18 4. CON: 39 Cut by 55 1. CPU: 1 2. ROM: 0 3. CP: 0 4. CON: 0
Chuyen gia 8, Trong so: 5 Read:
62 2. ROM: 54 3. CP: 36 4. CON: 47 Cut by 55 1. CPU: 1 2. ROM: 0 3. CP: 0 4. CON: 0
Chuyen gia 9, Trong so: 8 Read: 1. CPU: 81 2. ROM: 85 3. CP: 77 4. CON: 65 Cut by 55 1. CPU: 1