Fuzzy Inference System Class Diagram

Một phần của tài liệu Nghiên cứu phát triển công cụ phân tích dữ liệu nông nghiệp dùng cho làng thông minh (Trang 57 - 61)

5 Áp dụng Fuzzy Logic vào vấn đề tưới tiêu trong nông nghiệp

4.18 Fuzzy Inference System Class Diagram

Chương 4. Xây dựng công cụ phân tích dữ liệu nông nghiệp 43

4.3.2 Đặc tả chi tiết

Trước khi đi vào các thiết kế chi tiết của từng class, tôi sẽ mô tả ý tưởng thiết kế giải thuật trên. Nhắc lại về cấu trúc của một luật If-Then

I f ( x i s A) Then ( y i s B)

I f ( ( x i s A) or ( y i s B ) ) Then ( z i s C)

Ở ví dụ trên, ta có thể cấu trúc câu lệnh If-then làm 4 phần phân biệt: If, tiền đề, Then và hệ quả. Phần tiền đề và hệ quả cũng là các thành phần có cấu trúc

Scala cung cấp một số biến thể cú pháp để gọi các phương thức. Chẳng hạn một đối tượng x có phương thức là is, và tham số là A. Ta có thể gọi phương thức theo hai cách tương đương như sau:

// invoke method with dot notation x . i s (A)

// invoke method without dot notation x i s A

Với biến thể trên, việc gọi hàm trở nên tự nhiên và ngắn gọn hơn, rất phù hợp cho việc diễn tả một câu luật If-Then trong Fuzzy Logic

variable

• Properties:

name: String: tên biến

range: (Double, Double): ngưỡng giá trị của biến, hay còn gọi là universe of discourse

value: Double: giá trị của biến nằm trong ngưỡng range

valueFuzzy: Double: giá trị sau khi đã được mờ hóa sử dụng membershipFunc

(MF)

andMethod:(Double, Double)=>Double: hàm được sử dụng để tính toán

tử AND

orMethod:(Double, Double)=>Double: hàm được sử dụng để tính toán tử

OR

aggregation:(List[Double], List[Double])=>List[Double]: hàm được sử dụng

Chương 4. Xây dựng công cụ phân tích dữ liệu nông nghiệp 44

is: tính giá trị mờ (0->1) sau khi áp dụng MF đối với giá trị thực

* param: membershipFunc

* return: exprIf

is_not: giá trị nghịch đảo của method is

* param: membershipFunc

* return: exprIf

will_be: là method được áp dụng cho biến output, sau bước implication.

valueFuzzy của tiền đề sẽ được gán cho valueFuzzy của hệ quả.

* param: membershipFunc

* return: void

exprIf

exprIf là một cấu trúc dữ liệu được dùng để lưu trữ valueFuzzy của các biến sau khi đã áp dụng membershipFunc Ví dụ: (x is A) thì giá trị trả về của method này sẽ là một đối tượng expr(valueFuzzy)

• Properties

valueFuzzy: Double: lưu valueFuzzy của biến

andMethod:(Double, Double)=>Double: hàm được sử dụng để tính toán

tử AND

orMethod:(Double, Double)=>Double: hàm được sử dụng để tính toán tử

OR

• Method

and: hàm and giúp kết nối các vế của tiền đề với nhau và tính toán tử

AND. Ví dụ (x is A) and (y is B) thì trả về vẫn là một expr(valueFuzzy)

* param: exprIf

* return: exprIf

or: hàm and giúp kết nối các vế của tiền đề với nhau và tính toán tử OR.

Ví dụ (x is A) or (y is B) thì trả về vẫn là một expr(valueFuzzy)

* param: exprIf

Chương 4. Xây dựng công cụ phân tích dữ liệu nông nghiệp 45

exprThen

• Method

and: hàm and mục đích chính là để kết nối các vế của hệ quả với nhau và

không có chức năng tính toán

* param: exprThen

* return: exprThen

AndMethod

Là một class chứa hàm static dùng để tính toán tử And. Trong nghiên cứu này, hàm min là hàm được sử dụng để tính toán tử And.

• Static Methods:

Min: trả về giá trị nhỏ nhất của hai số thực

* param: (Double, Double)

* return: Double

OrMethod

Là một class chứa hàm static dùng để tính toán tử Or. Trong nghiên cứu này, hàm max là hàm được sử dụng để tính toán tử Or.

• Static Methods:

Max: trả về giá trị lớn nhất của hai số thực

* param: (Double, Double)

* return: Double

Aggregation

Là một class chứa các hàm static dùng để tổng hợp các Fuzzy Sets của hệ quả.

• Static Methods:

Max: trả về Fuzzy Set lớn nhất sau khi trộn giữa hai Fuzzy Set

* param: (List[Double], List[Double])

Chương 4. Xây dựng công cụ phân tích dữ liệu nông nghiệp 46

Sum: trả về Fuzzy Set là tổng của các Fuzzy Set

* param: (List[Double], List[Double])

* return: List[Double]

Defuzzification

Là một class chứa các hàm static dùng để khử mờ Fuzzy Set của output

• Static Methods:

centroid: trả về trọng tâm của Fuzzy Set theo trục X. Và được tính theo

công thức sau:

xCentroid=∑iµ(xi)xi

∑iµ(xi) (4.3)

Trong đó: xi là giá trị trong khoảng universe of discourse vàµ(xi)là ánh

xạ của x sau khi áp dụng membershipFuncµ()

Một phần của tài liệu Nghiên cứu phát triển công cụ phân tích dữ liệu nông nghiệp dùng cho làng thông minh (Trang 57 - 61)