This app was developed to support the author's final research activities:
Select The Language
Table of Contents
The Rainfall Prediction App is a desktop-based application developed to forecast rainfall in Banyuasin Regency, South Sumatera Province, Indonesia. Developing this application is a mandatory requirement to obtain the Bachelor of Computer Science degree from the University of Sriwijaya. The prediction model in this application employs the Tsukamoto Fuzzy Inference System (FIS) optimized using the Genetic Algorithm (GA). Based on the conducted research, the lowest Mean Absolute Percentage Error (MAPE) achieved in predicting rainfall using this model is 27.8%. The monthly climate data of Banyuasin Regency from January 2018 to December 2022 will be utilized for rainfall prediction. The climate data comprises attributes such as temperature, air humidity, air pressure, wind velocity, and rainfall.
The hardware required to support the operation of this application is as follows:
- Laptop or PC with a minimum display resolution of 1280 * 720
The software required to support the operation of this application is as follows:
- Windows OS 10/11 64-bit
- NetBeans IDE version 14 and above
- Java Development Kit (JDK) version 20 and above
Installing the application via Git Bash CLI:
- Open Git Bash
- Choose the download location folder. For example:
cd d://downloads
- Type
git clone https://github.com/murafba/Rainfall-Prediction-App.git
- Check the download folder and open the project
Here are the steps to run the app:
- Launch NetBeans
- Open the downloaded project
Important
If the default JDK used is below version 20, it needs to be changed. Here are the steps: (a) Right-click on the project; (b) Select properties; (c) Choose the Libraries menu; (d) In the Java Platform dropdown menu, select JDK version 20 or above.
- Open the gui package and select the
Main.java
class - Run the application
There are 2 functional requirements of the application system:
Use case 1 is implemented on the app's homepage. This page is utilized to conduct research on rainfall prediction to find the lowest MAPE value using genetic algorithm parameters: generation size, population size, crossover rate, and mutation rate. Afterwards, click the button to initiate the program.
Caution
The values that can be input for crossover rate and mutation rate are limited to a range between 0 and 1! If they are outside of this range, the program will display an error message. Additionally, each parameter only accepts numerical input data.
Below is the display of the homepage, the activity, and the sequence diagram:
Use case 2 is implemented on the Manual Forecasting page. This page is used to predict rainfall values from new data. The boundaries of the fuzzy membership functions used are taken from the chromosome that had the lowest MAPE value during the research, which was 27.8%. After inputting attribute values for temperature, air humidity, air pressure, and wind speed, click the button. Here is the display of the Manual Forecasting page.
Fig. 5 Manual Forecasting Page
This class is an abstract superclass that utilized to receive input data from the Main.java
class and then initiates the process of searching for chromosome that can generate membership function boundaries with the best fitness value. The stage starts from initializing the initial population to computing the fitness value.
This class is a subclass of GeneticAlgorithm.java
used to calculate the rainfall value using the Tsukamoto FIS method, both from the homepage and the manual forecasting page. This class also computes the Absolute Percentage Error (APE) and Mean Absolute Percentage Error (MAPE), then returns the MAPE values to the superclass. The process begins with fuzzification, rule-based implication, defuzzification, and culminates in the evaluation of the MAPE value.
This class represents the application's GUI, comprising the Homepage and the Manual Forecasting page.
Here is the class diagram of the application:
If you're interested in my research, you can read mine at the following link.
- Undergraduate thesis: OPTIMIZATION OF TSUKAMOTO FIS IN PREDICTING RAINFALL IN BANYUASIN REGENCY USING GENETIC ALGORITHM
Hi! My name is Muhammad Rafi Akbar. You can call me Rafi. I'm a bachelor of computer science from Sriwijaya University majoring in Informatics. I have a keen interest in fuzzy logic and cryptography fields. You can reach out to me through the following accounts.
If you found my project useful, you can show your support by attributing to this project and giving it a star on this repository. Alternatively, you can also provide material support through the following links:
Pull requests are not available. I will provide a dedicated repository related to the research where you can make pull requests on that page. If you have any questions or recommendations, please feel free to do so in the Issues section.
Copyright © 2023 Muhammad Rafi Akbar
This project is under the MIT License.
As the developer, I'm aware that the developed application still has some shortcomings. Therefore, constructive criticism and suggestions from colleagues are highly appreciated.