in Computer Science• Trong đời soDng, khi con người trao đoUi với nhau thông qua ngôn ngữ tự nhiên.. in Computer Science• Có theU download tại: ‣ grenoble-alpes.fr/L.A... in Co
Trang 1PGS.TS Trần Văn Lăng
Logic mờ và ứng dụng
Fuzzy Logic and its Applications
1
Trang 2A.Prof in Computer Science
Trang 3A.Prof in Computer Science
Trang 4A.Prof in Computer Science
Trang 5A.Prof in Computer Science
Trang 6A.Prof in Computer Science
Trang 7A.Prof in Computer Science
7
L.A Zadeh, Fuzzy sets, Information and Control, Volume 8, Issue 3, 1965, Pages
338-353, ISSN 0019-9958, https://doi.org/10.1016/S0019-9958(65)90241-X
(https://www.sciencedirect.com/science/article/pii/S001999586590241X)
Trang 8A.Prof in Computer Science
Trang 9A.Prof in Computer Science
‣ 1970: First Application of Fuzzy Logic in Control Engineering (Europe)
‣ 1975: Introduction of Fuzzy Logic in Japan
‣ 1980: Empirical Verioication of Fuzzy Logic in Europe
9
Trang 10A.Prof in Computer Science
Trang 11A.Prof in Computer Science
Ứng dụng minh họa
11
Trang 12A.Prof in Computer Science
Trang 13A.Prof in Computer Science
Trang 14A.Prof in Computer Science
A
A = {(x, μA(x))/x ∈ X} A = { μAx / (x) x ∈ X}
14
Trang 15A.Prof in Computer Science
Trang 16A.Prof in Computer Science
Trang 17A.Prof in Computer Science
Trang 18A.Prof in Computer Science
Trang 19A.Prof in Computer Science
Trang 20A.Prof in Computer Science
Trang 21A.Prof in Computer Science
Trang 22A.Prof in Computer Science
Trang 23A.Prof in Computer Science
Trang 24A.Prof in Computer Science
Trang 25A.Prof in Computer Science
Trang 26A.Prof in Computer Science
n
26
Trang 27A.Prof in Computer Science
∑n i=1 wi
27
Trang 28A.Prof in Computer Science
Trang 29A.Prof in Computer Science
Trang 30A.Prof in Computer Science
Trang 31A.Prof in Computer Science
Trang 32A.Prof in Computer Science
Trang 33A.Prof in Computer Science
Trang 34A.Prof in Computer Science
Trang 35A.Prof in Computer Science
• Chı́nh vı̀ vậy, các phép toán AND, OR, NOT là ca_n thieDt trong trường hợp này
35
Trang 36A.Prof in Computer Science
• Định nghĩa 2: Cho 2 tập mờ trên cùng không gian ne_n với hàm thuộc
tương ứng là Khi đó tập mờ có hàm thuộc là:
• Định nghĩa 3: Cho 2 tập mờ trên cùng không gian ne_n với hàm thuộc
tương ứng là Khi đó tập mờ có hàm thuộc là:
Trang 37A.Prof in Computer Science
Trang 38A.Prof in Computer Science
Trang 39A.Prof in Computer Science
• Định nghĩa 5: Cho 2 tập mờ trên cùng không gian ne_n với hàm thuộc
tương ứng là Hai tập mờ được gọi là bagng nhau, ký hiệu
Trang 40A.Prof in Computer Science
Trang 41A.Prof in Computer Science
Trang 42A.Prof in Computer Science
Trang 43A.Prof in Computer Science
Trang 44A.Prof in Computer Science
Trang 45A.Prof in Computer Science
0 (1,5) , 0 (14,5) , 0 (25,5) , 0.5 (40,5) , 0.5 (60,5) , 0.5 (100,5) ,
0 (1,10) ,
0 (14,10) ,
0 (25,10) , 0.5 (40,10) ,
1 (60,10) ,
1 (100,10) }
45
Trang 46A.Prof in Computer Science
Trang 47A.Prof in Computer Science
Trang 48A.Prof in Computer Science
• Từ đây có theU chọn giải pháp toDt khi tiêm cả 2 vaccine cho người trẻ là:
• Tập mờ trên không gian ne_n có độ thuộc như sau:
A = {1/x1,1/x2,0.8/x3,0/x4} B = {1/y1,1/y2,0.8/y3,0.5/y4,0.6/y5,0/y6}
Trang 49A.Prof in Computer Science
Trang 50A.Prof in Computer Science
Trang 51A.Prof in Computer Science
Trang 52A.Prof in Computer Science
• ĐeU thuận lợi, các gói thư viện toDi
thieUu ca_n có cho học pha_n đó là:
• Numpy đeU sử dụng các công cụ
của toán học tı́nh toán, đại soD tuyeDn tı́nh
Trang 53A.Prof in Computer Science
Trang 54A.Prof in Computer Science
• Trước tiên ca_n include các thư viện sử dụng
54
import numpy as np import matplotlib.pyplot as plt
• Sau đó tạo các mảng một chie_u cho 2 tập hợp X và A.
X = np.array( [30,50,75,90,100,125,150,200] )
A = np.array( [0,0,0,0.1,0.5,0.8,1,1] )
• ĐeU hı̀nh dung, có theU trực quan hoá thông qua các hàm của Matplotlib
Trang 55A.Prof in Computer Science
plt.figure( figsize=(12,6) )
plt.title( "ĐỒ THỊ BIỂU DIỄN HÀM THUỘC CỦA TẬP MỜ" )
plt.plot( X,A,label="Tập mờ A = " + r"$\{\frac{0}{30},\frac{0}{50},\frac{0}{75},\frac{0.1}{90},
plt.xlabel( "Không gian nền X = " + str(X) )
plt.ylabel( "Mức độ phụ thuộc: " + r"$\mu_A(x)$" )
plt.legend( loc="best" )
plt.show()
Trang 56A.Prof in Computer Science
Trang 57plt.title( "ĐỒ THỊ BIỂU DIỄN HÀM THUỘC CỦA TẬP MỜ" )
plt.plot( X,A,label="Tập mờ A = " + r"$\{\frac{0}{30},\frac{0}{50},\frac{0}{75},
plt.xlabel( "Không gian nền X = " + str(X) )
plt.ylabel( "Mức độ phụ thuộc: " + r"$\mu_A(x)$" )
plt.legend( loc="best" )
plt.show()
57
• Lưu ý ragng, Jupyter tạo ra tập tin có tên là name.ipynb, khi ca_n chuyeUn sang tập tin name.py dùng lệnh
jupyter nbconvert to script name.ipynb
Trang 58A.Prof in Computer Science
Trang 59A.Prof in Computer Science 59
Trang 60A.Prof in Computer Science
Trang 61A.Prof in Computer Science
Trang 62A.Prof in Computer Science
Một số hàm thành viên trong skfuzzy
• ƠŠ pha_n trước xây dựng hàm thành viên trên cơ sở mảng dữ liệu là các giá
trị thuộc Khi dùng Scikit-Fuzzy, cũng có những hàm thành viên đã được tạo saŒn dưới dạng API có trong thư viện đeU sử dụng
Trang 63A.Prof in Computer Science
Trang 64A.Prof in Computer Science
• KeDt quả tập mờ C được trực quan hoá như hı̀nh
64
Trang 65A.Prof in Computer Science
• Tương tự như vậy, có hàm thành viên hı̀nh dạng chữ , chữ trên cùng
zmf(X, a, b) pimf(X, a, b, c, d)
65
Trang 66A.Prof in Computer Science
độ của 3 đı̉nh tam giác; trimf(x, [a, b, c]) trapmf(X, [d, e, f, g] là hoành độ của 4 đı̉nh tạo nên hı̀nh thang a, b, c
d, e, f, g
66
Trang 67A.Prof in Computer Science
Trang 68A.Prof in Computer Science
• Hàm hı̀nh quả chuông và phân phoDi Gauss
68
Trang 69A.Prof in Computer Science
• Cha€ng hạn, cho tập các soD nguyên Cho bieDt các cặp có
giá trị khác nhau trong tập này mà X = {1,2,3,4,5} Khi đó ta có tập các cặp (a, b)
{(1,2), (1,3), (1,4), (1,5), (2,4)}
69
Trang 70A.Prof in Computer Science
• Rõ ràng đây chı́nh là các pha_n tử trong tı́ch Descartes
• Ký hiệu là đeU chı̉ X có quan hệ với Y
• Từ đây có theU coi là một ánh xạ đeU bieDn các pha_n tử thành
Trang 71A.Prof in Computer Science
Ví dụ 6
là một quan hệ 2 ngôi giữa X và Y
• Như vậy, thay vı̀ tı́ch có đa_y đủ 12 pha_n tử, thı̀ tập con của này
Trang 72A.Prof in Computer Science
Trang 73A.Prof in Computer Science
b
c d
Trang 74A.Prof in Computer Science
Trang 75A.Prof in Computer Science
Trang 76A.Prof in Computer Science
Trang 77A.Prof in Computer Science
Ví dụ 7
• Cho không gian ne_n là các quoDc gia và
là 3 loại vaccine ve_ Wuhan Coronavirus
• Gọi là quan hệ theU hiện mức độ quan tâm của người dân trong 4 quoDc gia
trong ve_ các vaccine trong như sau:
X = {VI, EN, NE, CN}
Y = {PF, AZ, SI}
ℜ
PF AZ SI VI
EN NE CN
1 0.9 0
1 0.7 0.1 0.8 0.4 1
77
Trang 78A.Prof in Computer Science
Ví dụ 8
• Cho X là sân bay của các thành phoD lớn X={Ca_n Thơ (VCA), Sài Gòn (SGN),
Đà Lạt (DLI), Nha Trang (CXR), Đà NaŒng (DAD), HueD (HUI), Hà Nội (HAN),
Hải Phòng (HPH)} Giả sử việc có máy bay trong một tua_n (7 ngày) giữa các thành phoD như sau:
Trang 79A.Prof in Computer Science
Trang 80A.Prof in Computer Science
1 0.57 0 0.29 0.57 0 0.71 0.14 0.57 1 0.71 0.57 1 0.43 1 0.57
Trang 81A.Prof in Computer Science
• Từ đây chúng ta có theU rút ra quan hệ những sân bay thường xuyên có
các chuyeDn bay qua lại với nhau là ma trận: ℜ
1 0.57 0 0.29 0.57 0 0.71 0.14 0.57 1 0.71 0.57 1 0.43 1 0.57
Trang 82A.Prof in Computer Science
μℜ1∩ℜ2(x, y) = min {μℜ1(x, y), μℜ2(x, y)}, ∀(x, y) ∈ X × Y
μℜ1∪ℜ2(x, y) = max {μℜ1(x, y), μℜ2(x, y)}, ∀(x, y) ∈ X × Y
μ¬ℜ1(x, y) = μℜ1(x, y) = 1 − μℜ1(x, y), ∀(x, y) ∈ X × Y
82
Trang 83A.Prof in Computer Science
ℜ2 =
1 0.8 0 0.9 1 0
1 0.7 0.1 0.8 0.6 0.8
ℜ
83
Trang 84A.Prof in Computer Science
Trang 85A.Prof in Computer Science
Ví dụ 9
• Cho quan hệ mờ giữa ngôn ngữ sử dụng và quoDc
gia , là quan hệ giữa quoDc gia và loại đo_ng tie_n
Trang 86A.Prof in Computer Science
• Quan hệ liên keDt giữa ngôn ngữ sử dụng, quoDc gia và loại đo_ng tie_n như bản
sau:
86
Trang 87A.Prof in Computer Science
9 Phép hợp thành mờ
• Định nghĩa 10: Cho 3 tập tham chieDu với 2 quan hệ mờ có hàm
thuộc là và , phép hợp thành mờ của 2 quan hệ này là
Trang 88A.Prof in Computer Science
Trang 89A.Prof in Computer Science
Ảnh của tập mờ
• Định nghĩa 12: Cho tập mờ trên không gian ne_n và một ánh xạ
AŠnh của qua ánh xạ là , hay theo ký hiệu
Trang 90A.Prof in Computer Science
Ví dụ 10
• Ta có qua ánh xạ là
• Xét tập trên không gian ne_n , với
Trang 91A.Prof in Computer Science
Trang 92A.Prof in Computer Science
Trang 93A.Prof in Computer Science
Trang 94A.Prof in Computer Science
0 0.1 0.2 0.8 1
94
Trang 95A.Prof in Computer Science
B = fz.maxmin_composition( A,R )
Trang 96A.Prof in Computer Science
Trang 97A.Prof in Computer Science
Trang 98A.Prof in Computer Science
• Tı́nh toán cụ theU hơn
μ B (y1) = max { min{μ A (x1), μℜ(x1, y1)}, min{μ A (x2), μℜ(x2, y1)}, min{μ A (x3), μℜ(x3, y1)}}
= max { min{0.2,0.7}, min{0.8,0.5}, min{1,0.2}}
= max {0.2,0.5,0.2}
= 0.5
μ B (y2) = max { min{μ A (x1), μℜ(x1, y2)}, min{μ A (x2), μℜ(x2, y2)}, min{μ A (x3), μℜ(x3, y2)}}
= max { min{0.2,1}, min{0.8,0.9}, min{1,0.6}}
= max {0.2,0.8,0.6}
= 0.8
98
Trang 99A.Prof in Computer Science
• Vậy
μ B (y3) = max { min{μ A (x1), μℜ(x1, y3)}, min{μ A (x2), μℜ(x2, y3)}, min{μ A (x3), μℜ(x3, y3)}}
= max { min{0.2,0.4}, min{0.8,0.6}, min{1,0.3}}
= max {0.2,0.6,0.3}
= 0.6
B = A ∘ ℜ = {0.5/y1,0.8/y2,0.6/y3}
99
Trang 100A.Prof in Computer Science
A ∘ ℜ = B
100
Trang 101A.Prof in Computer Science
• Ta có
• Vậy tập mờ B là (0.6/y1, 0.6/y2, 0.5/y3 )
b1 = max { min{0.2,0.1}, min{0.4,0.6}, min{0.6,0.8}, min{1.0,0.0}}
Trang 102A.Prof in Computer Science
Ví dụ 14
• Cho tập ne_n X = {x1, x2, x3, x4, x5}, Y = {y1, y2, y3, y4, y5}, tập mờ A = {0/x1, 0.5/
x2, 1/x3, 0.5/x4, 0/x5}, B = {0/y1, 0.6/y2, 1/y3, 0.6/y4, 0/y5}
Trang 103A.Prof in Computer Science
• Các pha_n tử của ma trận quan hệ mờ nhận giá trị như sau:
B′ = {0/y1,0.5/y2,0.5/y3,0.5/y4,0/y5}
103
Trang 104A.Prof in Computer Science
R1 = fz.relation_min( A1,B1 ) R2 = fz.relation_min( A2,B2 ) R3 = fz.relation_min( A3,B3 )
w1, w2, w3 = 1, 3, 2
R = (w1*R1 + w2*R2 + w3*R3)/(w1 + w2 + w3)
• Như vı́ dụ sau
Trang 105A.Prof in Computer Science
Trang 106A.Prof in Computer Science
• Thực hiện các phép toán AND, OR trên 2 tập này bagng cách:
106
Trang 107A.Prof in Computer Science
Trang 108A.Prof in Computer Science
• Nguyên tacc của đie_u khieUn mờ như hı̀nh
108
• Còn bên trong hệ thoDng mờ
Trang 109A.Prof in Computer Science
• Mà chı̉ ca_n tuân thủ theo những bước như cho mọi bài toán
109
Trang 110A.Prof in Computer Science
• Đó là: xác định các bieDn đa_u vào và đa_u ra của bộ đie_u khieUn đeU mờ hoá, xây
dựng các tập mờ TieDp theo là dùng các luật hay quy tacc đie_u khieUn được xây dựng theo thuật ngữ của ngôn ngữ tự nhiên; ro_i cuoDi cùng là giải mờ đeU tı̀m
ra giá trị rõ
• Sơ đo_ của một hệ thoDng đie_u khieUn mờ như hı̀nh
110
Trang 111A.Prof in Computer Science
Luật mờ
• Việc suy diefn mờ dựa trên các luật mờ là vaDn đe_ quan trọng
• Cha€ng hạn, với quy tacc suy diễn khẳng định trong lập luận coU đieUn:
, trong đó:
‣ Luật hoặc tri thức: (có nghı̃a là chân lý)
‣ Cùng sự kiện có thật: (nghı̃a là đúng)
Trang 112A.Prof in Computer Science
• Khi có sự kiện mờ xác định bởi tập mờ trên không gian
ne_n X và với luật mờ thı̀ có keDt luận mờ với là tập
Trang 113A.Prof in Computer Science
Trang 114A.Prof in Computer Science
Trang 115A.Prof in Computer Science
Trang 116A.Prof in Computer Science
Trang 117A.Prof in Computer Science
Trang 118A.Prof in Computer Science
• Bước đa_u tiên đeU giải quyeDt, là thực hiện các công việc mờ:
‣ Xây dựng các tập mờ:
- BaUn ı́t , baUn vừa , baUn nhie_u
- Da_u mở ı́t ( ), da_u mở vừa phải ( ), da_u mở nhie_u ( )
- Thời gian giặt raDt nhanh (very fast) , nhanh , thời gian trung bı̀nh
, lâu , raDt lâu (very long)
Trang 119A.Prof in Computer Science
plt.plot( X, Dm, label = "Trung bình" )
plt.plot( X, Dl, label = "Bẩn nhiều" )
plt.xlabel("Không gian nền X" + r"$\in [0,100]$")
plt.legend(loc="best")
plt.show()
Trang 120A.Prof in Computer Science 120
plt.title( "CÁC TẬP MỜ VỀ LƯỢNG DẦU MỠ" )
plt.plot( Y, Gs, label = "Dầu mở ít" )
plt.plot( Y, Gm, label = "Dầu mở vừa phải" )
plt.plot( Y, Gl, label = "Dầu mở nhiều" )
plt.xlabel( "Khộng gian nền $Y \in [1,100]$" )
plt.legend( loc="best" )
plt.show()
• Tương tự như độ baUn, các hàm thành viên ve_ lượng da_u mở bám vào áo
qua_n có theU nội suy đeU hı̀nh dùng, hoặc sử dụng khi có dữ liệu dày đặc
Trang 121A.Prof in Computer Science 121
plt.title( "CÁC TẬP MỜ VỀ THỜI GIAN GIẶT" )
plt.plot( Z, Tf, label = "Rất nhanh" )
plt.plot( Z, Ts, label = "Nhanh" )
plt.plot( Z, Tm, label = "trung bình" )
plt.plot( Z, Tl, label = "Lâu" )
plt.plot( Z, Tv, label = "Rất lâu" )
plt.xlabel( "Khộng gian nền $Z \in [0,60]$" )
plt.legend( loc="best" )
plt.show()
• Tương tự như vậy cho các tập mờ ve_
thời gian:
Trang 122A.Prof in Computer Science
Trang 123A.Prof in Computer Science
Trang 124A.Prof in Computer Science
Trang 125A.Prof in Computer Science
Trang 126A.Prof in Computer Science
Trang 127A.Prof in Computer Science
Trang 128A.Prof in Computer Science
Trang 129A.Prof in Computer Science
Trang 130A.Prof in Computer Science
Trang 131A.Prof in Computer Science
Trang 132A.Prof in Computer Science
Trang 133A.Prof in Computer Science 133
Trang 134A.Prof in Computer Science
return (t - 20)/10
def MuM(t):
if 0 <= t and t <= 10:
return t/10 elif 10 <= t and t <= 20:
return 1 elif 20 <= t and t <= 30:
Trang 135A.Prof in Computer Science 135
Tg = np.linspace( 0,30 )
L = [MuL(t) for t in Tg]
M = [MuM(t) for t in Tg]
S = [MuS(t) for t in Tg]
Trang 136A.Prof in Computer Science
• TieDp theo, ca_n các luật mờ theo quy tacc "nước trên bồn hết nhiều thì bơm
lâu"
‣ (R1): NeDu bo_n còn đa_y ( ) và dưới beU đa_y ( ) thı̀ bơm ı́t (S)
‣ (R2): NeDu bo_n còn đa_y ( ) và dưới beU còn vừa ( ) thı̀ bơm ı́t (S)
‣ (R3): NeDu bo_n còn đa_y ( ) và dưới beU đã ga_n cạn ( ) thı̀ bơm ı́t (S)
‣ (R4): NeDu bo_n đã ga_n heDt ( ) và dưới beU đa_y ( ) thı̀ bơm lâu (L)
‣ (R5): NeDu bo_n đã ga_n heDt ( ) và dưới beU còn vừa( ) thı̀ bơm vừa (M)
‣ (R6): NeDu bo_n đã ga_n heDt ( ) và dưới beU ga_n cạn ( ) thı̀ bơm ı́t (S)
Trang 137A.Prof in Computer Science
• VaDn đe_ đặt ra: khi bo_n còn và beU có , thı̀ máy bơm hoạt động với thời
Trang 138A.Prof in Computer Science
• Hiện thực bagng Python cho các trọng soD này
138
• Từ đây, cũng dựa trên các luật mờ đeU có hàm thuộc ve_ thời gian bơm nước
x0, y0 = 1.2, 5 w1 = min( MuTf(y0),MuCf(x0)) w2 = min( MuTf(y0),MuCm(x0)) w3 = min( MuTf(y0),MuCe(x0)) w4 = min( MuTe(y0),MuCf(x0)) w5 = min( MuTe(y0),MuCm(x0)) w6 = min( MuTe(y0),MuCe(x0))
def T(t):
return w1*MuS(t) + w2*MuS(t) + w3*MuS(t) + w4*MuL(t) + w5*MuM(t) + w6*MuS(t)
Trang 139A.Prof in Computer Science
Trang 140A.Prof in Computer Science
Trang 142A.Prof in Computer Science
Trang 143A.Prof in Computer Science
Trang 144A.Prof in Computer Science
Trang 145A.Prof in Computer Science
Trang 146A.Prof in Computer Science
G = ctrl.Antecedent( Y,"Lượng dầu mở" )
T = ctrl.Consequent( Z,"Thời gian giặt" )
Trang 147A.Prof in Computer Science
### Các tập mờ
D["Bẩn ít"] = fz.trimf( D.universe,[0,0,50] )
D["Trung bình"] = fz.trimf( D.universe,[0,50,100] )
D["Bẩn nhiều"] = fz.trimf( D.universe,[50,100,100] )
G["Dầu mở ít"] = fz.trimf( G.universe,[0,0,50] )
G["Dầu mở vừa phải"] = fz.trimf( G.universe,[0,50,100] ) G["Dầu mở nhiều"] = fz.trimf( G.universe,[50,100,100] )
T["Rất nhanh"] = fz.trapmf( T.universe,[0,0,4,18] )
T["Nhanh"] = fz.trimf( T.universe,[4,18,32] )
T["Trung bình"] = fz.trimf( T.universe,[18,32,46] )
T["Lâu"] = fz.trimf( T.universe,[32,46,60] )
T["Rất lâu"] = fz.trimf( T.universe,[46,60,60] )
• Các tập mờ tương ứng (Bước 3)