{"id":22537847,"url":"https://github.com/khaledashrafh/fuzzy-logic-toolbox","last_synced_at":"2025-04-09T20:14:34.799Z","repository":{"id":85809484,"uuid":"579210506","full_name":"KhaledAshrafH/Fuzzy-Logic-Toolbox","owner":"KhaledAshrafH","description":"It's a Java-based application that provides functions and tools for designing and simulating fuzzy logic systems. It offers a user-friendly interface for creating and testing fuzzy logic systems by allowing users to define and configure input variables, output variables, membership functions, rules, and defuzzification methods.","archived":false,"fork":false,"pushed_at":"2023-08-29T06:35:56.000Z","size":1687,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T20:14:28.766Z","etag":null,"topics":["defuzzification","error-handling","fuzzification","fuzzy-logic","fuzzy-logic-control","fuzzy-logic-engine","genetic-algorithm","genetic-algorithms","rule-based","soft-computing","soft-computing-course","soft-computing-techniques","toolbox"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KhaledAshrafH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-12-17T00:07:19.000Z","updated_at":"2024-12-15T23:06:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"324bcc74-3f90-4271-a13a-bb92c8dd47ef","html_url":"https://github.com/KhaledAshrafH/Fuzzy-Logic-Toolbox","commit_stats":{"total_commits":17,"total_committers":3,"mean_commits":5.666666666666667,"dds":0.4117647058823529,"last_synced_commit":"87110dec84eba9da279eb8fb445de971be4a3c10"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhaledAshrafH%2FFuzzy-Logic-Toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhaledAshrafH%2FFuzzy-Logic-Toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhaledAshrafH%2FFuzzy-Logic-Toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhaledAshrafH%2FFuzzy-Logic-Toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KhaledAshrafH","download_url":"https://codeload.github.com/KhaledAshrafH/Fuzzy-Logic-Toolbox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103872,"owners_count":21048245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["defuzzification","error-handling","fuzzification","fuzzy-logic","fuzzy-logic-control","fuzzy-logic-engine","genetic-algorithm","genetic-algorithms","rule-based","soft-computing","soft-computing-course","soft-computing-techniques","toolbox"],"created_at":"2024-12-07T11:09:00.468Z","updated_at":"2025-04-09T20:14:34.756Z","avatar_url":"https://github.com/KhaledAshrafH.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fuzzy Logic Toolbox\n\nIt's a Java-based application that provides functions and tools for designing and simulating fuzzy logic systems. It offers a user-friendly interface for creating and testing fuzzy logic systems by allowing users to define and configure input variables, output variables, membership functions, rules, and defuzzification methods.\n\n## Features\n\nThe Fuzzy Logic Toolbox offers the following key features:\n\n### 1. Create a New Fuzzy System\n\nUsers can create a new fuzzy logic system by providing a name and a brief description. This allows users to define the purpose and context of the system they are building.\n\n### 2. Add Variables\n\nUsers can define input and output variables for the fuzzy logic system. Each variable has a name, type (input or output), and a range of possible values. Adding variables allows users to specify the parameters that affect the system's behavior.\n\n### 3. Add Fuzzy Sets to Variables\n\nUsers can define fuzzy sets for each input and output variable. Fuzzy sets are used to represent linguistic terms, such as \"low,\" \"medium,\" and \"high.\" The toolbox supports triangular and trapezoidal membership functions, which define the shape and boundaries of the fuzzy sets.\n\n### 4. Add Rules\n\nUsers can define the rules that govern the behavior of the fuzzy logic system. Rules are specified in the format of \"IF \\[condition\\] THEN \\[conclusion\\].\" By adding rules, users can express the logical relationships between input variables and determine the appropriate output values based on the system's inputs.\n\n### 5. Run Simulation on Crisp Values\n\nUsers can input crisp (precise) values for the input variables and simulate the fuzzy logic system. The simulation includes fuzzification, where crisp values are mapped to fuzzy sets based on their membership degrees, inference, where fuzzy rules are applied to determine the output fuzzy sets, and defuzzification, where the output fuzzy sets are converted back to crisp values using various defuzzification methods (e.g., weighted average).\n\n### 6. Error Handling\n\nThe toolbox includes error handling mechanisms to alert users if there are missing or invalid inputs. This helps users identify and correct any issues in their fuzzy logic system design.\n\n### 7. File I/O\n\nThe toolbox supports reading from and writing to file, allowing users to save and load fuzzy logic systems for future use. This feature enables users to easily store and share their fuzzy logic systems with others.\n\n## Installation and Setup\n\nTo use the Fuzzy Logic Toolbox, follow these steps:\n\n1. Download the Fuzzy Logic Toolbox repository from [GitHub](https://github.com/KhaledAshrafH/Fuzzy-Logic-Toolbox).\n\n2. Make sure you have Java Development Kit (JDK) installed on your system.\n\n3. Open the project in your preferred Java Integrated Development Environment (IDE).\n\n4. Build the project to generate the executable JAR file.\n\n5. Run the JAR file to launch the Fuzzy Logic Toolbox application.\n\n## Usage Example\n\nHere's an example usage scenario to demonstrate the functionality of the Fuzzy Logic Toolbox:\n\n```\nFuzzy Logic Toolbox\n===================\n1- Create a new fuzzy system\n2- Quit\n1\n\nEnter the system’s name and a brief description:\n------------------------------------------------\nProject Risk Estimation\nThe problem is to estimate the risk level of a project based on the project\nfunding and the technical experience of the project’s team members.\n\nMain Menu:\n==========\n1- Add variables.\n2- Add fuzzy sets to an existing variable.\n3- Add rules.\n4- Run the simulation on crisp values.\n1\n\nEnter the variable’s name, type (IN/OUT) and range ([lower, upper]):\n(Press x to finish)\n--------------------------------------------------------------------\nproj_funding IN [0, 100]\nexp_level IN [0, 60]\nrisk OUT [0, 100]\nx\n\nMain Menu:\n==========\n1- Add variables.\n2- Add fuzzy sets to an existing variable.\n3- Add rules.\n4- Run the simulation on crisp values.\n4\n\nCAN’T START THE SIMULATION! Please add the fuzzy sets and rules first\n\nMain Menu:\n==========\n1- Add variables.\n2- Add fuzzy sets to an existing variable.\n3- Add rules.\n4- Run the simulation on crisp values.\n2\n\nEnter the variable’s name:\n--------------------------\nexp_level\nEnter the fuzzy set name, type (TRI/TRAP) and values: (Press x to finish)\n-----------------------------------------------------\nbeginner TRI 0 15 30\nintermediate TRI 15 30 45\nexpert TRI 30 60 60\nx\n\nMain Menu:\n==========\n1- Add variables.\n2- Add fuzzy sets to an existing variable.\n3- Add rules.\n4- Run the simulation on crisp values.\n2\n\nEnter the variable’s name:\n--------------------------\nproj_funding\nEnter the fuzzy set name, type (TRI/TRAP) and values: (Press x to finish)\n-----------------------------------------------------\nvery_low TRAP 0 0 10 30\nlow TRAP 10 30 40 60\nmedium TRAP 40 60 70 90\nhigh TRAP 70 90 100 100\nx\n\nMain Menu:\n==========\n1- Add variables.\n2- Add fuzzy sets to an existing variable.\n3- Add rules.\n4- Run the simulation on crisp values.\n2\n\nEnter the variable’s name:\n--------------------------\nrisk\nEnter the fuzzy set name, type (TRI/TRAP) and values: (Press x to finish)\n-----------------------------------------------------\nlow TRI 0 25 50\nnormal TRI 25 50 75\nhigh TRI 50 100 100\nx\n\nMain Menu:\n==========\n1- Add variables.\n2- Add fuzzy sets to an existing variable.\n3- Add rules.\n4- Run the simulation on crisp values.\n3\n\nEnter the rules in this format: (Press x to finish)\nIN_variable set operator IN_variable set =\u003e OUT_variable set\n------------------------------------------------------------\nproj_funding high or exp_level expert =\u003e risk low\nproj_funding medium and exp_level intermediate =\u003e risk normal\nproj_funding medium and exp_level beginner =\u003e risk normal\nproj_funding low and exp_level beginner =\u003e risk high\nproj_funding very_low and_not exp_level expert =\u003e risk high\nx\n\nMain Menu:\n==========\n1- Add variables.\n2- Add fuzzy sets to an existing variable.\n3- Add rules.\n4- Run the simulation on crisp values.\n4\n\nEnter the crisp values:\n-----------------------\nproj_funding: 50\nexp_level: 40\nRunning the simulation…\nFuzzification =\u003e done\nInference =\u003e done\nDefuzzification =\u003e done\nThe predicted risk is normal (37.5)\n\nMain Menu:\n==========\n1- Add variables.\n2- Add fuzzy sets to an existing variable.\n3- Add rules.\n4- Run the simulation on crisp values.\nClose\n\nFuzzy Logic Toolbox\n===================\n1- Create a new fuzzy system\n2- Quit\n2\n```\n\n## Contributing\n\nContributions to the Fuzzy Logic Toolbox are welcome. If you would like to contribute, please follow these steps:\n\n1. Fork the repository on GitHub.\n\n2. Create a new branch for your feature or bug fix.\n\n3. Make the necessary changes in your branch.\n\n4. Test your changes thoroughly.\n\n5. Submit a pull request to the main repository.\n\n6. Provide a clear description of your changes and the problem they solve.\n\n7. Be responsive to any feedback or questions regarding your pull request.\n\n## Team\nThis project was created by a team of three computer science students at Faculty of Computers and Artificial Intelligence Cairo University. The team members are:\n\n- [Khaled Ashraf](https://github.com/KhaledAshrafH).\n- [Ahmed Sayed](https://github.com/AhmedSayed117).\n- [Ebarhim Muhammed](https://github.com/EbrahimHeggy).\n\n## Acknowledgment\n\nThis Project is based on Soft Computing course at Faculty of Computers and Artificial Intelligence Cairo University. We would like to thank Dr. Samar Hesham for his guidance and support throughout this course.\n\n## License\n\nThe Fuzzy Logic Toolbox is released under the [MIT License](LICENSE.md). You are free to use, modify, and distribute the toolbox in accordance with the terms of this license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhaledashrafh%2Ffuzzy-logic-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhaledashrafh%2Ffuzzy-logic-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhaledashrafh%2Ffuzzy-logic-toolbox/lists"}