Duaration, output membership function

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

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

5.18 Duaration, output membership function

Chương 5. Áp dụng Fuzzy Logic vào vấn đề tưới tiêu trong nông nghiệp 80 Luật HÌNH5.19: Rule table 1 HÌNH5.20: Rule table 2 HÌNH5.21: Rule table 3 5.3.6 Hiện thực chương trình

Cài đặt ban đầu cho hệ thống Fuzzy và các biến liên quan o b j e c t i r r i g a t i o n {

def main ( args : Array [ String ] ) : Unit = {

Chương 5. Áp dụng Fuzzy Logic vào vấn đề tưới tiêu trong nông nghiệp 81 val dout = new DataOutputStream ( socket . getOutputStream ( ) ) ; val spark = SparkSession . builder ( )

. appName( " S p a r k I r r i g a t i o n " ) . getOrCreate ( ) val sc = spark . sparkContext

var temp = v a r i a b l e ( " temp " , ( 1 5 , 6 0 ) ) var lux = v a r i a b l e ( " lux " , ( 0 , 1 2 0 0 0 ) ) var s o i l = v a r i a b l e ( " s o i l " , ( 0 , 8 0 ) )

var output = v a r i a b l e ( " out " , ( 0 , 3 2 ) , sc=sc ) var cold = trapmf ( " cold " , 1 5 , 1 5 , 2 5 , 3 0 )

var medium_t = trimf ( "medium" , 25 ,30 ,35) var hot = trapmf ( " hot " , 30 ,35 ,60 ,60) var dark = trapmf ( " dark " , 0 , 0 , 0 . 2 5 , 0 . 5 )

var medium_l = trapmf ( "medium" , 0 . 2 5 , 0 . 5 , 7 5 0 0 , 1 0 0 0 0 ) var l i g h t = trapmf ( " l i g h t " , 7500 , 10000 ,12000 ,12000) var dry = trapmf ( " dry " , 0 , 0 , 1 7 , 3 3 )

var medium_s = trimf ( "medium" , 17 ,33 ,50) var wet = trapmf ( " wet " , 33 ,50 ,80 ,80) var zero = trimf ( " zero " , 0 , 0 , 8 )

var veryshort = trimf ( " veryshort " , 0 , 8 , 1 6 ) var short = trimf ( " short " , 8 , 16 ,24 )

var long = trimf ( " long " , 16 ,24 ,32)

var verylong = trimf ( " verylong " , 24 ,32 ,32) val f i s = FIS_Mamdani (name = " tipdemo " ,

input = L i s t ( temp , lux , s o i l ) , output = L i s t ( output ) ,

andMethod = AndMethod . Min , orMethod = OrMethod . Max,

aggregation = Aggregation . Max,

d e f u z z i f i c a t i o n = Defuzzificaton . centroid , step = 10000)

Chương 5. Áp dụng Fuzzy Logic vào vấn đề tưới tiêu trong nông nghiệp 82 Cài đặt các kịch bản tưới nước theo khung giờ trong ngày theo cấu trúc (a, b). Trong đó a là thời điểm giờ trong ngày, b là độ ẩm cần đạt được tại khung giờ đó

val i r r i g a t i o n _ s c r i p t = L i s t ( ( 0 , 2 0 ) , ( 1 , 2 0 ) , ( 2 , 2 0 ) , ( 3 , 2 0 ) , ( 4 , 2 0 ) , ( 5 , 2 0 ) , ( 6 , 2 0 ) , ( 7 , 2 0 ) , ( 8 , 4 0 ) , ( 9 , 4 0 ) , ( 1 0 , 4 0 ) , ( 1 1 , 4 0 ) , ( 1 2 , 4 0 ) , ( 1 3 , 4 0 ) , ( 1 4 , 4 0 ) , ( 1 5 , 4 0 ) , ( 1 6 , 6 0 ) , ( 1 7 , 6 0 ) , ( 1 8 , 6 0 ) , ( 1 9 , 6 0 ) , ( 2 0 , 6 0 ) , ( 2 1 , 6 0 ) , ( 2 2 , 6 0 ) , ( 2 3 , 6 0 ) ) Đọc dữ liệu HDFS partition theo giờ

while (true) {

for ( ( h , s)<− i r r i g a t i o n _ s c r i p t ) {

i f ( h==LocalDateTime . now ( ) . getHour ( ) ) { r e f _ s o i l = s } }

val df = spark .read

. csv ( " . . / i r r i g a t i o n _ c s v / p a r t i t i o n ="+LocalDateTime . now ( ) ) val row = df . orderBy ( col ( " _c4 " ) . desc ) . c o l l e c t . head

val temp_data = row ( 0 ) . asInstanceOf [ String ] . toDouble val lux_data = row ( 1 ) . asInstanceOf [ String ] . toDouble val s o i l _ d a t a = row ( 2 ) . asInstanceOf [ String ] . toDouble f i s . setInput ( L i s t ( temp_data , lux_data , s o i l _ d a t a ) ) Cài đặt luật fuzzy logic

f i s . I f ( s o i l i s wet ) Then ( output will_be zero ) f i s . I f ( ( temp i s cold )

and ( lux i s l i g h t )

and ( s o i l i s medium_s ) ) Then ( output will_be short ) f i s . I f ( ( temp i s cold )

and ( lux i s medium_l ) and ( s o i l i s medium_s ) ) Then ( output will_be short ) f i s . I f ( ( temp i s cold )

and ( lux i s dark )

and ( s o i l i s medium_s ) ) Then ( output will_be short )

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

f i s . I f ( ( temp i s medium_t ) and ( lux i s l i g h t )

and ( s o i l i s medium_s ) ) Then ( output will_be veryshort ) f i s . I f ( ( temp i s medium_t )

and ( lux i s medium_l ) and ( s o i l i s medium_s ) ) Then ( output will_be short ) f i s . I f ( ( temp i s medium_t )

and ( lux i s dark )

and ( s o i l i s medium_s ) ) Then ( output will_be short ) f i s . I f ( ( temp i s hot )

and ( lux i s l i g h t )

and ( s o i l i s medium_s ) ) Then ( output will_be zero ) f i s . I f ( ( temp i s hot )

and ( lux i s medium_l ) and ( s o i l i s medium_s ) ) Then ( output will_be veryshort ) f i s . I f ( ( temp i s hot )

and ( lux i s dark )

and ( s o i l i s medium_s ) ) Then ( output will_be long ) f i s . I f ( ( temp i s cold )

and ( lux i s l i g h t ) and ( s o i l i s dry ) )

Then ( output will_be verylong ) f i s . I f ( ( temp i s cold )

and ( lux i s medium_l ) and ( s o i l i s dry ) )

Then ( output will_be verylong ) f i s . I f ( ( temp i s cold )

Chương 5. Áp dụng Fuzzy Logic vào vấn đề tưới tiêu trong nông nghiệp 84 and ( lux i s dark )

and ( s o i l i s dry ) )

Then ( output will_be verylong ) f i s . I f ( ( temp i s medium_t )

and ( lux i s l i g h t ) and ( s o i l i s dry ) )

Then ( output will_be verylong ) f i s . I f ( ( temp i s medium_t )

and ( lux i s medium_l ) and ( s o i l i s dry ) )

Then ( output will_be verylong ) f i s . I f ( ( temp i s medium_t )

and ( lux i s dark ) and ( s o i l i s dry ) )

Then ( output will_be verylong ) f i s . I f ( ( temp i s hot )

and ( lux i s l i g h t ) and ( s o i l i s dry ) ) Then ( output will_be zero ) f i s . I f ( ( temp i s hot )

and ( lux i s medium_l ) and ( s o i l i s dry ) )

Then ( output will_be veryshort ) f i s . I f ( ( temp i s hot )

and ( lux i s dark ) and ( s o i l i s dry ) )

Then ( output will_be verylong ) Tính kết quả Fuzzy Logic và gửi socket

val i r r i g a t i o n _ t i m e = f i s . defuzz ( output ) dout . writeUTF ( i r r i g a t i o n _ t i m e . t o S t r i n g ) ; dout . flush ( ) ;

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

5.4 Đánh giá kết quả

Hình ảnh dưới đây thể hiện độ ẩm đất đo đạc được trong ngày 17/7/2021 và ngày 18/7/2021. Tưới nước theo kịch bản sau:

• Từ 0h đến 7h: Mức độ ẩm cần đạt được là 20%

• Từ 8h đến 15h: Mức độ ẩm cần đạt được là 40%

• Từ 16h đến 23h: Mức độ ẩm cần đạt được là 60%

HÌNH5.22: Dữ liệu độ ẩm đất trong ứng dụng

Kết quả đo đạc cho thấy, ứng dụng đáp ứng được yêu cầu kịch bản độ ẩm đã được đề xuất.

Để đánh giá sự hiệu quả của ứng dụng tưới nước trên, tôi sẽ so sánh ứng dụng với trường hợp ứng dụng không sử dụng giải thuật Fuzzy Logic, chỉ dựa vào cảnh báo cảm biến và kinh nghiệm của người tưới nước. Giả sử kinh nghiệm tương ứng với dữ liệu cảm biến và thời gian tưới nước như sau:

BẢNG 5.1: Các trạng thái cảm biến nhiệt độ

Trạng thái Khoảng

Cold temp < 25

Medium 25 <= temp <= 35

Chương 5. Áp dụng Fuzzy Logic vào vấn đề tưới tiêu trong nông nghiệp 86 BẢNG 5.2: Các trạng thái cảm biến ánh sáng Trạng thái Khoảng Dark solar < 0.25 Medium 0.25 <= solar <= 7500 Light solar > 7500 BẢNG 5.3: Các trạng thái cảm biến độ ẩm đất Trạng thái Khoảng Dry soil < 17 Medium 17 <= solar <= 50 Wet solar > 50

BẢNG5.4: Kinh nghiệm tưới nước

Mức tưới Thời gian tưới (phút)

Zero 0

VeryShort 8

Short 16

Long 24

Chương 5. Áp dụng Fuzzy Logic vào vấn đề tưới tiêu trong nông nghiệp 87 14 15 16 17 18 0 100 200 300 400 500 257.8 251.2 288.2 293.7 285.5 352 344 392 368 376 day minutes Case 1 Case 2

Biểu đồ trên so sánh số phút tưới nước khi áp dụng hai cách tưới nước khác nhau trong các ngày 14/7/2021 đến 18/7/2021

• Case 1: Trường hợp sử dụng giải thuật Fuzzy Logic

• Case 2: Trường hợp chỉ sử dụng kinh nghiệm, không sử dụng Fuzzy Logic

Kết quả cho thấy, khi áp dụng Fuzzy Logic, thời gian tưới nước luôn ít hơn tương ứng với việc sử dụng ít nước hơn nhưng vẫn đảm bảo độ ẩm theo yêu cầu.

88

Chương 6 Kết luận

Nông nghiệp là vấn đề quan trọng của tất cả các quốc gia hiện nay. Việc áp dụng khoa học công nghệ vào nông nghiệp là việc làm cấp thiết, giúp nền nông nghiệp phát triển bền vững và đạt được năng suất cao hơn. Trong luận văn này, tôi đã có các khảo sát tổng hợp để chỉ ra rằng, các vấn đề nông nghiệp trong thực tế là rất đa dạng. Thông qua khảo sát, tôi đã chỉ ra được một số kĩ thuật mạnh mà giới nghiên cứu quan tâm, sử dụng thường xuyên.

Cùng với đó, tôi cũng đã bước đầu xây dựng được một framework chuyên dụng để xử lý các vấn đề trên. Tôi đã chọn Spark để kế thừa và mở rộng thêm giải thuật. Hiện tại, framework đã hỗ trợ tốt giải thuật Fuzzy Logic. Giải thuật phiên bản phân tán được nâng cấp hoàn thiện hơn so với phiên bản 1, giúp quá trình tính toán diễn ra nhanh hơn, tận dụng sức mạnh tính toán phân tán của Spark.

Tôi cũng đã trình bày một ứng dụng tưới nước mô phỏng để chứng minh giải thuật chạy tốt trên môi trường Spark và có thể tương tác với nhiều công cụ dữ liệu lớn khác. Ứng dụng chạy ổn định và kết quả đạt yêu cầu độ ẩm dề ra. Tôi cũng đã so sánh ứng dụng tưới nước khi sử dụng giải thuật Fuzzy Logic và không sử dụng giải thuật Fuzzy Logic, kết quả cho thấy số thời gian tưới nước của Fuzzy Logic là ít hơn từ đó giúp tiết kệm được nước nhưng vẫn đảm bảo độ ẩm theo yêu cầu.

Tuy nhiên ứng dụng tưới nước vẫn còn hạn chế vì chưa thể mô phỏng giống hoàn toàn so với môi trường thật. Vì thế, khi áp dụng thực tế sẽ cần nhiều chỉnh sửa để phù hợp với môi trường ở địa phương.

Tôi hi vọng rằng, những nghiên cứu khởi đầu của tôi sẽ giúp ích được cho các nhóm phát triển sau này, giúp họ dễ dàng mở rộng framework và giải quyết được nhiều bài toán khác trong tương lai.

89

References

Aggarwal, Charu C (2015). ?Data classification?In:Data Mining. Springer, pp. 285– 344.

Anand, J and J Raja Paul Perinbam (2014). Automatic Irrigation System using Fuzzy

Logic. CG College of Technology, Chennai, Tamil Nadu, India.

Aydin, Galip, Ibrahim Riza Hallac, and Betul Karakus (2015). ?Architecture and

implementation of a scalable sensor data storage and analysis system using cloud computing and big data technologies?In:Journal of Sensors2015.

Bennett, John McLean (2015). ?Agricultural Big Data: utilisation to discover the

unknown and instigate practice change?In:Farm Policy Journal12.1, pp. 43–50. Devlin, Barry (2012). ?The Big Data zoo–taming the beasts: the need for an integrated

platform for enterprise information?In:Cape Town: 9sight Consulting.

Faulkner, A, K Cebul, and G McHenry (2014). ?Agriculture gets smart: the rise of

data and robotics?In:Cleantech Agriculture Report, Cleantech Group.

Issad, Hassina Ait, Rachida Aoudjit, and Joel JPC Rodrigues (2019). ?A comprehensive

review of Data Mining techniques in smart agriculture?In:Engineering in Agriculture, Environment and Food12.4, pp. 511–525.

Karau, Holden and Rachel Warren (2017). High performance Spark: best practices for

scaling and optimizing Apache Spark. " O’Reilly Media, Inc.".

Kaufman, Leonard and Peter J Rousseeuw (2009).Finding groups in data: an introduction to cluster analysis. Vol. 344. John Wiley & Sons.

Lesser (2014). ?Big Data and Big Agriculture?In:

Liakos, Konstantinos G et al. (2018). ?Machine learning in agriculture: A review?In:

Sensors18.8, p. 2674.

Maimon, Oded and Lior Rokach (2005). ?Data mining and knowledge discovery

handbook?In:

Mekonnen, Yemeserach et al. (2019). ?Machine learning techniques in wireless sensor network based precision agriculture?In:Journal of the Electrochemical Society167.3, p. 037522.

Pathan, Misbah et al. (2020). ?Artificial cognition for applications in smart agriculture: A comprehensive review?In:Artificial Intelligence in Agriculture.

References 90

Peng, Xiaohong et al. (2009). ?A water-saving irrigation system based on fuzzy

control technology and wireless sensor network?In:2009 5th International Conference on Wireless Communications, Networking and Mobile Computing. IEEE, pp. 1–4.

Ponraj, Abraham Sudharson and T Vigneswaran (2019). ?Machine learning approach

for agricultural IoT?In: International Journal of Recent Technology and Engineering

7.6, pp. 383–392.

prakash, chandan (2018).So sánh Spark, Flink, Storm.https://medium.com/@chandanbaranwal/

spark-streaming-vs-flink-vs-storm-vs-kafka-streams-vs-samza-choose-

your-stream-processing-91ea3f04675b.

Quora (2018).Why is Apache Spark implemented in Scala? https://www.quora.com/

Why-is-Apache-Spark-implemented-in-Scala.

Soka, S (2015). ?Big Data: from hype to agricultural tool. Farm Policy Journal?In:

Thông tin so sánh cơ bản về các framework bigdata.https://www.opensourceforu.com/

2018/03/a-quick-comparison-of-the-five-best-big-data-frameworks/.

Touati, Farid et al. (2013). ?A fuzzy logic based irrigation system enhanced with

wireless data logging applied to the state of Qatar?In:Computers and electronics in agriculture98, pp. 233–241.

Verhoosel, Jack, Michael van Bekkum, and Tim Verwaart (2016). ?HortiCube: a

platform for transparent, trusted data sharing in the food supply chain?In:Proceedings in food system dynamics, pp. 384–388.

Vogt (2013).Looking at Big Data one plant at a time.https://www.farmprogress.com/

blog/looking-big-data-one-plant-time.

Witten, Ian H and Eibe Frank (2002). ?Data mining: practical machine learning tools

and techniques with Java implementations?In: Acm Sigmod Record31.1, pp. 76–

77.

Wolfert, Sjaak et al. (2017). ?Big data in smart farming–a review? In: Agricultural systems153, pp. 69–80.

Wong, Manchek A and JA Hartigan (1979). ?Algorithm as 136: A k-means clustering

algorithm?In:Journal of the Royal Statistical Society. Series C (Applied Statistics)28.1, pp. 100–108.

Zaharia, Matei et al. (2012). ?Resilient distributed datasets: A fault-tolerant abstraction

for in-memory cluster computing? In: 9th {USENIX} Symposium on Networked

Systems Design and Implementation ({NSDI} 12), pp. 15–28.

Zhang, Quanxing, Chwan-Hwa Wu, and Ken Tilt (1996). ?Application of fuzzy logic

in an irrigation control system?In:Proceedings of the IEEE International Conference on Industrial Technology (ICIT’96). IEEE, pp. 593–597.

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