diff --git a/Examples/Makefile b/Examples/Makefile index 56c6c0f..6a8a399 100644 --- a/Examples/Makefile +++ b/Examples/Makefile @@ -1,6 +1,6 @@ JDK= JFMLpath=. -JFML=$(JFMLpath)/lib/JFML-v1.1.jar +JFML=$(JFMLpath)/lib/JFML-v1.2.jar JFMLxmlfiles=$(JFMLpath)/XMLFiles/ default: @@ -169,4 +169,7 @@ testTipperMamdani1Import: java -jar $(JFML) $(JFMLxmlfiles)TipperMamdani1.xml $(JFMLxmlfiles)test-data-Tipper1.txt testTipperTSKImport: - java -jar $(JFML) $(JFMLxmlfiles)TipperTSK.xml $(JFMLxmlfiles)test-data-Tipper1.txt \ No newline at end of file + java -jar $(JFML) $(JFMLxmlfiles)TipperTSK.xml $(JFMLxmlfiles)test-data-Tipper1.txt + +testTao: + java -jar $(JFML) $(JFMLxmlfiles)taoFML.xml 1 Class x1 90 x2 60 Sumx1x2 150 diff --git a/Examples/README-EXAMPLES.txt b/Examples/README-EXAMPLES.txt index 425ebd0..77cae89 100644 --- a/Examples/README-EXAMPLES.txt +++ b/Examples/README-EXAMPLES.txt @@ -22,68 +22,74 @@ You can also run the library with a specific instance, for your own XML file, as Before running the examples, please be sure the XMLFiles folder contains the required XML files. Otherwise, you can create some of them from the command line: Examples: -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateIrisMamdaniExampleXML1 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateIrisMamdaniExampleXML2 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateIrisMamdaniExampleXML3 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateInvertedPendulumMamdaniExampleXML1 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateInvertedPendulumMamdaniExampleXML2 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateInvertedPendulumTSKExampleXML1 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateInvertedPendulumTSKExampleXML2 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateJapaneseDietAssessmentMamdaniExampleXML -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateTipperMamdaniExampleXML1 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateTipperMamdaniExampleXML2 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateTipperMamdaniExampleXML3 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateTipperTSKExampleXML -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateTipperTsukamotoExampleXML1 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateTipperTsukamotoExampleXML2 -> java -classpath ./lib/JFML-v1.1.jar jfml.test.CreateTipperAnYaExampleXML +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateIrisMamdaniExampleXML1 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateIrisMamdaniExampleXML2 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateIrisMamdaniExampleXML3 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateInvertedPendulumMamdaniExampleXML1 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateInvertedPendulumMamdaniExampleXML2 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateInvertedPendulumTSKExampleXML1 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateInvertedPendulumTSKExampleXML2 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateJapaneseDietAssessmentMamdaniExampleXML +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateTipperMamdaniExampleXML1 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateTipperMamdaniExampleXML2 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateTipperMamdaniExampleXML3 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateTipperTSKExampleXML +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateTipperTsukamotoExampleXML1 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateTipperTsukamotoExampleXML2 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.CreateTipperAnYaExampleXML Tests: -> java -jar ./lib/JFML-v1.1.jar Iris Mamdani1 ./XMLFiles/test-data-Iris1.txt -> java -jar ./lib/JFML-v1.1.jar Iris Mamdani1 PetalWidth 0.2 -> java -jar ./lib/JFML-v1.1.jar Iris Mamdani2 ./XMLFiles/test-data-Iris2.txt -> java -jar ./lib/JFML-v1.1.jar Iris Mamdani2 SepalLength 5.1 SepalWidth 3.5 PetalLength 1.4 PetalWidth 0.2 -> java -jar ./lib/JFML-v1.1.jar Iris Mamdani3 ./XMLFiles/test-data-Iris1.txt -> java -jar ./lib/JFML-v1.1.jar Iris Mamdani3 PetalWidth 0.5 -> java -jar ./lib/JFML-v1.1.jar InvertedPendulum Mamdani1 ./XMLFiles/test-data-InvertedPendulum.txt -> java -jar ./lib/JFML-v1.1.jar InvertedPendulum Mamdani2 ./XMLFiles/test-data-InvertedPendulum.txt -> java -jar ./lib/JFML-v1.1.jar InvertedPendulum TSK1 ./XMLFiles/test-data-InvertedPendulum.txt -> java -jar ./lib/JFML-v1.1.jar InvertedPendulum TSK2 ./XMLFiles/test-data-InvertedPendulum.txt -> java -jar ./lib/JFML-v1.1.jar JapaneseDietAssessment Mamdani ./XMLFiles/test-data-JapaneseDietAssessment.txt -> java -jar ./lib/JFML-v1.1.jar Tipper Mamdani1 ./XMLFiles/test-data-Tipper1.txt -> java -jar ./lib/JFML-v1.1.jar Tipper Mamdani2 ./XMLFiles/test-data-Tipper1.txt -> java -jar ./lib/JFML-v1.1.jar Tipper Mamdani3 ./XMLFiles/test-data-Tipper2.txt -> java -jar ./lib/JFML-v1.1.jar Tipper TSK ./XMLFiles/test-data-Tipper1.txt -> java -jar ./lib/JFML-v1.1.jar Tipper Tsukamoto1 ./XMLFiles/test-data-Tipper1.txt -> java -jar ./lib/JFML-v1.1.jar Tipper Tsukamoto2 ./XMLFiles/test-data-Tipper1.txt -> java -jar ./lib/JFML-v1.1.jar Tipper AnYa ./XMLFiles/test-data-Tipper2.txt -> java -jar ./lib/JFML-v1.1.jar Robot Mamdani ./XMLFiles/test-data-Robot.txt -> java -jar ./lib/JFML-v1.1.jar ./XMLFiles/RobotIEEEstd1855.xml ./XMLFiles/test-data-Robot.txt -> java -jar ./lib/JFML-v1.1.jar ./XMLFiles/RobotIEEEstd1855.xml 2 la av rd 0.2 dq 0.25 o 20 v 0.25 +> java -jar ./lib/JFML-v1.2.jar Iris Mamdani1 ./XMLFiles/test-data-Iris1.txt +> java -jar ./lib/JFML-v1.2.jar Iris Mamdani1 PetalWidth 0.2 +> java -jar ./lib/JFML-v1.2.jar Iris Mamdani2 ./XMLFiles/test-data-Iris2.txt +> java -jar ./lib/JFML-v1.2.jar Iris Mamdani2 SepalLength 5.1 SepalWidth 3.5 PetalLength 1.4 PetalWidth 0.2 +> java -jar ./lib/JFML-v1.2.jar Iris Mamdani3 ./XMLFiles/test-data-Iris1.txt +> java -jar ./lib/JFML-v1.2.jar Iris Mamdani3 PetalWidth 0.5 +> java -jar ./lib/JFML-v1.2.jar InvertedPendulum Mamdani1 ./XMLFiles/test-data-InvertedPendulum.txt +> java -jar ./lib/JFML-v1.2.jar InvertedPendulum Mamdani2 ./XMLFiles/test-data-InvertedPendulum.txt +> java -jar ./lib/JFML-v1.2.jar InvertedPendulum TSK1 ./XMLFiles/test-data-InvertedPendulum.txt +> java -jar ./lib/JFML-v1.2.jar InvertedPendulum TSK2 ./XMLFiles/test-data-InvertedPendulum.txt +> java -jar ./lib/JFML-v1.2.jar JapaneseDietAssessment Mamdani ./XMLFiles/test-data-JapaneseDietAssessment.txt +> java -jar ./lib/JFML-v1.2.jar Tipper Mamdani1 ./XMLFiles/test-data-Tipper1.txt +> java -jar ./lib/JFML-v1.2.jar Tipper Mamdani2 ./XMLFiles/test-data-Tipper1.txt +> java -jar ./lib/JFML-v1.2.jar Tipper Mamdani3 ./XMLFiles/test-data-Tipper2.txt +> java -jar ./lib/JFML-v1.2.jar Tipper TSK ./XMLFiles/test-data-Tipper1.txt +> java -jar ./lib/JFML-v1.2.jar Tipper Tsukamoto1 ./XMLFiles/test-data-Tipper1.txt +> java -jar ./lib/JFML-v1.2.jar Tipper Tsukamoto2 ./XMLFiles/test-data-Tipper1.txt +> java -jar ./lib/JFML-v1.2.jar Tipper AnYa ./XMLFiles/test-data-Tipper2.txt +> java -jar ./lib/JFML-v1.2.jar Robot Mamdani ./XMLFiles/test-data-Robot.txt +> java -jar ./lib/JFML-v1.2.jar ./XMLFiles/RobotIEEEstd1855.xml ./XMLFiles/test-data-Robot.txt +> java -jar ./lib/JFML-v1.2.jar ./XMLFiles/RobotIEEEstd1855.xml 2 la av rd 0.2 dq 0.25 o 20 v 0.25 Export: -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/IrisMamdani1.xml ./XMLFiles/IrisMamdani1.fis -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/IrisMamdani1.xml ./XMLFiles/IrisMamdani1.fcl -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/IrisMamdani2.xml ./XMLFiles/IrisMamdani2.fis -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/TipperMamdani1.xml ./XMLFiles/TipperMamdani1.fis -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/TipperMamdani1.xml ./XMLFiles/TipperMamdani1.fcl -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/TipperMamdani2.xml ./XMLFiles/TipperMamdani2.fis -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/TipperMamdani2.xml ./XMLFiles/TipperMamdani2.fcl -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/TipperTSK.xml ./XMLFiles/TipperTSK.fis -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ExportExample ./XMLFiles/TipperTSK.xml ./XMLFiles/TipperTSK.fcl +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/IrisMamdani1.xml ./XMLFiles/IrisMamdani1.fis +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/IrisMamdani1.xml ./XMLFiles/IrisMamdani1.fcl +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/IrisMamdani2.xml ./XMLFiles/IrisMamdani2.fis +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/TipperMamdani1.xml ./XMLFiles/TipperMamdani1.fis +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/TipperMamdani1.xml ./XMLFiles/TipperMamdani1.fcl +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/TipperMamdani2.xml ./XMLFiles/TipperMamdani2.fis +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/TipperMamdani2.xml ./XMLFiles/TipperMamdani2.fcl +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/TipperTSK.xml ./XMLFiles/TipperTSK.fis +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/TipperTSK.xml ./XMLFiles/TipperTSK.fcl Import: -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/IrisMamdani1.fis ./XMLFiles/IrisMamdani1.xml -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/IrisMamdani1.fcl ./XMLFiles/IrisMamdani1.xml -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/IrisMamdani2.fis ./XMLFiles/IrisMamdani2.xml -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/TipperMamdani1.fis ./XMLFiles/TipperMamdani1.xml -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/TipperMamdani1.fcl ./XMLFiles/TipperMamdani1.xml -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/TipperMamdani2.fis ./XMLFiles/TipperMamdani2.xml -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/TipperMamdani2.fcl ./XMLFiles/TipperMamdani2.xml -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/TipperTSK.fis ./XMLFiles/TipperTSK.xml -> java -classpath ./lib/JFML-v1.1.jar jfml.test.ImportExample ./XMLFiles/TipperTSK.fcl ./XMLFiles/TipperTSK.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/IrisMamdani1.fis ./XMLFiles/IrisMamdani1.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/IrisMamdani1.fcl ./XMLFiles/IrisMamdani1.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/IrisMamdani2.fis ./XMLFiles/IrisMamdani2.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/TipperMamdani1.fis ./XMLFiles/TipperMamdani1.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/TipperMamdani1.fcl ./XMLFiles/TipperMamdani1.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/TipperMamdani2.fis ./XMLFiles/TipperMamdani2.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/TipperMamdani2.fcl ./XMLFiles/TipperMamdani2.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/TipperTSK.fis ./XMLFiles/TipperTSK.xml +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ImportExample ./XMLFiles/TipperTSK.fcl ./XMLFiles/TipperTSK.xml + +Circular Definitions: + +> java -classpath ./lib/JFML-v1.2.jar jfml.test.TaoExample +> java -jar ./lib/JFML-v1.2.jar ./XMLFiles/taoFML.xml 1 Class x1 90 x2 60 Sumx1x2 150 +> java -classpath ./lib/JFML-v1.2.jar jfml.test.ExportExample ./XMLFiles/taoFML.xml ./XMLFiles/taoFML.fis In addition, notice that you can run the examples above by calling to the related bat files in Windows OS or by running the Makefile otherwise. diff --git a/Examples/XMLFiles/taoFML.xml b/Examples/XMLFiles/taoFML.xml index 0af4e90..2d2de4d 100644 --- a/Examples/XMLFiles/taoFML.xml +++ b/Examples/XMLFiles/taoFML.xml @@ -105,7 +105,7 @@ - + Sumx1x2 @@ -121,7 +121,7 @@ - + x1 diff --git a/Examples/lib/JFML-v1.2.jar b/Examples/lib/JFML-v1.2.jar new file mode 100644 index 0000000..ff8b6c5 Binary files /dev/null and b/Examples/lib/JFML-v1.2.jar differ diff --git a/Examples/main-jfml-CreateInvertedPendulumMamdaniExampleXML1.bat b/Examples/main-jfml-CreateInvertedPendulumMamdaniExampleXML1.bat index 64c1aef..c461d10 100644 --- a/Examples/main-jfml-CreateInvertedPendulumMamdaniExampleXML1.bat +++ b/Examples/main-jfml-CreateInvertedPendulumMamdaniExampleXML1.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateInvertedPendulumMamdaniExampleXML1 diff --git a/Examples/main-jfml-CreateInvertedPendulumMamdaniExampleXML2.bat b/Examples/main-jfml-CreateInvertedPendulumMamdaniExampleXML2.bat index 4c3297e..2aad87f 100644 --- a/Examples/main-jfml-CreateInvertedPendulumMamdaniExampleXML2.bat +++ b/Examples/main-jfml-CreateInvertedPendulumMamdaniExampleXML2.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateInvertedPendulumMamdaniExampleXML2 diff --git a/Examples/main-jfml-CreateInvertedPendulumTSKExampleXML1.bat b/Examples/main-jfml-CreateInvertedPendulumTSKExampleXML1.bat index d49e39a..c8cd0d7 100644 --- a/Examples/main-jfml-CreateInvertedPendulumTSKExampleXML1.bat +++ b/Examples/main-jfml-CreateInvertedPendulumTSKExampleXML1.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateInvertedPendulumTSKExampleXML1 diff --git a/Examples/main-jfml-CreateInvertedPendulumTSKExampleXML2.bat b/Examples/main-jfml-CreateInvertedPendulumTSKExampleXML2.bat index 5c1fa28..8437d3a 100644 --- a/Examples/main-jfml-CreateInvertedPendulumTSKExampleXML2.bat +++ b/Examples/main-jfml-CreateInvertedPendulumTSKExampleXML2.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateInvertedPendulumTSKExampleXML2 diff --git a/Examples/main-jfml-CreateIrisMamdaniExampleXML1.bat b/Examples/main-jfml-CreateIrisMamdaniExampleXML1.bat index c8592dc..14fa512 100644 --- a/Examples/main-jfml-CreateIrisMamdaniExampleXML1.bat +++ b/Examples/main-jfml-CreateIrisMamdaniExampleXML1.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateIrisMamdaniExampleXML1 diff --git a/Examples/main-jfml-CreateIrisMamdaniExampleXML2.bat b/Examples/main-jfml-CreateIrisMamdaniExampleXML2.bat index 3ca691e..e0367f0 100644 --- a/Examples/main-jfml-CreateIrisMamdaniExampleXML2.bat +++ b/Examples/main-jfml-CreateIrisMamdaniExampleXML2.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateIrisMamdaniExampleXML2 diff --git a/Examples/main-jfml-CreateIrisMamdaniExampleXML3.bat b/Examples/main-jfml-CreateIrisMamdaniExampleXML3.bat index afcd530..be99329 100644 --- a/Examples/main-jfml-CreateIrisMamdaniExampleXML3.bat +++ b/Examples/main-jfml-CreateIrisMamdaniExampleXML3.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateIrisMamdaniExampleXML3 diff --git a/Examples/main-jfml-CreateJapaneseDietAssessmentMamdaniExampleXML.bat b/Examples/main-jfml-CreateJapaneseDietAssessmentMamdaniExampleXML.bat index 022f73a..86ae487 100644 --- a/Examples/main-jfml-CreateJapaneseDietAssessmentMamdaniExampleXML.bat +++ b/Examples/main-jfml-CreateJapaneseDietAssessmentMamdaniExampleXML.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateJapaneseDietAssessmentMamdaniExampleXML diff --git a/Examples/main-jfml-CreateTipperAnYaExampleXML.bat b/Examples/main-jfml-CreateTipperAnYaExampleXML.bat index e2a2202..1ea6f38 100644 --- a/Examples/main-jfml-CreateTipperAnYaExampleXML.bat +++ b/Examples/main-jfml-CreateTipperAnYaExampleXML.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateTipperAnYaExampleXML diff --git a/Examples/main-jfml-CreateTipperMamdaniExampleXML1.bat b/Examples/main-jfml-CreateTipperMamdaniExampleXML1.bat index fb7f41b..282c886 100644 --- a/Examples/main-jfml-CreateTipperMamdaniExampleXML1.bat +++ b/Examples/main-jfml-CreateTipperMamdaniExampleXML1.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateTipperMamdaniExampleXML1 diff --git a/Examples/main-jfml-CreateTipperMamdaniExampleXML2.bat b/Examples/main-jfml-CreateTipperMamdaniExampleXML2.bat index 51e2938..2cecba1 100644 --- a/Examples/main-jfml-CreateTipperMamdaniExampleXML2.bat +++ b/Examples/main-jfml-CreateTipperMamdaniExampleXML2.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateTipperMamdaniExampleXML2 diff --git a/Examples/main-jfml-CreateTipperMamdaniExampleXML3.bat b/Examples/main-jfml-CreateTipperMamdaniExampleXML3.bat index fe4490f..2756bd4 100644 --- a/Examples/main-jfml-CreateTipperMamdaniExampleXML3.bat +++ b/Examples/main-jfml-CreateTipperMamdaniExampleXML3.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateTipperMamdaniExampleXML3 diff --git a/Examples/main-jfml-CreateTipperTSKExampleXML.bat b/Examples/main-jfml-CreateTipperTSKExampleXML.bat index 40b29d7..50ba306 100644 --- a/Examples/main-jfml-CreateTipperTSKExampleXML.bat +++ b/Examples/main-jfml-CreateTipperTSKExampleXML.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateTipperTSKExampleXML diff --git a/Examples/main-jfml-CreateTipperTsukamotoExampleXML1.bat b/Examples/main-jfml-CreateTipperTsukamotoExampleXML1.bat index 0decab0..234b5dd 100644 --- a/Examples/main-jfml-CreateTipperTsukamotoExampleXML1.bat +++ b/Examples/main-jfml-CreateTipperTsukamotoExampleXML1.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateTipperTsukamotoExampleXML1 diff --git a/Examples/main-jfml-CreateTipperTsukamotoExampleXML2.bat b/Examples/main-jfml-CreateTipperTsukamotoExampleXML2.bat index a7b6055..7f3fa87 100644 --- a/Examples/main-jfml-CreateTipperTsukamotoExampleXML2.bat +++ b/Examples/main-jfml-CreateTipperTsukamotoExampleXML2.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.CreateTipperTsukamotoExampleXML2 diff --git a/Examples/main-jfml-export.bat b/Examples/main-jfml-export.bat index 19ad666..189714e 100644 --- a/Examples/main-jfml-export.bat +++ b/Examples/main-jfml-export.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.ExportExample %1 %2 diff --git a/Examples/main-jfml-import.bat b/Examples/main-jfml-import.bat index a4a75a8..f198865 100644 --- a/Examples/main-jfml-import.bat +++ b/Examples/main-jfml-import.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.ImportExample %1 %2 diff --git a/Examples/main-jfml-test.bat b/Examples/main-jfml-test.bat index f5edc9a..f5eb67e 100644 --- a/Examples/main-jfml-test.bat +++ b/Examples/main-jfml-test.bat @@ -1,2 +1,2 @@ -set CPATH=.\lib\JFML-v1.1.jar +set CPATH=.\lib\JFML-v1.2.jar java -classpath %CPATH% jfml.test.EvaluateExample %1 %2 %3 diff --git a/buildJAR.xml b/buildJAR.xml index 6b764b2..8c1fe05 100644 --- a/buildJAR.xml +++ b/buildJAR.xml @@ -5,7 +5,7 @@ - + diff --git a/src/jfml/jaxb/FuzzySystemType.java b/src/jfml/jaxb/FuzzySystemType.java index ccbb624..ac48543 100644 --- a/src/jfml/jaxb/FuzzySystemType.java +++ b/src/jfml/jaxb/FuzzySystemType.java @@ -161,6 +161,33 @@ public List getRuleBase() { ruleBase = new ArrayList(); } return this.ruleBase; + } + + /** + * Gets the FuzzySystemRuleBase from the list of RuleBase by the parameter index + * @param index the index of the rulebase + * @return A FuzzySystemRuleBase or null if the index does not match + */ + public FuzzySystemRuleBase getRuleBase(int index){ + FuzzySystemRuleBase rb = null; + if (ruleBase != null && ruleBase.size()>index){ + Object[] RBs= ruleBase.toArray(); + rb= (FuzzySystemRuleBase) ((JAXBElement)RBs[index]).getValue(); + } + return rb; + } + + /** + * Gets an array with all the rule bases + * @return an array with all the rule bases + */ + public ArrayList getAllRuleBase(){ + ArrayList rbs = new ArrayList<>(); + if (ruleBase != null){ + for(Object rb : ruleBase) + rbs.add((FuzzySystemRuleBase) ((JAXBElement)rb).getValue()); + } + return rbs; } /** diff --git a/src/jfml/rule/AntecedentType.java b/src/jfml/rule/AntecedentType.java index 81a8e92..f0e5d1a 100644 --- a/src/jfml/rule/AntecedentType.java +++ b/src/jfml/rule/AntecedentType.java @@ -115,6 +115,20 @@ public void addClause(KnowledgeBaseVariable variable, FuzzyTerm term){ ClauseType c = new ClauseType(variable,term); if(c!=null) clauses.add(c); + } + + /** + * Adds a ClauseType with a {@link KnowledgeBaseVariable } and a {@link FuzzyTerm } + * @param variable the {@link KnowledgeBaseVariable } + * @param term the name of the {@link FuzzyTerm } + */ + public void addClause(KnowledgeBaseVariable variable, String term){ + if (clauses == null) { + clauses = new ArrayList(); + } + ClauseType c = new ClauseType(variable,variable.getTerm(term)); + if(c!=null) + clauses.add(c); } } diff --git a/src/jfml/rule/ConsequentClausesType.java b/src/jfml/rule/ConsequentClausesType.java index 68fd342..7bcfeed 100644 --- a/src/jfml/rule/ConsequentClausesType.java +++ b/src/jfml/rule/ConsequentClausesType.java @@ -31,7 +31,8 @@ import javax.xml.bind.annotation.XmlType; import jfml.knowledgebase.variable.KnowledgeBaseVariable; -import jfml.term.FuzzyTerm; +import jfml.term.FuzzyTerm; +import jfml.term.Term; /** @@ -107,9 +108,9 @@ public void addClause(ClauseType c){ /** * Adds a ClauseType with a {@link KnowledgeBaseVariable } and a {@link FuzzyTerm } * @param variable the {@link KnowledgeBaseVariable } - * @param term the {@link FuzzyTerm } + * @param term the {@link Term } */ - public void addClause(KnowledgeBaseVariable v, FuzzyTerm t){ + public void addClause(KnowledgeBaseVariable v, Term t){ if (clauses == null) { clauses = new ArrayList(); } diff --git a/src/jfml/rule/ConsequentType.java b/src/jfml/rule/ConsequentType.java index 01e3392..4d70b7e 100644 --- a/src/jfml/rule/ConsequentType.java +++ b/src/jfml/rule/ConsequentType.java @@ -90,6 +90,18 @@ public void addThenClause(KnowledgeBaseVariable variable, FuzzyTerm term){ then = new ConsequentClausesType(); then.addClause(variable, term); + } + + /** + * Adds a THEN ClauseType with a {@link KnowledgeBaseVariable } and a {@link FuzzyTerm } + * @param variable the {@link KnowledgeBaseVariable } + * @param term the name of the {@link FuzzyTerm } + */ + public void addThenClause(KnowledgeBaseVariable variable, String term){ + if(then==null) + then = new ConsequentClausesType(); + + then.addClause(variable, variable.getTerm(term)); } /** @@ -114,6 +126,18 @@ public void addElseClause(KnowledgeBaseVariable variable, FuzzyTerm term){ _else = new ConsequentClausesType(); _else.addClause(variable, term); + } + + /** + * Adds an ELSE ClauseType with a {@link KnowledgeBaseVariable } and a {@link FuzzyTerm } + * @param variable the {@link KnowledgeBaseVariable } + * @param term the name of the {@link FuzzyTerm } + */ + public void addElseClause(KnowledgeBaseVariable variable, String term){ + if(_else==null) + _else = new ConsequentClausesType(); + + _else.addClause(variable, variable.getTerm(term)); } /** diff --git a/src/jfml/rule/TskConsequentClausesType.java b/src/jfml/rule/TskConsequentClausesType.java index 2f0e985..10f0ca6 100644 --- a/src/jfml/rule/TskConsequentClausesType.java +++ b/src/jfml/rule/TskConsequentClausesType.java @@ -31,7 +31,8 @@ import javax.xml.bind.annotation.XmlType; import jfml.knowledgebase.variable.KnowledgeBaseVariable; -import jfml.term.FuzzyTerm; +import jfml.term.FuzzyTerm; +import jfml.term.Term; import jfml.term.TskTerm; @@ -94,7 +95,7 @@ public void addTskClause(TskClauseType c){ * @param variable the {@link KnowledgeBaseVariable } * @param term the {@link FuzzyTerm } */ - public void addTskClause(KnowledgeBaseVariable v, TskTerm t){ + public void addTskClause(KnowledgeBaseVariable v, Term t){ if (tskClause == null) { tskClause = new ArrayList(); } @@ -102,5 +103,18 @@ public void addTskClause(KnowledgeBaseVariable v, TskTerm t){ if(c!=null) tskClause.add(c); } - + + /** + * Adds a TskClauseType with a {@link KnowledgeBaseVariable } and a {@link FuzzyTerm } + * @param variable the {@link KnowledgeBaseVariable } + * @param term the {@link FuzzyTerm } + */ + public void addTskClause(KnowledgeBaseVariable v, String t){ + if (tskClause == null) { + tskClause = new ArrayList(); + } + TskClauseType c = new TskClauseType(v,v.getTerm(t)); + if(c!=null) + tskClause.add(c); + } } diff --git a/src/jfml/rule/TskConsequentType.java b/src/jfml/rule/TskConsequentType.java index 4aecde7..2c0299b 100644 --- a/src/jfml/rule/TskConsequentType.java +++ b/src/jfml/rule/TskConsequentType.java @@ -91,6 +91,13 @@ public void addTskThenClause(KnowledgeBaseVariable variable, TskTerm term){ tskThen.addTskClause(variable, term); } + + public void addTskThenClause(KnowledgeBaseVariable variable, String term){ + if(tskThen==null) + tskThen = new TskConsequentClausesType(); + + tskThen.addTskClause(variable, variable.getTerm(term)); + } /** * Adds a Tsk THEN {@link TskClauseType } diff --git a/src/jfml/test/TaoExample.java b/src/jfml/test/TaoExample.java index e919c9b..20848ea 100644 --- a/src/jfml/test/TaoExample.java +++ b/src/jfml/test/TaoExample.java @@ -24,26 +24,18 @@ package jfml.test; import java.io.File; -import java.util.List; - -import javax.xml.bind.JAXBElement; import jfml.FuzzyInferenceSystem; import jfml.JFML; import jfml.compatibility.ImportMatlab; -import jfml.jaxb.FuzzySystemType; import jfml.knowledgebase.variable.FuzzyVariableType; import jfml.knowledgebase.variable.KnowledgeBaseVariable; import jfml.membershipfunction.CircularDefinitionType; import jfml.operator.OrLogicalType; -import jfml.parameter.Parameter; import jfml.rule.AntecedentType; import jfml.rule.ConsequentType; import jfml.rule.FuzzyRuleType; import jfml.rulebase.MamdaniRuleBaseType; -import jfml.rulebase.RuleBaseType; -import jfml.rulebase.TskRuleBaseType; -import jfml.term.FuzzyTerm; import jfml.term.FuzzyTermType; /** @@ -53,7 +45,7 @@ * * D. Garcia, A. Gonzalez, and R. Perez, * "A two-step approach of feature construction for a genetic learning algorithm," - * in 2011 IEEE International Conference on Fuzzy Systems (FUZZ-IEEE 2011), Taipei, Taiwan, 2011, pp. 1255–1262 + * in 2011 IEEE International Conference on Fuzzy Systems (FUZZ-IEEE 2011), Taipei, Taiwan, 2011, pp. 1255-1262 * * @author Jose Alonso */ @@ -62,13 +54,12 @@ public class TaoExample { public static void main(String[] args) { try { - // Creating a FLS from a Matlab fis file + // Loading a FLS from a Matlab fis file System.out.println("1) FLS imported from Matlab FIS:"); FuzzyInferenceSystem fs = (new ImportMatlab()).importFuzzySystem("./XMLFiles/taoMatlab.fis"); System.out.println(fs.toString()); System.out.println("2) FLS with new terms and new rules created by JFML:"); - // Creating new linguistic terms // System.out.println("2) FLS with new terms created by JFML:"); KnowledgeBaseVariable x1, x2, Sumx1x2, C; CircularDefinitionType mf1, mf2, mf3; @@ -78,6 +69,7 @@ public static void main(String[] args) { Sumx1x2 = fs.getVariable("Sumx1x2"); C = fs.getVariable("Class"); + // Creating new linguistic terms mf1 = new CircularDefinitionType (new OrLogicalType("MAX", "VeryLow", new OrLogicalType("MAX", "Low", "Medium")), x1); t1 = new FuzzyTermType("VLLM", mf1); ((FuzzyVariableType)x1).addFuzzyTerm(t1); @@ -89,53 +81,40 @@ public static void main(String[] args) { mf3 = new CircularDefinitionType (new OrLogicalType ("MAX", "VeryLow", "Low"), Sumx1x2); t3 = new FuzzyTermType("VLL", mf3); ((FuzzyVariableType)Sumx1x2).addFuzzyTerm(t3); - //System.out.println(fs.toString()); - // Adding rules R1 and R2 to the RB + // Adding rules r2 and r3 to the RB //System.out.println("3) FLS with new rules created by JFML:"); - Object[] RBs= fs.getRuleBase().toArray(); - Object obj= ((JAXBElement)RBs[0]).getValue(); - RuleBaseType rb= (RuleBaseType)obj; - /*if (obj instanceof RuleBaseType) { - // TYPE_MAMDANI = 0; - // TYPE_TSUKAMOTO = 1; - // TYPE_TSK = 2; - // TYPE_ANYA = 3; - // TYPE_OTHER = 4; - //int rbType= ((RuleBaseType)obj).getRuleBaseSystemType(); - //System.out.println(rbType); - rb= (RuleBaseType)obj; - }*/ - // Rule 1 - FuzzyRuleType R1 = new FuzzyRuleType("R1", "and", "min", 0.884f); - AntecedentType a1= new AntecedentType(); - a1.addClause(Sumx1x2, (FuzzyTerm)Sumx1x2.getTerm("HVH")); - R1.setAntecedent(a1); - ConsequentType c1= new ConsequentType(); - c1.addThenClause(C, (FuzzyTerm)C.getTerm("C1")); - R1.setConsequent(c1); - if (rb!=null) { - rb.addRule(R1); - } + MamdaniRuleBaseType rb= (MamdaniRuleBaseType)fs.getRuleBase(0); + // Rule 2 - FuzzyRuleType R2 = new FuzzyRuleType("R2", "and", "min", 0.908f); - AntecedentType a2 = new AntecedentType(); - a2.addClause(x1, (FuzzyTerm)x1.getTerm("VLLM")); - a2.addClause(Sumx1x2, (FuzzyTerm)Sumx1x2.getTerm("VLL")); - R2.setAntecedent(a2); - ConsequentType c2= new ConsequentType(); - c2.addThenClause(C, (FuzzyTerm)C.getTerm("C0")); - R2.setConsequent(c2); + FuzzyRuleType R2 = new FuzzyRuleType("r2", "and", "min", 0.884f); + AntecedentType ant2= new AntecedentType(); + ant2.addClause(Sumx1x2, "HVH"); + R2.setAntecedent(ant2); + ConsequentType cons2= new ConsequentType(); + cons2.addThenClause(C, "C1"); + R2.setConsequent(cons2); if (rb!=null) { rb.addRule(R2); } + // Rule 3 + FuzzyRuleType R3 = new FuzzyRuleType("r3", "and", "min", 0.908f); + AntecedentType ant3 = new AntecedentType(); + ant3.addClause(x1, "VLLM"); + ant3.addClause(Sumx1x2, "VLL"); + R3.setAntecedent(ant3); + ConsequentType cons3= new ConsequentType(); + cons3.addThenClause(C, "C0"); + R3.setConsequent(cons3); + if (rb!=null) { + rb.addRule(R3); + } System.out.println(fs.toString()); - // Evaluate new input values - x1.setValue(25); - x2.setValue(75); - Sumx1x2.setValue(100); + x1.setValue(90); + x2.setValue(60); + Sumx1x2.setValue(150); fs.evaluate(); System.out.println("3) FLS EVALUATION:"); System.out.println("(INPUT): " + x1.getName() + "=" + x1.getValue()); @@ -155,5 +134,4 @@ public static void main(String[] args) { //System.out.println(ex.toString()); } } - } \ No newline at end of file