From 8fb48650c1409718f930c9a1a79cd0dda4f197e8 Mon Sep 17 00:00:00 2001 From: Pablo Cingolani Date: Thu, 9 Apr 2015 13:28:00 -0400 Subject: [PATCH] Improved support for memebership functions with variables. Universe recalculation added --- bin/.gitignore | 1 + .../sourceforge/jFuzzyLogic/CompileCpp.class | Bin 174 -> 174 bytes bin/net/sourceforge/jFuzzyLogic/FIS.class | Bin 12468 -> 12467 bytes .../jFuzzyLogic/FunctionBlock.class | Bin 26870 -> 26846 bytes bin/net/sourceforge/jFuzzyLogic/Gpr.class | Bin 5399 -> 5374 bytes .../sourceforge/jFuzzyLogic/JFuzzyLogic.class | Bin 7270 -> 7256 bytes .../sourceforge/jFuzzyLogic/Pcingola.class | Bin 441 -> 441 bytes .../jFuzzyLogic/defuzzifier/Defuzzifier.class | Bin 1737 -> 1865 bytes .../DefuzzifierCenterOfGravityFunctions.class | Bin 1436 -> 1268 bytes .../defuzzifier/DefuzzifierContinuous.class | Bin 3581 -> 3794 bytes .../defuzzifier/DefuzzifierDiscrete.class | Bin 2015 -> 2185 bytes .../demo/dynamics/FCLFileFilter.class | Bin 819 -> 819 bytes .../jFuzzyLogic/demo/dynamics/FCLPanel.class | Bin 2944 -> 2963 bytes .../jFuzzyLogic/demo/dynamics/FCLPanel.form | 37 ---- .../demo/dynamics/ForceDrivenModel.class | Bin 181 -> 181 bytes .../demo/dynamics/FuzzyDemoApp$1.class | Bin 1153 -> 1149 bytes .../demo/dynamics/FuzzyDemoApp$2.class | Bin 1156 -> 1152 bytes .../demo/dynamics/FuzzyDemoApp$3.class | Bin 1164 -> 1160 bytes .../demo/dynamics/FuzzyDemoApp.class | Bin 2330 -> 2330 bytes .../demo/dynamics/FuzzyDemoApplet.class | Bin 1078 -> 1078 bytes .../demo/dynamics/FuzzyDemoLayoutPanel.class | Bin 2915 -> 2972 bytes .../demo/dynamics/FuzzyDemoLayoutPanel.form | 63 ------- .../demo/dynamics/IP/IPDemo$1.class | Bin 1500 -> 1549 bytes .../demo/dynamics/IP/IPDemo$2.class | Bin 1536 -> 1552 bytes .../jFuzzyLogic/demo/dynamics/IP/IPDemo.class | Bin 3925 -> 4178 bytes .../demo/dynamics/IP/IPModel.class | Bin 6354 -> 6411 bytes .../demo/dynamics/IP/IPView$1.class | Bin 965 -> 971 bytes .../demo/dynamics/IP/IPView$2.class | Bin 1338 -> 1350 bytes .../jFuzzyLogic/demo/dynamics/IP/IPView.class | Bin 7295 -> 7328 bytes .../jFuzzyLogic/demo/dynamics/IP/about.html | 99 ----------- .../jFuzzyLogic/demo/dynamics/IP/credits.html | 11 -- .../jFuzzyLogic/demo/dynamics/IP/house.gif | Bin 551 -> 0 bytes .../jFuzzyLogic/demo/dynamics/IP/i2.jpg | Bin 16756 -> 0 bytes .../jFuzzyLogic/demo/dynamics/IP/ip2.fcl | 59 ------- .../jFuzzyLogic/demo/dynamics/IP/left.gif | Bin 158 -> 0 bytes .../jFuzzyLogic/demo/dynamics/IP/right.gif | Bin 158 -> 0 bytes .../jFuzzyLogic/demo/dynamics/IP/tree.gif | Bin 514 -> 0 bytes .../jFuzzyLogic/demo/dynamics/Test.class | Bin 785 -> 785 bytes .../jFuzzyLogic/demo/dynamics/View.class | Bin 336 -> 336 bytes .../demo/dynamics/arm/ArmDemo$1.class | Bin 1389 -> 1413 bytes .../demo/dynamics/arm/ArmDemo.class | Bin 2526 -> 2629 bytes .../demo/dynamics/arm/ArmDynamics.class | Bin 3116 -> 3096 bytes .../demo/dynamics/arm/ArmModel.class | Bin 4592 -> 4641 bytes .../demo/dynamics/arm/ArmView$1.class | Bin 977 -> 983 bytes .../demo/dynamics/arm/ArmView.class | Bin 4020 -> 4023 bytes .../jFuzzyLogic/demo/dynamics/arm/about.html | 49 ------ .../jFuzzyLogic/demo/dynamics/arm/arm.fcl | 99 ----------- .../jFuzzyLogic/demo/dynamics/arm/arm.png | Bin 1062 -> 0 bytes .../demo/dynamics/arm/credits.html | 14 -- .../demo/dynamics/block/BlockDemo$1.class | Bin 1171 -> 1170 bytes .../demo/dynamics/block/BlockDemo$2.class | Bin 1419 -> 1464 bytes .../demo/dynamics/block/BlockDemo$3.class | Bin 1315 -> 1323 bytes .../demo/dynamics/block/BlockDemo.class | Bin 3215 -> 3466 bytes .../demo/dynamics/block/BlockModel.class | Bin 3746 -> 3767 bytes .../demo/dynamics/block/BlockView$1.class | Bin 998 -> 1004 bytes .../demo/dynamics/block/BlockView$2.class | Bin 1395 -> 1407 bytes .../demo/dynamics/block/BlockView.class | Bin 7191 -> 7225 bytes .../demo/dynamics/block/about.html | 100 ----------- .../jFuzzyLogic/demo/dynamics/block/block.fcl | 50 ------ .../demo/dynamics/block/credits.html | 11 -- .../demo/dynamics/generic/GenericDemo.class | Bin 1751 -> 1751 bytes .../demo/dynamics/timestep/DynamicModel.class | Bin 182 -> 182 bytes .../demo/dynamics/timestep/RungeKutta.class | Bin 1757 -> 1754 bytes .../demo/dynamics/timestep/TestOsc$1.class | Bin 818 -> 814 bytes .../demo/dynamics/timestep/TestOsc.class | Bin 1791 -> 1717 bytes .../jFuzzyLogic/demo/dynamics/tipper.fcl | 54 ------ .../ParameterOptimizationDemo.class | Bin 3800 -> 3799 bytes .../ParameterOptimizationRobot.class | Bin 3396 -> 3395 bytes .../sourceforge/jFuzzyLogic/fcl/Fcl.tokens | 99 ----------- .../jFuzzyLogic/fcl/FclLexer$DFA15.class | Bin 1991 -> 2001 bytes .../jFuzzyLogic/fcl/FclLexer.class | Bin 69434 -> 66480 bytes .../jFuzzyLogic/fcl/FclObject.class | Bin 815 -> 789 bytes ...FclParser$accumulation_method_return.class | Bin 640 -> 640 bytes .../FclParser$activation_method_return.class | Bin 634 -> 634 bytes .../fcl/FclParser$atom_return.class | Bin 595 -> 595 bytes .../fcl/FclParser$conclusion_return.class | Bin 613 -> 613 bytes .../fcl/FclParser$condition_return.class | Bin 610 -> 610 bytes .../fcl/FclParser$cosine_return.class | Bin 601 -> 601 bytes .../fcl/FclParser$data_type_return.class | Bin 610 -> 610 bytes .../fcl/FclParser$declaration_return.class | Bin 616 -> 616 bytes .../fcl/FclParser$default_value_return.class | Bin 622 -> 622 bytes ...Parser$defuzzification_method_return.class | Bin 649 -> 649 bytes .../FclParser$defuzzify_block_return.class | Bin 628 -> 628 bytes .../fcl/FclParser$defuzzify_item_return.class | Bin 625 -> 625 bytes .../fcl/FclParser$dsigm_return.class | Bin 598 -> 598 bytes .../fcl/FclParser$fcl_return.class | Bin 592 -> 592 bytes .../fcl/FclParser$fun_atom_return.class | Bin 607 -> 607 bytes .../fcl/FclParser$fun_md_return.class | Bin 601 -> 601 bytes .../fcl/FclParser$fun_mp_return.class | Bin 601 -> 601 bytes .../fcl/FclParser$fun_pm_return.class | Bin 601 -> 601 bytes .../fcl/FclParser$function_block_return.class | Bin 625 -> 625 bytes .../fcl/FclParser$function_return.class | Bin 607 -> 607 bytes .../fcl/FclParser$fuzzify_block_return.class | Bin 622 -> 622 bytes .../fcl/FclParser$gauss2_return.class | Bin 601 -> 601 bytes .../fcl/FclParser$gauss_return.class | Bin 598 -> 598 bytes .../fcl/FclParser$gbell_return.class | Bin 598 -> 598 bytes .../jFuzzyLogic/fcl/FclParser$id_return.class | Bin 589 -> 589 bytes .../fcl/FclParser$if_clause_return.class | Bin 610 -> 610 bytes .../FclParser$linguistic_term_return.class | Bin 628 -> 628 bytes .../fcl/FclParser$main_return.class | Bin 595 -> 595 bytes ...FclParser$membership_function_return.class | Bin 640 -> 640 bytes ...arser$operator_definition_and_return.class | Bin 652 -> 652 bytes ...Parser$operator_definition_or_return.class | Bin 649 -> 649 bytes ...FclParser$operator_definition_return.class | Bin 640 -> 640 bytes .../FclParser$piece_wise_linear_return.class | Bin 634 -> 634 bytes .../fcl/FclParser$points_return.class | Bin 601 -> 601 bytes .../fcl/FclParser$range_return.class | Bin 598 -> 598 bytes .../fcl/FclParser$real_return.class | Bin 595 -> 595 bytes .../fcl/FclParser$rule_block_return.class | Bin 613 -> 613 bytes .../fcl/FclParser$rule_item_return.class | Bin 610 -> 610 bytes .../fcl/FclParser$rule_name_return.class | Bin 610 -> 610 bytes .../fcl/FclParser$rule_return.class | Bin 595 -> 595 bytes .../fcl/FclParser$sigm_return.class | Bin 595 -> 595 bytes .../fcl/FclParser$singleton_return.class | Bin 610 -> 610 bytes .../fcl/FclParser$singletons_return.class | Bin 613 -> 613 bytes .../fcl/FclParser$sub_conclusion_return.class | Bin 625 -> 625 bytes .../FclParser$subcondition_bare_return.class | Bin 634 -> 634 bytes .../FclParser$subcondition_paren_return.class | Bin 637 -> 637 bytes .../fcl/FclParser$subcondition_return.class | Bin 619 -> 619 bytes .../fcl/FclParser$then_clause_return.class | Bin 616 -> 616 bytes .../fcl/FclParser$trape_return.class | Bin 598 -> 598 bytes .../fcl/FclParser$trian_return.class | Bin 598 -> 598 bytes .../fcl/FclParser$var_def_return.class | Bin 604 -> 604 bytes .../fcl/FclParser$var_input_return.class | Bin 610 -> 610 bytes .../fcl/FclParser$var_output_return.class | Bin 613 -> 613 bytes .../fcl/FclParser$with_return.class | Bin 595 -> 595 bytes .../jFuzzyLogic/fcl/FclParser.class | Bin 85757 -> 88528 bytes .../membership/MembershipFunction.class | Bin 2801 -> 3840 bytes .../MembershipFunctionFuncion$1.class | Bin 1447 -> 1447 bytes .../MembershipFunctionFuncion.class | Bin 6490 -> 6673 bytes ...MembershipFunctionGenericSingleton$1.class | Bin 1503 -> 1503 bytes .../MembershipFunctionGenericSingleton.class | Bin 4315 -> 5314 bytes .../MembershipFunctionPieceWiseLinear.class | Bin 4465 -> 5499 bytes .../jFuzzyLogic/membership/Value.class | Bin 4220 -> 4220 bytes .../membership/functions/MffFunction.class | Bin 3189 -> 4295 bytes .../optimization/ErrorFunction.class | Bin 419 -> 419 bytes .../optimization/OptimizationGradient.class | Bin 4895 -> 4832 bytes .../optimization/OptimizationMethod.class | Bin 4207 -> 4196 bytes .../OptimizationPartialDerivate.class | Bin 4863 -> 4816 bytes .../optimization/ParameterRuleWeight.class | Bin 1269 -> 1269 bytes .../jFuzzyLogic/plot/DialogGraph.class | Bin 2951 -> 2975 bytes .../jFuzzyLogic/plot/JDialogFis.class | Bin 1896 -> 1929 bytes .../jFuzzyLogic/plot/JFuzzyChartImpl.class | Bin 10497 -> 10471 bytes .../jFuzzyLogic/plot/PanelPaintGraph.class | Bin 1272 -> 1272 bytes .../jFuzzyLogic/plot/PlotWindow.class | Bin 1390 -> 1382 bytes .../jFuzzyLogic/rule/LinguisticTerm.class | Bin 3128 -> 3128 bytes .../jFuzzyLogic/rule/RuleBlock.class | Bin 17268 -> 17266 bytes .../jFuzzyLogic/rule/Variable.class | Bin 9381 -> 10217 bytes .../RuleAccumulationMethod.class | Bin 1393 -> 1399 bytes .../RuleAccumulationMethodBoundedSum.class | Bin 838 -> 838 bytes .../RuleAccumulationMethodMax.class | Bin 1245 -> 1219 bytes .../RuleAccumulationMethodNormedSum.class | Bin 839 -> 839 bytes .../RuleAccumulationMethodProbOr.class | Bin 794 -> 794 bytes .../RuleAccumulationMethodSum.class | Bin 775 -> 775 bytes .../RuleActivationMethodMin.class | Bin 1196 -> 1170 bytes .../RuleActivationMethodProduct.class | Bin 766 -> 766 bytes .../RuleConnectionMethod.class | Bin 1294 -> 1300 bytes .../RuleConnectionMethodAndBoundedDif.class | Bin 1142 -> 1126 bytes .../RuleConnectionMethodAndDrastic.class | Bin 1138 -> 1122 bytes .../RuleConnectionMethodAndHamacher.class | Bin 1147 -> 1131 bytes .../RuleConnectionMethodAndMin.class | Bin 1521 -> 1479 bytes .../RuleConnectionMethodAndNilpotent.class | Bin 1174 -> 1158 bytes .../RuleConnectionMethodAndProduct.class | Bin 1090 -> 1074 bytes .../RuleConnectionMethodOrBoundedSum.class | Bin 1133 -> 1117 bytes .../RuleConnectionMethodOrDrastic.class | Bin 1133 -> 1117 bytes .../RuleConnectionMethodOrEinstein.class | Bin 1097 -> 1081 bytes .../RuleConnectionMethodOrMax.class | Bin 1515 -> 1473 bytes .../RuleConnectionMethodOrNilpotent.class | Bin 1169 -> 1153 bytes .../RuleConnectionMethodOrProbOr.class | Bin 1085 -> 1069 bytes .../test/performance/PerformanceChart.class | Bin 3275 -> 3286 bytes .../test/performance/PerformanceTester.class | Bin 4528 -> 4461 bytes .../testCases/TestCaseJfuzzy.class | Bin 12035 -> 13012 bytes .../jFuzzyLogic/FunctionBlock.java | 89 +++++----- .../sourceforge/jFuzzyLogic/JFuzzyLogic.java | 8 +- .../jFuzzyLogic/defuzzifier/Defuzzifier.java | 22 ++- .../DefuzzifierCenterOfGravityFunctions.java | 14 +- .../defuzzifier/DefuzzifierContinuous.java | 51 ++++-- .../defuzzifier/DefuzzifierDiscrete.java | 24 ++- .../ParameterOptimizationDemo.java | 3 +- .../robotDemo/ParameterOptimizationRobot.java | 3 +- .../membership/MembershipFunction.java | 36 +++- .../membership/MembershipFunctionFuncion.java | 13 +- .../MembershipFunctionGenericSingleton.java | 74 +++++--- .../MembershipFunctionPieceWiseLinear.java | 29 +++- .../jFuzzyLogic/membership/Value.java | 68 +++----- .../membership/functions/MffFunction.java | 37 +++- .../jFuzzyLogic/plot/JFuzzyChartImpl.java | 8 +- .../jFuzzyLogic/rule/LinguisticTerm.java | 1 + .../jFuzzyLogic/rule/RuleBlock.java | 24 +-- .../jFuzzyLogic/rule/Variable.java | 158 ++++++++++++------ .../jFuzzyLogic/testCases/TestCaseJfuzzy.java | 73 ++++++-- .../jFuzzyLogic/testCases/TestCaseZzz.java | 109 ++++++++++++ tests/junit_functions.fcl | 1 + tests/membershipWithVariables.fcl | 25 +++ 194 files changed, 627 insertions(+), 989 deletions(-) create mode 100644 bin/.gitignore delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FCLPanel.form delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoLayoutPanel.form delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/about.html delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/credits.html delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/house.gif delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/i2.jpg delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/ip2.fcl delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/left.gif delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/right.gif delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/tree.gif delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/about.html delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/arm.fcl delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/arm.png delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/credits.html delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/about.html delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/block.fcl delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/credits.html delete mode 100644 bin/net/sourceforge/jFuzzyLogic/demo/dynamics/tipper.fcl delete mode 100644 bin/net/sourceforge/jFuzzyLogic/fcl/Fcl.tokens create mode 100644 src/net/sourceforge/jFuzzyLogic/testCases/TestCaseZzz.java create mode 100644 tests/membershipWithVariables.fcl diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..d64c606 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1 @@ +/net/ diff --git a/bin/net/sourceforge/jFuzzyLogic/CompileCpp.class b/bin/net/sourceforge/jFuzzyLogic/CompileCpp.class index bc5ef849943f59382051cde09bef93352d92ef7f..4099bda3065aff079136fb86260b1396e117f371 100644 GIT binary patch delta 77 zcmZ3-xQzc)W2Q(7#J8#7&zG(m?nm3im@}WFfs^aC6*=X=OpH(>-#5Vr6!k56mXGa cV`N}tU6g^d+7l1ejkQWT5~3{76MU1i(G?Gd)b5azH3=EBR4UKdSjW^#Fz9s_z63z_v diff --git a/bin/net/sourceforge/jFuzzyLogic/FunctionBlock.class b/bin/net/sourceforge/jFuzzyLogic/FunctionBlock.class index 53b570d1facadf2dfade4452871696b361c439c9..d65e976127efc8f63e7bd384784badea5e75b737 100644 GIT binary patch literal 26846 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 literal 26870 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 Gx4#NmXTz%i literal 5399 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 diff --git a/bin/net/sourceforge/jFuzzyLogic/JFuzzyLogic.class b/bin/net/sourceforge/jFuzzyLogic/JFuzzyLogic.class index a121534313a0c3fa9401d40379420aa87f6b33d5..3bb3657bd93e4102fbd145b2db6ed51859fed1f9 100644 GIT binary patch literal 7256 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 delta 229 zcmYj~I}U(1uVJ5=aWAQi@Q4Ld#b{kxMygjwu(?UWhyX zft$N>W!$@v7)m0EuF?O5&TSiM*v!m1^UibLIX9u3u=suZ<0pU@IJgjhJF=#Bv`Y}W zHm7T)s&W;?UdvBQ^(auD)XVFPF#KLbYhh-aMv%mRqd2#Pj%%`RlAV)J{!YbIjl*hZAlQ&w);c8(ogvMVe0krK#ZM`9OmJYgn6IqXSf5fxa*x|cT-B))$%Llibm z-y1JXNMgqO66iZmedS{ZdO2Er4a5-PC>wPEedq^F@|WXVLYl`3-CUj=DjkSioY7nB*CM%8EU{M9OD1eKlDL{{AVi#~Pxn zH)cIJfBo&hplLkS_E5_>gO?C(;TIU-8y>vIa`76uVr1EnF3pcq?MLVnSEH6)nK1A^*bR^Wxi;H{ZgW}O#= z1(xNv!W7%!_rfI0@i$>6qa&|i5ZerDBzJCH8(P({%37gbt61guY*EHEb`|U)#1JT( z^^{>T#DSEYV`PA zpETz5{7zC?nl~l2vDW-qbp>Pp1xaEZp>Lrqp&Ym2E;6Mq^ipuMgRQ8IaT_}}3N{Wq VD82rnF8-p1-8YDGOf2$q@&&-gKnnl> diff --git a/bin/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierCenterOfGravityFunctions.class b/bin/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierCenterOfGravityFunctions.class index ecdd3b507415928234942502bc1813f0a96699b5..544d0828f8eca7f0455e1463b8029b6121478960 100644 GIT binary patch delta 137 zcmbQk{e@HD)W2Q(7#J8#7%bTtm>3znCng$C_Fe~ zth@}Y41AMcFi%w!W?*9wVUT7JWl&`hW6)+0XE0`vV6X&=IRixl7-S~TW2uwTWnctC d1_ov!(+xn1iGd49vVnyZCpWN)vYUfNEdbI67Q+Al delta 321 zcmeyuIfq-|)W2Q(7#J8#7@XM|m>3znCng$C_FwIhcF G=mY@MwKG2e diff --git a/bin/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierContinuous.class b/bin/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierContinuous.class index 7748bd298e2da4e78f03bb650f03b243d4a74be6..3d84fa4c87fe90659bb67af257e1a380e91463ce 100644 GIT binary patch literal 3794 zcmbVOYj0dv6k^!WNw6F-O@m^OAjGf6X~u4`haP7_buIPnYHF^SU>Zf35Xo7#8W zd6+l^LLiVfRgtJfLyIUX5>%i_P{0nND174szl2YSj|f3w?Q`!uGM)s)NcK7R+_Tr& zd+oLNxqtrT_YVL(hc`oLPBQo*-w zUgaz$Guu%J=L^=xf_=?W2yU8dMJun+aDlJGN7HMzV;9D_GZtS`@Q-IRRwERiFc3gc zp>@i3teN8aB`ddRURonU`&2e@F@+Q44)(5;M}Pv@)xPgBbgzSw8rGiafEatepSWt$-!d+bsFmH$y5wCRPRaNx0E z5Bp6+Gm}{oCKUp)$y9tv+<)3Y6AZ4{PR3#a0-9@u#*!;rnr8AITD1ztbCxMq&lrdx z%s2VsI^(q!nimRY`qgQ3!y`A$-IFe)KbDG5iq&%l8WEP+^9Di)hwyoYy;salGr49u ztI7EyWwvgeyqdN)3U<~BVML*;@_wO^vz^rwMSCq{<-$0sut&!e%@zyM>`F985NjkF z!4Zr}evT=0#HMQPbq0^%xPcQGr?||G4a>to<>%yCtB;hS3N}4xt7|#-sX8zb@ zoXHSiy^WIc$Kn@K!sBTuSXRfo3a#41KsGWZ(yU|$wa<;gZiRR6MonP4+iLzNlkIL5gA(@Xv!^o1| zMy|M0cuf+Wqh{+#;V}tUC>SUTErFbsx1@xNx-)T*1hzQ3!_2PCWo@UxJVfk#s@wzE znwFU+$Fef{Nj3m!8iZ&fP-T-pwk!=S$i-=a6go=JS{i&&B@I4#(g?&-?#@lA=W~S6 zlk+^Ww22M{Vi)wT$bxS76SlO%y>&@|g9peF`&&-=#y&*rfE=~& zaQf6OpV}w$2Os?Vud;aX)n9U(PZQF~Xuzs&z_Vm{5N#ZLc}ELDt{eM3HyRk#As$Y3 zknJQL^5JvbMR)#%kWV%74ZDNq%ocGagTr#*;17NXLncFa-$&2K7(V|oj+}2Fy^j|L zcJSg3QulG{k9y~-_?P|eJ({`>y4)OLlp|GS50|+a#-w&iT=Ao!y^9W<#u?9z363I# zR>JoG35_y5xaX^dAES1TX?Vlk?!gPF52~4qQ)Ql$Bug*@5|A)iEv@k?lz@k#FkRPp zu-5pcy2dkgjStoupQ&p+i#a;mN-vL*9?6JSV1m4V;czX)oQ81aT&=zZ&9K5O7Co?0 z1}(J`5<+`+0WDSmh03W4c`{ZwizN>z$+1Lc|F3GuJXa?qzkJNN#;Ttpl;&`kUVL!} z=iT8;r`*vz{cE&6FIi&dn`L;=5%@9V?+E-Mw2l6O-y!oJB5@AyqAiiwgDbCWV`v+L z9}UDQ)V{J%*F2%NJ3H8jR}`BV;O0b}MhU_X@o#XoBXB#rjf3nQc`0yL#3OVWyuCs& znTt#4;&s)_%V~(W&^T-odxd#&@D;p<>&W3I@^~8syu-dPm6*_leb-~M6|ZAcr=$zt zpiP*k^x~_yN-_evCi(sO37+x!RH)f_nq+O^noAk$w!(L}ltHz4x9ae%2wXBg!`+gs zZi!a2Cv`QbX93?mf2FM4ZgsN?ulwPW>Ld{FG|#K+Qo020OWenGLNZ}JzM~(yS?g(; zzok@GqlyF%{s4sJ%L?pjJS#B1=MXj6^< z&^&$(U-vv2qaWf)Fww*QU)!R;M}FU~!VZ?T9h8r6Vkq2TPTYzcV_u}zzkn$z3N{H|t{!)?&R&toI&)CHJLZeX~B+!CI^z5$pX&V9A{;Sl_}e{+F&YL-yqc zF(f^@tHgI*Y#%T?KhcQpjbfBpGw^MVNPB#TGxl0ym+s8d#P$pz literal 3581 zcmbVO>u(%a7609Rdp)sTx3NQP#(%L~3rQceKzl2YS&xqIW+!?R8>rFsd^4>dl&iUPQ ze&;oR{?{KL0QfTQMG;WAP`2D`wNi8P)@sEmTG>03we9V#=}OVgXA9OUAM91zaQNOF*$yH`r6Ie>oXT8=5NkT-n=?DHG6GAK}{(H*UU}s zaXuc zWR{EB`5H5R&6?QETkEb}DMvA>(7XSB!FB9%@nX#`6)Y!)%L-3uPZE`yo2aZN9D-Qq z6LC!7iloZd6b`4RoAq@vO<=~rEan&*bA8<^7Zi@s%mc#yWy6B`bp!KY;l$jEX9@35 z9aN$0C0rpZ#B3uA(^k3Y-qu;eii_}MMv6{vB%9iKvQRHO;mr?^@Wwn-_@;piVC5;Q zg;G;#vL?V?8&5pe%fe|z;h9#f zKZ09@ZyRu=5W|jDwOBA6W!*{UR2j%E0Bg8yIqJ-Y5AwU5<9)4&!O#t9bmNnU=6 zeeJZy?(vZDB|JkJV&V+4yhq_#4EXoW@V*e=wP!xUVBbpvsr>vtcw7S{37pb^3C%}) z9k89_(Q~F9U!m`Tkiu7axwv$WtH;ADyg;rv)p0pE`W`xya@FyH{N;N=bzJrje)I3Y z%Hh!6-%>27Ir98^mIe%v^g(oSJ%+OlW}NcP2+;HMyqtA`BN(PZL5vWG=KK@UplatE z7N2j-7MYTuo|6m5-u@K~*^K}4*Xa8gmu`HFi5uN7+{aXM7t_1AdLP$5(UL{6ukz;m zbpt(ahBzdiYashvottyGu8k5?LI`yC(tt(0=$kRgRkEX#u!EnXO_m4m2bf`JI?q{>C75AxNSJKQwu=oYVIM`|MoZ?Kr_UghVat4G5c<6h80%uEgx){PD}Yjh0wkOKno2((R!$& zei|#7xa9+Rb>fjZ_`4=DUu@x0Kt30I<n(|h8|t^N?Xp)%zyAhsO|6CzYToHw_w!Ij7X-BJ+-;Vy-L4-(10DOGZm5V zRAMM>(gH7KN6D8k7Lf>zH)Gu+*6R!%OFk~t=Jy^QbiSITmh5tGqkNN99frVmVpxA@KZGmYp?2BXfJf$wWX>f;se*sO@X zH*~HLTP8wGXF%!z?#~(ZUo_yx>bSA`#EE$mhq$jYa(i*{sy~wHXVEqL|2F-3=OO;f N{1*RzNUH*P?LSY5WJmx2 diff --git a/bin/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierDiscrete.class b/bin/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierDiscrete.class index a7a4699c8b49ba559b1ae2e4fa607ffcdf37441b..9d17b1e313e1bd369024b208ef1e8ef8c44a348d 100644 GIT binary patch literal 2185 zcmbVNZBrXn6n<`A*btTgp->Fg*1m=WNG;UThGH!#HZ_E5Dz#|UC0xSNm~=K9rtnjo z@v~o?sm@riI^+0BXZ#!f4M%+L%?1KQI@1r?yL;|E&pGFL&bj&P-(P+MFo|UYK7n*a zx~W>V?iA%})hWr;`doc$Ycp3Z*~Qd~T;+$oYD*`T*?-U2wW1?kX&@jl@frXIIs~HY z)`pcTTa{8O>q^I3E=z&Piif>umFu!5(4W)C>aJZ*-L-0K^VZX}Kxe@&RV=se(B=Bk z6VnZo#?DmhL{1;I%n+wz+OF8{jKFw2cU&D#y)09UmSd|d(<6%lf!XSc48xBe6J0Pn zA<$k1K$loL!Om`q#_SdC;gmnyVJAax;o&47h7H zX}Ec8dauxlg@!h~OgFJNb>bO;-jZ~i9iUZWVe!mJMp1Cign>{P7jVhI zMV{T)xS@lII7S4F4JGfwD!HNSQEkFVV$8rONj)OJiE*Tu4AT&}7;kZ2SYDS!H{FWo znN&van7D$|0$nS*BfQkbGpfX@1nY~oV0mpL&|Pq?;uE%=7DOd>T`5jEL$+#Lx9SKC z#=W4rPjx%fPTmu3H`?^)Oj<$Dn0ODj*q2Y_WE!%9gC4rzLYtmJ%nlfR6iLY#mxME)vgdf7|&$%;MMFc zPCbVxs~G#j#Ao`-vVc#(ojJvOh%!^5AwTvff|2KA z+qnFkyM9Ii@%?2Hm%G<^ibei|0fRmPbcYB;1aXo&lA?uYy+}eeGfy9`G{`@Fbx^@LV$S1GxYl5^$-xWZKh4K<{Ae3;983zs1e(}yqV;lo#+sMdeOE!Ro_ delta 962 zcmY*XOHUI~6#nkalqv1dhiMBfJ}N@#11v8^KzRr#B2=*23c9IDBPu~7#ptRF6BCza z;>JC3V}c}7L=)o*6Su~-3;%|(es?+oZtmlpd(QVb_l5tb*Z1wu$Ik%za7%|GF!XZ1 zcXPZ$bn6HT`0o`S7t(8`yUXdR!s^m&;h_rwG#YTDNkEM!a`h017|`J~pNsEN7h;I( zXczEVrOSntJL!oBYqyt+1`nAvB-(2yG=7}GH-(C}ZvKtIk1I35*OizOGijkz(2i#jft9<5QG z!X-1VMakf@ff>x2bJ}>*B(4~k!@PjLR9MXvpAeDK7R_}n&X+d~Tu09Qp{q=X+drVKg47qpGM!)H@N9HekltWcwE#Wb!D27V zgJ`qBqE;-j2NppOdfD7dL47#I>}l3GA$}vMbBID3NrLr^Dj2W?m-`tO3^Yg*6%6iR zSm2%YLJF<3k|_&Mn#6}Tp1^q;P_yk7?U4MsWRqQ_k`;{4zCom82NMF+G$Ru!kEL-s z&u~WIb@kUKsJ|vKL@&Wlqfft_%L|DVgH`Pe%oPop~JnTF62kD5qh{w gRA81?$dk5J#Q2qg{{x;_YVMjsOp$QM#nN%bgW`c!@9t%=;Soy zRcxr(^jyPxxc9%J#)4g%} zb^FTkA6ed?u;d+b(C91T$zZ|=MNXAP$OuE_H?UVqBt$8OgQkiY<$OxOJmOR_EFeKq zET0iuBFt3Akj9V`${3+%=v0QE5K@Nnkft)Cw*-1XjUh!sLe`kB{>qXF7Lg?3C7LOa e4B^Xw`FpBLD16EZ^@U*8r8(nL{&SfMSm_@RNj?Pt delta 480 zcmZ8cJ5Rz;7(KTST1!Dh9)hTV4_;zp;$U<{nTU(4OG65&sWd5#hKbRcbaHTYV$hIa z;@}V9M;X5h#1NNr`sF-&?j$q`MP@%=-vG`~S0DrqyATyf!5b@$P7|625o~)P>-?Mw&OATpc6l^iX z{%bn2yddnmE%(Xt8fM>8kz{gR2kG}qm}Q_v>?NZLli(Ny%B_rKZa1D%OGaNa`hAH2Ym?82)PV0gbDS9fjB}J zLlo6A~r=TzCFdxD>OO_FOa3NI3`tuHXzdG)+n|p&TCVP=(3hdaEK!+ kE|DfdNby}|B$vOc6Z1)8yz)-8x-z}8Qv6$4o4byG0arXfh73as*XGa(5#S6x||bNRk+pY!c+pEL8@KR^EppbOtB zID}CJt$18Kyxv%ty>T&|P*9I2WK1e3!zCF{%9v76j;9nTxGWw|D|iOa3iESf_`K+8 zB5GPjLO~5i1z1vsE+z?IgBcmK3Yst{RxrYt#}zR&MQ=fdrNBl?%)B5Tj*PSnSAsg< zpEO+C8PzQPn1sgoymnPvil!G0Yc_hmVCxpH;|a$$P2t+L#kF9gYw2mjGTbu~0&VS+ z5`w*UQkSqhZdm$AW?@=)CbVgjGkfB8LNg~d#}MP(WYC>6(h`oxE!~Z#?TnMqXKZIy zkIoNdR#ukd_NJb-{FWlU=Oh+Z(pn&t+z2bVsl&P;`g6=F{+PdUDLO&?hjRnUPR(xtB>; znFTQ~L5fMJ7OAu`S~&b?8a3hn};#JE1R87By|{Th=G)E>YHAdm&|8y5+J+ zrKYxQXBe$N%}@>dZ-hl&g0aRSFw+>ZxTJc5%d7O^Cu zZZk=Kq9Sa0-O5UDOrN{)!Zu34r$$6_nFv-?yoi@%ysY9CTvPEXUQ_Y9*vA_h*TGTw2KP@O00VqW^ivxO7n9|m6?wK>Tbi`P5n zZ86bQ7fwV@kDk%-G#F~T+}lnaRu<)%J4y0Y&CKW*soMrR#bVn^uvAN>bcq@gdSNV8~JvK*$i=tlE0_wJ637R%Lml{uazOcY=0 z5}J$R{kdVy(q?m>EyWcm5=3i{Y0O#+JW&$DMSV49agknAOQ&_7H96kj(-#{VlyJ~X zb6uF*A~ECY1Q~brQO(gzQ#U;~p8rkbxWDE92J>s1&uhuk?K1milZDs+;Ln$01bFc0SZ9^k&Y~ao00YsX&=Ja?;+LEpWb;S zgX$I8YnB zgWab>9gU$ZDlhp?-{1YCGm9!Ru;&M&1|YaR!o7ioC}$~}S%wxe*UBOsC3h$3ah4tf z+;5CC!^~Q6eTKU_i3*%zkwP4gd0BuMgE);x$xkz9&fqcT(ZZOs=;3Ouj6H{5a@fb1 zdX(JdR7gg@i~$*gGKN_0)(tfC6+|#m#4ff%4P}DnEUHBUC0+tTHDFN+A}GtzTOwYn zx%l59d!?9*tf6LV6}7if$8J5l4Yv^@YMqbVxP~S{ZgX5nWp78vE$qu;zi_yP`%0>$ z8&%itX3>(xfh{)ty>2^LkiaR*6(pdX$=5OU7Sb6ZQBe#r*BJVl;}Cxr5XUGf)-Zx3 x`?DO0oP0UX<#LLU);PWRVM9N`!9{$)wuuDK^ZEYSMt_O)V}}# literal 2944 zcmb7G*>=-b6y5R=C8`1hFd+=3Va(uQ!Vp>ll#tQj1e&CwDIHL3#gUOESC+}pfzIv_qsm&hFda)ewrL8}<7-SSYc#DnYgmSRUP7>? zbwWa@*G}mQf~Z$f2StH|%__D)k+4Y^_S)H;ZRwVq=R(4;^pQe#N_WP!DN|?O2|KBo z6Pja)_tM9ZJ7duLWa9sm!Tff%cy-1MI~KQc1$WGKbS>L0a#i~0l6uZHY%4Egr-W^S z5YO;Rc|{aZFCM#9>_J3=oY&m}LnJFtCry7ASvN!-y&h8$Mvd^_ui^j>O4!2iDdE8VkcqdPKAQYK~oDn$Fs3QnL)U_}&k z;&Cy1f_zu%_RZK81>HC&<1C3Wm>fMdT%`5x*knY^r*OqUg}fJ z<#a10A-WzBYkd8(NOULqRSaN|#fy$f2s2u1Tr9*@ToQr~Crvv~u}6_mF^mxjwXVI~ z)a@uCqqjDr5zN5~Mgo2xmXU)-@sM zSU=`!$(zGk&f8xyu2(C+(m5I9L{96j(2)?{iz=SShzzE_Qhk;4K*0^v3*Dzw$fy-w z+&njsRxtyEJD!_o!q8`Pw&RUNDs@Ghbz|kTfjW?Jb5)o@$1da&+Pqz0HW_4vh^*BB zmaFkhaXcYO$f%j{&|JN}sv;lkF^#m9<@u#z z7IP#h(cjY-AE8VRcw8?Zy6gH-Rv9d)cp0yd^CbJ^>Q^;KGfmy}93&+C^!^#fSJrwq zE6}<{J+G;_EfTFAAMJ@Jn5lv{@Rp1>B^=tQ$Q39m-o`t;60}sR+#m_bDjLh5yZ-|P z@#P)+@97J+-c#{DKH$y377p2tv0$^s%Vh1}m@JP@PX-x$q~c?Nu|=p)cU*&aOo{Fq z(-YL{E3T@0+%U?RcLV!pef{!9dsMJTUg8!7*K2C|yv|#yt}GB4UrE@z5yhqW;nG;Y zf^sx-3kCT*AizJ~AKr}niDL~{c(3yL2;aInN*wFj7NPQg(~q8M1D~5bfJTI{la5W; z%5SP~jBVJ?H@YFh06RDfai!6N9Poky3gMdC+Kbq=8gmb=_tN)K4|50YXp5W+9vkziNodo*mdD~#srx@#)#MO3~QStMk4|b86+&@ zSs76ooid)I03w9p+03U<#c_{*pjMDv#0w(*fS0~d4{)kV47DY41L8MY$^Unr-J+>8 zZA-W@xrnKINOF3ZQ~e(H5jE)}PcI=Os5KKpD0X}MUF3_H7Y29nYM?>7({TG?5w92V z?wU0`SYG?EB7ifLEzrX%E>f0#BxHcZ4kCsj5)mg+mpB{3WhD4FOtMCh;w()f1;xG? sXG%4-k@8RQDXR+LGp+`32cL7?MS@+PEni${!j~Ms4oN%{Gx!G5-vmd?fB*mh diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FCLPanel.form b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FCLPanel.form deleted file mode 100644 index 663255c..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FCLPanel.form +++ /dev/null @@ -1,37 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/ForceDrivenModel.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/ForceDrivenModel.class index 4e383f86fd34ad520ff731c905133ccbf245e7a5..757e947f6a378140791260a44343795e94b563e6 100644 GIT binary patch delta 77 zcmdnWxRp`h)W2Q(7#J9g7&zG(*x4C4CMK9q-#5Vr6!k56fl=# cV`N}tUpF diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoApp$1.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoApp$1.class index 4d77124e0ff85c8b63d5fcfd4d1123e510e0272d..0ca4df82a6860fbd85301c50dcca1c402cf48a52 100644 GIT binary patch delta 452 zcmYL`(MkeA6o&uVRcGB+-Lx#r$~G(A%ryfcx~q#2ih>}pt~S|1*)~!0HhhF-@d0{- zZZZmbfG&E1?t6-&;}*y;^PidXpYO~t{qVO`djENO15id;Mi`46OB@*q%Q7^q$Pkc~ zk;W>=8pk?E&h01NhmxXH9mi_#+h(U@xgTxsQy8cmc?CK)6ih&2*mhOjYq7A%u;Z!~ z&9=G>a`nV$w93V+y3J8gu!-WxZYU^W%Z=QE{yZ6QR(hRBGp`U2n8daxt*FEjFE%RpgJb&g5goAscOY}VIPj3}y(hX@Bp~xU* zq(OZM_UNahw1)h{EMgRotYmKWPq3j6>7}Be z4~VFr>9uIj6m;O6wfEWUthM*~a$dWaJsH_@|p8$gCm5ngeeBkztLtx>-A(zW9CNO$Z_~EXSzffLWy0AR%NjqFwamj+qcVDz@l*~?hHR~DN&F$-i6qethQQu*D}z1h=9=u40f7c zpiPrd=Ax)T$O!GJ2k<+qEYry?S{ybij#4iFlHi7iGWsoy(P;{t5Jw~oKErq93;4$G zF)2Q{F}s(3MD$P5h}!(BsT29-{^`&wEFod(*^xwwTtzGsPe2+ggf^NsgB(SiSZ1TN FegLYJM~?si diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoApp$2.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoApp$2.class index 489c2c5dcb16870d538c9890de523885624724fa..922b7c35ee463b445db41bf71b7a436262df0c7e 100644 GIT binary patch delta 455 zcmYLG!Ab&A6g_W7opGFUva~EKQ!6!dCP@iuRf`ac7C~UGCYd79Nk$9WR6;*63_;sI zp-o0XAJC#-Xx~Rfccwrd_n!OSJ@?#ud3V9vp!V_e`VOFkl7t{;1k4IZikOp-LRtcc zjD!T{1uO_y6p*!hG5b-I<*I2K)>c#RbPW5`a=y5GMLzZEuvjeZJJ~XL=7~eT`l?p!=)e6 zCZnMCEdu{b>*&lFc;Vi2U(S1;d(M3bJ_aLSzi%G^Dk!Uv7}iCf)e;#JK88rcy0uD8 zt9?~Ex@g$-8x?+WC#9Wolyk@kX;2Yx_Dr@RQmi7*CB^xy`c;fER0)*Vtxl`7)oJb8 zt!ouA@y#~P045khZi064vfku~BcWo7Av}Cn2xo0!sqvQx_ZD4|qFe&;ajMC`>&d4KEjJ?A+F`~x!3nt}W1G9&P zSEPnS-E&o_vWh5b9yK|r{HGEFOUQb31v%uY2N}!6mQcV7MIX&x#46o5x!ksC{Q-7= BLrDMt diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoApp$3.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoApp$3.class index 7e4b1d5900ebec1dac362ed3797b4a452780d13e..a9833a08f4d7e8eaac8398d31b07e2315dbac6d4 100644 GIT binary patch delta 451 zcmYLG%}&BV7@XY#TWX~h6;V+U@ehF_Bt{RK00-m2a3-D#sV3MU0pitg^Wddvyz3)y z5u=F@;KA4M?gJRV78A1BZ)SIAX1~oogzv+J&)>HX07VoPgt02HCXke|t{{aC1srJw z32X{%32Y1OID?q;Tu{}scH8P!ZL`<2oUg9?%^!7vT@@MZshEPwaO4ho#_cdo8uL=F z-09d>pFwNbH_dCquldWSEs#}_L*6qQDhk+VI3#x|PL6bmL2sG2reT}yE2GwESsck>2(YWJ(bg>25B`-%phch!ORG3=pRR@ zhWyQAXv94!37{iN$S{jJs-F1*0Z4@N@8I>Q6b-x}D2)(0&%Q!T!s-!URi=ard8>YE oa_sz1r3@M|%GK$n1;nXM35%4?v4my90DZ#>W{4@Ik_iF%4=lk%s{jB1 delta 472 zcmYL_%TB^j5QhKLQVOL4R`7}lh&M!vl!cJE0F1^3acx``QjJ)F2yx*?moD5ijeB3g zjTlUP0N=p(aBZBnCYKN^z2*3TnWvo(6lE5P*LqxzjEV8PdW@T$!^^2Hcs1PR?Z<)RJm0EY~ zfpOgv5%)4$l{%QlFn~FRh^KOG;k<21Siq8qMaoQ?H%xsnkdeT$9pdZMTEU9bI%PNc zL_k6YSrM!D3s(_jtYO{0hGt%(n;~!8?m6$U7hIxL}L9&^D zM|wgGyQ&&h))7O)rKY^fe=0GsflZe#U<)~#fyXwnIpncJ-bafUuuCtARLdd{7o@!?$xG5)mf;nNu1aJ}G$GBTj=Tf59zIrH}WO z>{*8+i4O5UOK2QZ_(#N*28%%(@bXSUR=FJ0m=O<^<~oMxursw_-;h*6+>acv_HoRj z$Phc@O?bh!p3*GQ-3B$t7QD$BnR6t=;bD&BUz9l7(5}Ph2$15qj(Ls+EOOky630#4 z;`mRVcw4GvY3?Akysj(55SOE;3pNctG%@W=1`L~Pl;EUju~{}047sf^QkM+qwE U#cuK&sU$&OK4ZgYA7AsI0O%RbG5`Po delta 1123 zcmY*XT~iZR7=BK6lih3&C^3bryO1rege=W2AJP`= zwKF=-xvGDl*M*s-)6CQvXY57)g?C=~8yw%WXglo1c|V?K-}ianbDqVX#g6{__OHJI z4B}S}A%>ioQgVt0RXkA>PoLKe0}2{AqAp6yg!4aXTe?wjjo#&$A! zyJAf`Ufx-&mjB~uXkmy+%4Wvhu&Ya%%lVqQVi{;gLlg`jb7;^tbTGulD;7UupdAeo z?&SCsUE+nBA~h!kQ{o97ry0UUr)*UWbR#KM^@ulW3yEw;nxhweLJbcLX~-}n4z(>> z)wP0Wt>_qFh)i2c8|DK8{Yc76gYwtU7|tfe^>DM83b#LnS2>E9WH1Puv0ZziLa>^=BmQLDA|IMa$bH@62qR)(9^Y!X%aEn( z%C>TR2ZO4XZFkjiX}j|^mVghmrXCY)h&*n0xdOb)wHXg zcoZ7mVc>;o)v8^rn67KNbg_(H6%c|h$01Lb&w#8#2t74AKcXl@mXQso_QC%kCxk{i zBSA8OBjob~0*<1Iq9|fGMyxpbDj^A3hV2}ux+S!nLldHREOZzxc zM|UZ9Y9D8c>0TeH**f}5v9tR)H`&|gBRktyM~?Vk_&6UxUmb!*3A*qB8ao7y%Px7s zs8N&hx=HEu@eTQ^k1Ovd5-+tYJ93uPfk<4#6h$%ojO(~TQ*>h))3`}-2 p_+8J8|G(Zbk|J;EmjGp)`fZaN!VVsiZKGduWaT${VCcaI-#e|R(YF8q diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoApplet.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoApplet.class index c644b0b968938c0067a6ff6b23f1fdd691ea34db..c245958d4fef603dbd763df6ea16b55bc217dabf 100644 GIT binary patch delta 558 zcmZvZ%}&BV6ot>Ul$J6;1r4`)saJ9hlD~1 zGUjzGps15t6sjabS;Z1V;N-O3Vc2N8M%}$jy01=*L2-I^w?{>%*SYfErJ}|WgF)9^ z!wlQqwzbo3H>lB#Y;Q3PGnB2K9k*00bC{@zh82zoqAFH7s<1fLu+EW$!I6UDHd99I z!oIexmVJ3{?X_&j@ow3!_rWqUL!JD1hf>kIkt%%@$T_Dm87)Fm43H*E6es9p(JpF= zIRLvSAt6pNI7~*7AkDuoU=mYwVwfH^A3zz_a^^FnqqrOo_)z2lf{##5^8sq#hvp+R z=0?d5h>)N`vPl2n=SF;*lc>VnChfwUCRjf7F-QClkcUbGjy-B420fEtH2y-uzab@p Ml>ddyP`8Bi7l)fcp8x;= literal 1078 zcmbVKYi|-k6g>l5mTp(tLZuHC+Nv#}GQJaoF(H^H8e-HM68$!XDQ>e5vO8GYe`TUH z(ZnC%k22obB~Y7wX!>DhXU^Pv_S|#tpT9qU19*&wCQ=N~e5rU848yM655m6W2Rp;# zidZqROl4^AxGTuHmMfyj z#wymx(!NyhWzv#nw5viXJceqeJq;(2{BBee$O-r>e=t-@Xv4xHu4|`mFszQV&V+ob zc4om)wlRZ@g$>*^vB~i0;uTJ2!Nx7zX2_E0x5Ae$L$NZ}B@PvD1-=s0t&n6fY}=@y z%8-ks(l64FlNgrAI{#16&7X;s2$j}&*G5fu--uK&&;Yk_PXpF&Jia@Qo`j`|vZRG| z?HUEsFwxXAT2wOa2Aye`XrHAUr*HgLJAw6$fD~-nGclOM6*}8V0CJe88^gjR`5jT} zSz#z&s7;+DbLkuJaqo_=Fo6X>4Cd|$zBq|qu zrAo^eAN&D6S*4ULmQ+z?mA?3+)YCJYFta2m_6U=-(-lUL0J zMHT|yRs*JLE~vL@8Pq=t7jObMhHY`G|~*}P#bShtMwqV1N93*(k6 zogRS=fi)A_0@);D(wdo(MKwlPvm&YCn$Fs;9rOxp>rBpwI1i~c2fd;cXfi#z!Cx5JRT5brfrEx^nNymP4>v$Erb#y6f zA9hplLI@nDqth*bzYe@URN;7cozF;ysAXFgfk73o6N)Zs77 zAmUNr#34vR)mf`u3d33qj6u&0EM5V>M~x_&mGieFq6tw^?4spbr5bWiJcC$i_V+t> z$(`fTCR@zb^DY+|bgXh&^3ZGMaQ{$#Y*b)hVzX;9F~5#TlyS?q97j4KOkiW3ZzeNe zn=C109Ft(4FX$Hnx%i6FJ(>uX9Jzm0|8d7E z$mqtjuNBlT51ajy!$Uk@iAp`6jLEjL_~X93E`47{2lPtvMEwiH`ZuLMQ$Et_4yZRu z;CynCctJwDXMNtp#bO3KoG!a=s}!~oE?gRKEm-`v1he+ohqjCBXnjS)9B%S^R%~fO`qh(sTkD!~X@2X;BSJwkxw|`>r+6MGGrMN!qp`bxs%KW7P&(pob4;_3KLjr|?KaOrY11 zeyZq}yqvt_dIg!fH&R+&Udp%yE0@a4IX9JGa?Cj^S4;(rA(ArYl3Vg8O-I@q8U?oA zGZ)NU7&Hnl8XY{Gp{py1UCBSY(+2;m6$eXXJuaTDAuf$ROFg2T8`!S z3he5PA_9I-SC%#h-MoyW0WCV>XccJa?8-JnpiRdHG{w2wrenL}v?yhR?%cfVNXIV< zv}P=)RonctaD)0b4&AKmBeA-sLIB%YT{DnqMsUc9p7Zc zJtj`sJ+9+joCxiPNP+e+(SdwOyJ9+KA;2`Vg3o9;EwHaP5;c|&_S;s$nPYZ!oW(f- zEi>Fdl%5zBI1uq?RSbh+;DU}GTx8LNv79tL)3&7@00c78I$T{%G~Tr`5p6Wri#`pP z1rDv{PXwT&9|HnSW2i~SPtRi_s`dWWF!{94Fuj-h@`vN*IUu{8wTur*G z%%wkkxS=9}4UUOJqtuD6!(KY9y1LYga&>Fl*ojZff{Q z;K*7vPzO<-d@L}qeoyKY@jbc)Q^Rcmqt{R(NSX)@xxY-DC&TRA5s<`h55+)2_X)ZpK$;0zo=uvn!)< zXT5MZ5(VN@!DJt?)I3Y9Ho%XmY*S&{;afato5iB!cx$e{of;kr?5Qn@TGxZUz=q1Y zIT8v+qOQs`d|o#xYSPN5==BQYyyFz-|4IX5YJ_taQ-d&AIXt;GQX-B`{OUYSkRRjP zVm!xYBl!$lxY_zsAism(t&|6L^1F+}H-XLA&6A=8C{o|ziTJ>pAeFxhp>9#6Wp$T7 z4C7~Pd4`1X0_`);vF8~&NJ%vQg1u!NegR`f9iOuu)S4_Kl}tXx$uiD2w23d<9{pX$ zr7{LE%Jd)Sy`xFv4G;V#C#i}^}&Q(Oh_xQb u_2BVUz%dj96Fy2@4Hm>Hei!-@Sme6IAKzZC%T#}Z>!)0A;WK>Em-q)jv?FQ& diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoLayoutPanel.form b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoLayoutPanel.form deleted file mode 100644 index f6877d6..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/FuzzyDemoLayoutPanel.form +++ /dev/null @@ -1,63 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPDemo$1.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPDemo$1.class index f664909c0e90e0012fcbd87d0c2b3b89483a5d8e..c9391804a45aed3e40abccf17f5ac55c25f82af5 100644 GIT binary patch literal 1549 zcmbVMTTc@~6#k|yRNCdLfFcTL)lx3Y)p8TT7Lt-;NHE0LWp`|sYa((bWnJ9`6 z#%F(&@tZD)(Ztwpc4y9+IeX4`zH?^2|M>D1zzm9QXh$Z64m?WX0UjsuB!vXBN*Pr{ zPN`!`8c$;)+L%<5p2SoV(*mtw)ebUK0`p~8hI-%~`lfv2`4y=jY#yGSotC|dZR(b+ zdAfD#8a3Mt^wJLBBA1rwV8wRra8+O{+mwg$fpKK$j^S4H-O#t)%JS%*K%(GTQlPVJ zyYl5>ZD0DYjD3eIJ!Q`{oIS(0m43OHP)P`ACD)aH!7+kBQq4DmCo|2QVkab|=Wk>L zWSF7txjWJ)M>S~)3}qub<2cmik#s|Sy>7ChWeo zSW9AE!walwC}5G@(V%nH92vIPfJ)*-4~~gnU*8Wxp9Dq(3CuR(RF%N83Z5JKo)eU6 zZykaDs03GGwss6xI(6!MFN^bMd!-E1lmYvGiiNH=*SMn%v{#*LHdc!-0~rd$v#QCj zP|PS4SIV?f7Mg@qD+E3#S2IxlME(R~%zN57Yw3Pb*@fq=NNSvc3Qd+4*Qt})(BB|{H zDS=2%UqBPMM$v~Bddf4A1&r{-P4K`i^1LZjeNmKOsFrXK_lY5nA@0VAdW3U=_xMBf LQ%Z5Koim@GgczS% delta 627 zcmYjO%TC)s6g^`*nAnphJX_iV0bEE-APETs?6#Y90}2udDPrq}Q2+%;!~xVz`GPLc zY+11FqKir`k1ndN`wd-m*^j8IUMCf)Eql(Hx#vF4yyHL2*!MqQz5*!Xr4B_NE32vw zO}TtR2>J}Dh;it6z%Y`k9D1i-w&D5p>`uFN;Md)B_2O5KmE^WsOjvoB zWR~YQ{WnL=lR(zkhH2mt9_tumD9B^YmT@f_=Xipr4EOat zVo$NeP?uZk>sa+boVg})Nb1PTD=j|}k^(1lsPMp1*vd}ZYm4$eO)mE22euXAaPeIJ zRu<3sy6=ltx#0zY2#_S}R5F$&5}|*D6#8`Z(|(jtnRs|^+Vh`b*qIyfkDZ`6{f$mA z4T}O2#78^a!~h0~kqAQ=raig~I_oApe@pqo8jk%5#w{Lx!}v8Od!&nIt})j|^LNNH z++(t#*T5*121xjM`4Wi~lC06H(d9TK38!K7cAmd5 COk|4y diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPDemo$2.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPDemo$2.class index 5e1d29c0721460db424a9da2707330ad9be43745..a388c3f4f3ccb36e93f45c584674194b887a49af 100644 GIT binary patch delta 687 zcmY*W+fEZv6kVq??cm|GPA}pOFDOV`&>33VX}wU9QUieyY||JYOolqCz@!hIqDB*u z7kx3t$^3_jM6vO~_{?AUBgQ@DQk>-Mv(MUV?Y-ulcjB{H+W-6W7k~^Zrx3<$?~DkW2O25vSQmg9`( zb=`{wRt$!?uX?39FV{)8Shd%mS#5@arq!vN_Ljv!!iBytr)L<7-j0-yms91FxXw@@ z+?XUZ(zmi~cAircbB+F8PX4Dc$i!P|Yn%9v)v1|n8amr*+BDQ>)^U{{Ap(ZeV5;ih z5WP)+Rt#}M6O_%+*++PK;yYOS2LfMvoHGo3?G4#zAt5iK+~9R{fItbqKS!5 zl6m*RA7DbF*pPtw>M!ug#9!f?@y^m@H@TTR_slux-n;L`D`EZocXR?EhX)2UhP?d7 zvwg{%26P5%$9?MBRkyZfuWamim4<V_uMtd3?ddB@7t2%n((!&u#zN zHW@!GRkt_2y1*cYh`Hr8%5L?E7g!M|fuz7NMnch?JmOP5Wd)@K(#V8Ro?$}yEvFq5 zS8?6IHHOY`$R)S&NWjK8sk<9KgPwBIPW#OIi$C+9VlS0sP9Tp$C`oBO7~!Kn%?*+l z+N^1!h+6_vn3liwgnZ3PZ31&}C(%_hU!%R1Xvp=Tk@%@us}Zur dZQP+&I0k2kpy4j=(W%o$XK|l0HLdEMzW)yZavlHx diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPDemo.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPDemo.class index 23b322726fdf168ee62277f7c44ff9d08c499b26..ed50eb1d3825022d00ef7a396000c5db97752cca 100644 GIT binary patch literal 4178 zcmbtWX;V{Y6n<`Y!&MX!Tr2HR4FL(FsEAb%(8dO&LQ%9Xmv9N!CO0&>tah*6cf0S) z59l&eU|ME6{n+Wh==6WIea^iJgh*!yX5iiKd(L^z@}6`4{O8x-05s#f4QPZe!>9}i z8OCHVWVjhb1W))*-JbpH?Dv(oeC+`e@#jY}2o)(m%pf+&oDO0$#^vxy88T(a!t!In zkI4Y0f~dlD5Zf>l#4gPGaZ6^BJr%&yLF~aZzV@iY+ShL67N-UrseU{g#6CRd$MZpi z@Pce!6m+*`^-=&Y`|*k&uPRWZrm1H-lUg>bXBBugGm+F4C|wFRWGyXY8D`>=f-?KO zKWU8U83o&7H?>J^I+C5@*T^~NxJ`lYgkc)iNd-GX_Kk>~n`6Ys?_7mYAtqk!*S*6W2%6nS>s> zd1hjEb|#ii81cx6o=QhXW=t(*#IuoTAOE^|L_{vb%)>1PL%7=bcv82h?PUcU1$qym zC8MeFq=N0Ms~{Q#M&n6aEoz~SjC7_=E0a!U9lC0VZpk=(nyDw-gv=Y~J#wyGX+7tH zg3V-Q>y+n5^x1KuOli{{W`gutOCP5#Jfm8ipf_f9t0Qh1le#0=6SB?go)JF=61p{D zSYp=7P@Ut9Bz+j6C+IU;CaA^ZdNy0z)YPP4EVM5B)|EhIn^rtBO?i3Y2Sxa?bqZ&Q z=J_-WpZw;KY!d5aT7pJ{hCWqb$isygTAG>_w5|_BR~W zRlJ3_RUDG-5gb);c|h6@(7vPKP>HnSb_J(Oq$<+b2L7&!_i#tW`?%xB2P!_q zM+&yCNUf(QEGx|v)>5K4Nq@DBAn%3l{_X+M^kW%5QSm80W2#*t#Lhs)hcRtfXR`7! z^(6J z#bGbt33bV?oV&g;BWiZ(iHt5qr*Z8;>O7(VS=ci9f=dDG;1m$&N+DZr4DK$7!mOxt zOL0w`cIkGrHY*6{S^{m#igcz^<7rbjt+rfsU3ti+BX_y5>WUC=C>oV{y;YB-Tcqh2 zV>Q=f273bbZwek<*>>oYgcezO$=0NzFulRwJw7vu1}|C4>Om1B^EV9V;mZXD;T#<_+zoZwCx;)igO zOk{Nm?Yym^1E+Ir=is&JwQwZ@b8vGC&cPR6ggUfvGd}xV8>F2*zk80 zFt1)>UX3$2OQs$?yu|!(+DG7CU&Jn2VRui%BK8bb+_!+e!n_hS=PL0)tG5!ht$x~P z-_VwSk8Qyp3)nvg7qxdSA~Y0UK;1mTvgLpMJQ^BgEgb3_R)TCq8O3!YKrmH=vy))< z()+b|gi+B$y$5j~7jX$gxP~jXA}8s5LR?bhdQOo5??uVOMK0Yq$LMmCS35a1Q>|Lw zk8$Ov!aeBCS+k3`#hPjX*kTi2C&n8ECRCRstHjn$P73<)XpZ9nd(TL(IPfDGyC6~P z;~}8iOjLXAc9?7q-~vOyacv|=>LnO&G4a*{VlM_H+)4Zx?UN^#PzNKJ!TCdx(}(8|=&XLVN{}=Onk$uTGZOf0eI!b*-I8<#$X*n0{Pk7$`K}H3re$ tD!A6B!i`le|34TUpD(*j!|*DSl{H9aK*eq6jxc8c72Jn7%dg6r{sXmC_ig|H literal 3925 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 diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPView$1.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPView$1.class index 1a05a3909514b6c7f0bb72528fd321129f73b080..b48bd983273d16c16f9b31ae666f73e5fa8855ef 100644 GIT binary patch delta 465 zcmYk3O-sW-5Qg7L+OA!!Ja(r(-^t||iS3KAO%W5^3^Dr{j}p{kt&H!2)NO`B?w zRm%~~s?&;}sN5rD?t<<`qWFX4k|4vNd-Bk^368piY}NOj7HpnT@VI1I`UQ?mHi>Z% z6i0_Jc(dYquORmg#xrLI3hZ-S0~}+5{oJ4mlPCf`7G#1WE}6n~3TrZ4!z}j&{) zW%|heBV}^$Gv;&zYYniv6Em1)8u5dF)H>^$N<&OD9qoLCK|=b_%<#vQ Ln6D=%?oZY)$b2un delta 461 zcmZ9|O-sW-5C-6PlBR37TN}S>Q@^5CO&f%YRy-=A7!MxBdJsf{9;8Ckd+**#eu-c! zc<|;$|Bh#IHr6T_q%(mL zu4g#ffx!8OZBea>FLaAz#}vOa zea!#I0)~$htnfWBz<3m8tT0Dd9kO*MHA}xtnj3(VKLia4LfK0U6Klz&hYFu5{&_i6 KIg*Lb0q_Nt&@Tx9 diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPView$2.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPView$2.class index c4c2ec30d6c0e8ef3145d94dcc462a4991e2ddd4..f5174a78139aec0fd91fda9010eb8f636a13e630 100644 GIT binary patch literal 1350 zcmbVMZBN=z6n-usl~R$hS0+=pv5l8$5q0V?CdNrZ0*iYQH|Lhra)&k0nzm^4UoF{~ z*@yjr{itQ<7DPUnB^K!EIrpAE&w0*0<YB&wFKwd$H} zh`7HP5+ySz71QMQMoV)XPT`Ut_H>aHC~d3b@GYAYP=jGIQ$5s6|CT;f)Zxv_8HhRx7j9v&KX_;3-g=F(1%`ja|)4Lv}*Pg}WVo=Bn z(iOuv7~uu~%*% zA0Jh{rfnGw(ejMOk!!YWD=;dX^we!}n4MRUV9@r=1Jf`MLqi-0H#BNqI}mFPb3YV5 z!(g~;2iZAdsP;ioB7jxfwZkV2%X(i3xjI8)-D`+pFpO{vU{FOINe%@mhPWRF~!H+@^4d%=V(hGD6nM6&Z#3~xzsHhmEUqQNk&SN|s7hSaf? ztE(8pgo1H~g+8?7n8XyrkZD;&CtI-6pMvjXCf6{n;5x(PKNIG-ff>@eDZ)3At`&Lf z7RT+=@LO5X9ge%W$DjrxEPLd)wUA*zuT*3o7%8v)M-zr*q~HtT2$Lj~fcH5bVD`Mw zhYYR$3e8=#uQjrjQ&KSp8U^AlUa(EkeU1ebDg9GDNJ9N-xA~7amZV7)U+kNU(ArEi3mg5Ds+pLLj*CTuJit7r0-7(2+0cObmaT5pymr->E|2xXFA0&Dr3<<)F(Vgn$Dc=$mk_xXl1yJD?OAgLX{{J`7clt zC%7utLI)asZ+4J9$4o{1uZX{nalDRj$GUfWxP$^7IYMU0pD}Fr7&M6-?=hU9km|sY yp$-<$Nis-KGTTJ*o|624DSZ5cNIN6adPH%OK^DD&$FwHMUP+W_r$$N82KWsDLP{k7 diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPView.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/IPView.class index f1778bedd72f7bf50329fcabb61d593d73bc76f3..59643ffece5c10e7850d9ac26f57aeb00bcc623b 100644 GIT binary patch literal 7328 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 diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/about.html b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/about.html deleted file mode 100644 index 0ec90d1..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/about.html +++ /dev/null @@ -1,99 +0,0 @@ -

Fuzzy Control Demo

- - - -

This demo simulates a cart with an inverted pendulum. -The challenge is to keep the system stable by varying the force applied to the cart. -This system is just like a unicycle or one of these segway bikes.

-
- -i2.jpg

- -
- - -

User control

- -

-The user (that means you) can apply a force by clicking the mouse on the display. -The force applied is proportional to the distance from the cart -(like an elastic band). See if you can get home without falling over!

- -

Fuzzy Logic

- -

Fuzzy logic can be used for -a wide range of practical applications ranging from what wash to use in your -washing machine to the control of robotic limbs. - In this demo when the fuzzy logic is enabled the program attempts to -control the angle using a set of "fuzzy rules". - -The inputs are: -

    -
  • phi -- -the difference between the actual angle -and the requested angle -
  • -
  • - dphidt -- rate of change of the angle. -
  • -
- - -The ouput of the system is the requested force value. - - -The fuzzy inference system classifies the -input values into degree of membership of fuzzy sets. -In this case the sets have names like -PB (positive big) PS (positive small) Z (zero) etc. -Unlike classical "crisp" logic -which only uses 2 values; true and false, the -degree of membership of a fuzzy set can be any value between -0 (not in the set e.g. false) and 1 (definately in the set e.g. true).

- -

In this demo the fuzzy controller is define by an FCL (fuzzy control logic) file. -You can examine this in the Fuzzy Control Logic tab. -In practice this file could be compiled into -a program for an embedded micro controller. -

- -

Why fuzzy logic

- -

The big deal with fuzzy logic is that you can define -your control system using rules that mean something to a human and avoid -the complex maths required for some types of classical control. It is common -to create fuzzy controllers by asking experts what rules they use. -

- -

In this demo the rule.

- - - IF phi IS PS AND dphidt IS PB THEN force IS PB ; - - -

says we should apply a positive big force if the - angle is positive small and the rate of change is positive big.

- -

All the rules for the force are combined in a process called defuzzification which -which creates a final real value for the force from the degree of membership functions.

Graphs tab - -

The Graphs tab shows an animation of how the fuzzy system is working. The -coloured sections are the fuzzy sets which map the crisp value -into a degree of membership. The defuzzication of the force is done by taking the -centre of gravity of the force graph. -

- -

The rule set for this demo was created in a hurry -by the author in order to get -the demo working. -The rules can be edited -(and possibly saved but this feature is untested on windows) -using the Fuzzy Control Logic tab. -If you manage to create a better system please let me have -a copy :-) -

- -

PJ.Leonard

diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/credits.html b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/credits.html deleted file mode 100644 index ef6a20a..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/credits.html +++ /dev/null @@ -1,11 +0,0 @@ -

Credits

- -

- This demo was created by -PJ.Leonard (Department of Electrical Engineering. Unversity of Bath).

-The fuzzy logic engine is jFuzzyLogic an open source software maintained by -Pablo Cingolani.

The inverted pendulum dynamic simulation is -by Andrew Kaluzniacki. -

. - -

This program is written in JAVA

\ No newline at end of file diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/house.gif b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/house.gif deleted file mode 100644 index 31cb3347ca71d0e25cda7f87640d01ed86de3019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 551 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 K$8I+RgEasTp+gn` diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/right.gif b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/right.gif deleted file mode 100644 index 94de6cd25ee3c7cf32bbd1f6427ef60eb433d7e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmZ?wbhEHbbYM_mXkcUjg8%>jEB+I7E=o--Nlj5G&n(GMaQE~LU{L(Y!pOzI$e;sK z1X9kxl+e?^^7LE&#dEgY>fU@$sNz8DIrlC#r)kS)F3Y~L>%Cb0=7{?hYl)f$tO2QNK?eW; diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/tree.gif b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/IP/tree.gif deleted file mode 100644 index d20467cdd59912b85ae0b47981409783f8f66021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmV+d0{#6*Nk%w1VNd{M0Du7i00030|NkNW5kqoiVRU6=Aa`kWXdp*PO;7+K`2+z9 z0096j00000Pyl2A00RDukEzQG4`Xb!+S{bw0Q(Ak+^Bt~!CB-gofsP?@Z7l>9S1mU zJNu*~A!xnfkEq%dQAeIfS!6MHCTLH{aEeOT6bM`8+N@vii5wP})#;oIO&N{lZQ#XR z$0u7)_~ zh`J`3HR|^o*T+g*8|pWzyZhMd8wJcNyu@2<+=ZL0{6<{rJgk~4ov7ex?a17$of;hk z?!D<6UOp~*9*mADzRoUN{N5R>om<_?ejl7|TuqBaSU-Bv3~g#Bj-Z`L^{@fNXO7`4 zEv?Qult>3-x5ZByJ90|*v7*P2Ad!ufvJKx!FwYQ?TiMVX#)~n>v4IHhMk$;*C+*zW z(Ii%EsLRQR-MBcn{ELaoQMsi3S$w-VJ#?Q2(VRjo#BD7GlHvR2o! z1q+UAP`6RdQmuQ{u2OYr;XMSZc4A+2{07S`Y}lI0#Lfnatl87?RmgrNKW=MzvQ#=H z@eSX%TP(k&T(0}V@cYq*9P`_G;ZC^!ok{Jh<@T#ETn0?yUd- EJ4iP2<^TWy diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/Test.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/Test.class index 1e345c28e6402952066e917285d040b53409f4bd..75d612d8919196673ba3c22f5d071d0b4bc15014 100644 GIT binary patch delta 253 zcmW+wO-sW-5Ph?oWMhanODQ`*#E@ z89qGf$<+MNtL;O<)yu~bL1m-f(bIjduDC>3D1! zbRh|K9n|FI)s2}^(q@m~9~LFRad3Gq@fI@@qurf@%v2mki|Z|`Bx4~Ip?rgNePF%A cHeaIC3Q%Oi<%kd^wytoOQTdNuWkz7_59c%_^8f$< delta 258 zcmW+wJ5Rz;6#mZbha?v1aMG-!fh@4{+s?q4wq4z4Et zD8qr}yuQ~_wz7+V|KC3V&JjuoLSJ8srkeSNgsI=D+_H!1IDNY!7{@1f1T%hlcywW4 z!-EA|UF1CnC4x*}2mPn}%*8g!5<7&#D48ZvmW-dHI7=oI4;57P2VHNvsAE^6K?pc4 zusk%er)wfsi&=;Ra29_A2%b2DtK==>PTZ~2FE~0Ey~gT#%d8c<;FDkcgnx5p&Qa69 aqT6mEV8CJV{@Qel<%ejmZ99wz94!GU!6m=| diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/View.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/View.class index 524bd825524dc28e8c0507f275a8c67efc6c1cb0..ae88c5f0cba2fabf07227c764f9319c32a9fd7c6 100644 GIT binary patch delta 93 zcmcb>bb(3W)W2Q(7#J9g7zEfE_}CfvCx+~s$ZI&!QP_@+k%5tc2`Ibb*QY)W2Q(7#J8#7zEfEm?oYx6k}&#VPp`Tn*Y{7#N=+`AD6r3t wjgf(off=Znfq@mMhLwSh0i>3lfdfo)GH`)uZYZCJffuNfk%13LGBNN20Q=$(IRF3v diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/ArmDemo$1.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/ArmDemo$1.class index b5356e732050392f8d7c6972b91ec6cd7fcb1d0f..0757a8d18553ed8778be953972395d79bbf0ffc9 100644 GIT binary patch delta 549 zcmYL`&rTCj6vlsNrZ6&dTU$^>M5jopP%6$)rbt+_g6P7Kuy5#qF|{U47wlNM7w;Rm zc4Oi{To~8Bgiqir7|(Q~++@!A&Ykak-^sbZ{nx?H&p+S30~>5l;j`!yaNj3n$)n*@ zVmU9G0S^kalA~3RmdDz~$vc}!R5N?SVS2hd=w(@&3ENMsIEmMYcLe9mzL$Ob%Y8QQ z(Kb9}-C!siDm*eo#6nl;arpFAKOGpIqhr`4@#q@1NDPnZ2wS|t;o@@!gYkIqCKr$%|UDJ6Vhsb!TB&I)ih2j3EE6+ ztQRz9xT%#ksN8vZObD3emg)#|+}4=u9&65>nyrt>SKJ?zJ~L4ilb3ixfv;UMC0tof w>wBR~Ez?o0O_u47?Pm+M|MpGhxzkh=mj!KbxXV4wC4K2SHx&8$&)2NyFWkvYuK)l5 delta 530 zcmYLFT`vPc6g{)swd@YIzP}Z#+A8g$6=?+N6Y(OFK6u;cs7h^27`wxDB_zU8036spsIrq*z=gvJhKMm{c>-h!10r7p|LYxwvRqM%t%b5U$(e{Dq9ZQTA!j5Y(;Ue_CVW^eipqA~t&99V zwJ(bDnr&$u^H`7{%Iq0m_dHR{S6ts0J|gsgl}5xYD;NSHg|?1ninkET6A$ucV)_n7 zBKZJ*(|FWQr_p#!t&_Dyyr;oUgwa8aiqMHJiqSwR_am6uBM^8*6SpuP(ff+wdyM{& wi6=}k{NV({ubE6~y(|9~(LakQW-v>NDpI7WAPtA^5Y2B68A1l-7~QnK0rgK&R{#J2 diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/ArmDemo.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/ArmDemo.class index a8231c2dfa885902cea1dd3c1b37c1db48bf7a56..1c384491112c214e528e8a2aab36ad46142c459b 100644 GIT binary patch literal 2629 zcmcguZBrXn6n<{rSr!Pdp|&b2Y7$yDw1sF>YiR&Y4K0$GHmKDlS#WW)8#fy$^`H1F zbfz?;%s77bM>(FeyMz?^K=@!XbMM)k`#k44=bn2ufB*Bxp8#&+`vFYgBOX4MFo`=+ zdrlZE6L)Xy00p_r4-C&+bKD=rZ#e0sfs`-Z`Cz{k)m#DkJ^oG z%`U6k2Ca-0t(t07R9oj~e=+3zpc8YpXljnqvf6e{+p+9jP1##(zj$$2w08BHQr8-m zQa?1+hF)tas@+hQ?Zyf%<^%$|DKL4i91^THn}+5Hh%JF37Qas7j6$Pn2uzBjyQL&Y2AYaiVggI^iQt zEzMc3Ir_flafgy_4uglB?xB*S)_z=9n|`ihyP8wh9nR%MGUbJAs3d{XPf92ml3J^2 zt=4QNlM&cUUNWhvK5%Y6`52y)#}oGp>|Xyr+*fq%peOE|>{u$fWwfSqqGZ2P=DA*F zJi=oc8~9R20@DIZeOH|uFQYdF7W+oCT!H(2<9e&c&}{Z!l2OK2QB-6+!Bc^84zOEt z5894n(Z$I2?TW9}>;l#D=4xrR%$}+|Y(??4jBoI*jA!^xU|`eQwwxKt?q%}8P6TdU zT%4N#4;9*XlbGqFNc}1aH~8`kEc5|AsqbKtFZjkKYT9Esw?Q%G$PV{8za!Au3gr5b zccw7tD$HLzsa`e4s0Fzi1#b5fo);H~Q0xcR+r9tW!kF$%f93XQnQng_d#%RZzAF%< zt}2lBo4I=6D0!>Vv`o!(a($Cxef-7AkmZHmESQKz^RNWA_6%YBqviu zpF$E#G_s^A&qY^K7PGFT5Z=cJzL3Wxj{`}}9Yd}jW2l-Q8}4AFgZL|qJ~?&d#e1Dd z@AQx-y5tFbNUrJqPtH%s7m1k3#VJjMwt!mKsXo!A5M7Ei=6rpdexgRN{(=!dBg4b5 zFvgU@o|AZrIJSCdN4vD6xK8;OxZxs1oXmMBKK~7xSy6Co{8yU1v-LzibJ=9?XOAr& zLk0^zlqnb*W?5&!<2~Ro{Yj&uAn+~RJ_jr=241{0n8I3egUizKap}^Z3!3TkFL1Vw A`Tzg` literal 2526 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 literal 3116 zcmbtWZBrZ96@Konq!sE$rbOTs#<3ktEWkvTi4zO_238%vfMbJ$W79NQRvTFcNm#6K zA$?0?yKT}YZPKQBY5lF!nYNReW&+OGoqp)Y{)2vNKIbQNCh2qTV!#g5x-HD!^W1aJ zKKI;n?mgPSeR2CQ0G_~23x-0z>Id1mTBGjyFV*TLKYRIDV{vg|q*f|>*`i;mWs3_{ zw^H`zvTnVS9jaFfD{~7Gh33odyqleItEKESQnP{1erqHWHz6r;V?L=rJ2M-46dldug{G8xMuX z-8Pb9yteq+(;uZ?7LGkOHigE$HkxID&YPc}{rvhiF+OSI>!ESKjg}A%*mxLmg-s*n zs(-psneyxB+^HE~p=G4zxib@Py)5$;WhA&%o>LecdGM^?SIR*q#-DeY_jsl-$^Y&N ziEY?MDvYRLqg4VAcg&O=$4Lt(6q0N8A9aIEHcnxLx%O%dD3U337sU0njc2rau3TlM z0)^;Y;0D}}G075}^HOoOpkSS=)vq*s)@}u{faXw+b8~2Kh^4s0QruypNYM|5h^Is` zC5nnGOSEMsN7e!x59;M=X|Q`Dc4TL`fdn_#Zh-+DeDIvDp472Mwd9{_1c94C5hXcD zmlTd?CJTkae^G-~zV#=cQ8wW+W-LtKbGgPBcu6WYD&Y3aT7x-k4YydXWzTSb0e9)U zmBBb>>9BZkGJ!gH8(D{kbt>-lv(dmj(>yD$&XBV;vr)!mgWtBXfX%!~a!tohS$J7t z^ZnT!Zj@(=em#!wvXWeT5#N`*%nN$O#;bUZ1n%stUoG;+@nC#qwG{?#;5sR`%Zoph z7k{MCw^3~WhTwIchV9$q_z8)g7os<9yoI0fbO*KYFes!lUkyR7fm<(0$~HJZBrP)S zkwEXktj&1}L;rWZ$y#Tr5C1PjYX^~$KQtb=-t?$DtGj}Qw=Ik*B*t}XKUS9R(Y&sE zKQ0x-4qgP4Pn1my(gyYYU=!4moli^lJuTVwv}CK(l8sJFb~i2A+q7gu(~|8>OExn~ z=6pr6m2htIVGE|-A$mi{0i5l*g>=uRC2WylYflQ>mas!`rwm{>#1D0(USmXHla zj-r1F`$F4Op~(M<@-r&WPY14!7uVzgrY%N0??W3QmcU;S1#GGa?-{!=f7BBBO zZDMl74qlb5 z=)yMCupRGEzKch38=cC)PPGSJ>LTSN9#hvTZ(x`D1La4^sK29IeSr)=?0StP`ixdQ zZggOeu^Tz#Ao`60o-j^fpK%sX8t1WJpZ!1b3xwx;7xJcB@=+0x3sD&|} z#5ajjjPxj;Cu(E72k_%S)mDi@H(F=TK8dzguSem?ETD6Zi&Ug!Mhti=1Qfpn&b#GHf zcp}~*4}a4*{{=^rjBn}6u{OAYU(&-O`zyMJajsFvukar8_deg>0^>_AXIc2bG))Up U3m;nivBy7IN`+t3#lUa=1-E0L8vp^Dd+)j5 zv))Hv`R|j@0BFJAeQ3j-LOw6#ENm*H7{V9bfdr z$nE@+j{E$m#1UCOD%>&Q?)P!SaX%iw37I}9+(W{BSr#4^?xc{f`0!PHtrVyH_&OfZ z@u(kja7f5wLLM*0H)Q-~DNgG+VAB%CQ6wk=`tdMUDc~16yN62@@xaUjpf{qu3J>*?8FLzkLeb3we#8LS>CTlP0 zcv(Zq@Ls!FgBH=C_X^+Ze4oiO7{4)X;t%`UGE!_`=)M@qTM_+Hp+k^zSiK)<(&XJ=r?kb%Zaz#rScq@ zr5!4a-t=&t$1&ab2*G^d5>d82e+8RdBmQi#Tz9B5P74Oq9Be&vMBThJCMeUe5v>}mD(DzAr#K1=$bKq2q@JeuPT~wut1%!fh4q zCqlLf>6TqTHSjb1Ttii`vpX16?g^^A2?XyI#Dp}=U^Sid_GiCjnL8PBAAn^t;ON(p(T*KXfTe{``bD<(X@ z#dP+vOrr@Fm-Ht#NOwxA(bdJuEDBN2C{^&$a3|6%$EmqWwG-iPwit&k#WG{;7&S`s zm0}kEuxuKl)~WTAmw13pVT(Cp$I`J4Ni*u$iFm~Bw;hG5Q!G$B*d{00QN_dEiInZw z`>pPz)n~Is6(Nr#(yG7f`^}-WwT+>eN<)iq-l_w~*FG-bNb9k7&T*JaibYHC~pVP!S>q`8&dnT5zaB>0HPBimV zVgWR~6Se%(U?)`H8*GbeWQS2Bn_uJ1RN*jT+f))W}|=Mz$L@vg@gljg+HH zdY78Br>c>+RDHXw>#&HxL2`NON>=6~EBs>{H2mR#<%pChmY9xPQFrm4AiT!R<=gu)hxy^{iQ zzZJ-eNq}hb&g6j{hL0T35xRhqP(_C3)WVxVX-I!c&%h@le<+Kx&_x)#E}%Sv3bK{E zXtj?&vA&eQiVK*MLDhsM3#b@ag%ZpnHycxMBc?Odvl#FoR-+N^4ELHMcpc+b4o+&D z=dHG_FFNeWAJ(L=m%~KG3|!AvlOoXpxo`ALqGDvBcCb9sYNnn z(>ctlo}I-Fk{T`{H9|BYZXx1fpPR(BUAPjG8pWwfQJj}D_x6coX+jw_+q`*zSO!te zC{8EJS;RM&$Qp@jDY3Nkt?YzT6!%TzapxINGc2AM(O3>M`lIdqbUl8=M^IY!cr^BIHvwP-G^6=aE4Pry@o-wBkQ zWjHTlG5xfpdTAER0(8^zELJeUl>u%V?B`tp53g_4CjO9=vT2{Q*H_2Yg3VX}*Y64}lueGu;Emza3KxLqc*sDWDW6syOTL}7i;7YJH_1$&^2TlDpVA?5miwl8&wr`3trW2$tZoOdo}!gQdLH_yXI$yKRpoC){8(dWL5m*LlOo4fD_p4OOFh5B5| zyQDt#P(?)+D<_I8_oh6`qIj&RaP;xQ;rC`P^Y~8e)KY zBtOHJeoiS2Dp^&*8^kTWM6guJ_cB*~_#{4+zvLMEi1ect=_9L{W*5=M>|5Pc(OF-M z_9G8qCRZA>Sld{Oby-9xT^H>^EP#55Zs&unDeoH6>#D`C|HKWHeU3X^xZ{6!P!rbx literal 4592 zcmbVPX?qjb6@EvuG?EzG*lY@=sX|z6xmegN!I&MD)dp%45|O>_=q%(R`# zC(K+ru{@V<&30P7I?6PR-DU1E6TN1pJF#)cE-U5e2x>@NJx9e#Ls{QWyFr7N)S!0? z-s!lDjow0|T5#;Nr6DAs-Ld*K`1*OuHy}elNqqwx{FG8dbIa8W;i;AM)NIxe$UCOP zt9)B2kuTSyVd*vS6Z!I#FVR-WbX)5Sj$@K%WQUoz)>wA;PU@!jZ#HRb!3IiLn2MKh zJy*gaTy1nbVwp4yO?W<8GM2xlmZFxeq-(;^aHD}RLK-St?2NUckltaD;f`LaRNazI znY~-goGo*2vCP?N=QS+21|>(v0=3igma|DYv8*OpyG3NEGoXtMe#)pJOle6#N6KEp zz!=#JF0wPWvxG!7wObNq6=u@%_>8Jg}zS4uiUuFz$e8hK?%sV^`cR`frwaf zIc_$vMZDl^X^7xfd`d@$hKk{wZZ(~q2Daih`X`lTfQWCC!sB)W6=L;U@o595BFNhr z*-06wbh%pwx?Jv!vO!K`UFYpGP$e5-mJ!EvMb@oMr;GUayQn_L(K4KB{ zW3P?@4dX^RW#BW|N1OHuquva8*SO48u_I?Y(@pzJHOjg(4dZKSucXm&w}wgT2FL1m z5=kp%r_J6~*<9LmBG`{PGJMv+=kR$AQATd7*>9%{=~X#1<=ELw((bk$W&5>~BKz@0 z1NRQmGJUR~4dF|yrFBC4fPpWI9#xW_*}U!8d#p`4tIO^W;Xw_XVp2b1i(}Jos&D9u zg=1dv9bVvmqnb6Awwb}DZKq-J^tttOx?)bFheYr&9@X*4C7w!V3oJDTzJjmPqI=BV zg0-?`s+9j-A(;IjKPcp{Yzi3pZ{V2ZL zI>I$>uWBB7yXR5nLWZJU=MrD(Fjl%SO<5|=ftsXO?7m^(Iybt%X<)LO8qXVe0WY#3 znU0xZXHwKEeZFPjBQDJ;1E(c@%JRE&sxp4tz!a9fW$e)M({Zj8J|iM;MZxavv~nT5 zOo5Y&BPim6l$L#hy=LHbyg_rAeSOR-4O1>Pw5zJeqFGM7Y2Z%WB}w`{1J}E1ylvp4 zVtK8fACn{?k-*GUP?V9#@#YQEcKc<iRH9u zGp8ojjP#1 zm!)XQ$6JC+Up_3qBSQZt0~=5qTsF;QQ8}bCCE=B48+f3>PaF#h-rdq zaWO~ z^rGb$xk$9EJA-U>p@=&qJmNC6$uL!hdKtu=3;i78ZGx3?Xj7QV7KH`5R^K)pF!g-a z0yb~nMOk|IbnK;;X$DM&`IcqC^f4)RGi-9Sg)_qU>xO*KQtU}O$V8M>vMyjh!}dT+ zU7(12WcWf|^?gO$Uwv?F@HO~5l#u7~P9eSiww!?)f6bmDF$xSQ9OCwPbsdkRlebPdnoSyu&L zoNrB*FKwaJh_A@;0^0mY8$^XKqNly-Wxi0{zDl~Gdkbn~KUfOj|P!wYw~ zD`7Hw$zvGR&trR!cgu)1#ybypH;oxd8yW8;`PDy>$YW@o2f4hB+Nhp*GcC?qzV_N2}gXyFNgl9AuI_$d~p*^wcAqJ&Grp zG(W~+{2NC#9mlkZIIdlfC$wpNB*pQRHVaQ{bMTDTgcHh-UF1d&mC}mXJM=wMgxL3q z`FX>8gpyVV@gjaeOy?~}@Izu@-j%_-#K!Q(75EXca^5?K>mgL~_G$PDu_~34li~jl zy8IV;MMQ_@Fa5yN8h$#Ir1N-}B&i;+s3_uR!x`o_m*<%oFO0|@eJFeQ*l!HGuy}-UiUsM6Vi;3vRV8asZYd}tOO?Duxf{kW@hk6=Lo6mz zlp3X&{F?$Si@1*qM GAO8c=1M*=2 diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/ArmView$1.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/ArmView$1.class index 27dcd9c6b58a79a3c3d9c13e68f901a40908b5b5..a67f6f3cc19bec329935776a2bcd679bf354f842 100644 GIT binary patch delta 475 zcmYk(%}&BV5C`!8w7}YB(Ta#7D)>#?i!mWF#*Yv$_TtG9J$PthqX#7hdgm1&eG(JJ z#Dfpu&696qoGl;H%}#e`w!co(Z}B6XuiuYP00;0aWUwkBP?lK3x(*eI6;uT_1UCB* zy*N+%O8Ko;*gk&@I-M{+qo?@NxUC3mDM)N9%)k=ZQP{GD0vO97L@ibuY7M? zl@b|b39&OTIEoNQr6wdMf7-_erZFRsBUG5KWF%%W$0PV&aNyQCSPckq%W=X}I%yK5 zQ>%IPtqa%pJs&xqR_AXa(^MmKrFH_n+)r?|3XLzoDBAb@c!0d+orVF`i{3EKr%c{U z&ZzDnhIl0mW2B?(u&NZZS-gW`w=v51cpFpyu?>bdBP{hD=wKX09`no*7P@SONyXAH j)58aV>K}r-1R-xlhK|K3X`#StjDKJfMXrp<=K}Zw5>Gmw diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/ArmView.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/ArmView.class index 0e6ad24a17575a54a9ca75e88475ad4c0f9e4c96..f4bd5c30e3f372c7aad92e56f40e2a9c0640c51d 100644 GIT binary patch literal 4023 zcmb7HU364e75>hhnM`JK^GhZKA#Jc&lS#^$K++^sYDmgo6TlLvpw?byF3DwnZaOnb zW@u}zR%j_r|EPkk7F%1ZtrQRjgcfV7wjwY3;G@e2mk)h&`Q%zIm*2i~Gnr6at4Y@E zv(GtupZ#<8{_ee3|9j~QfNoq1A_6;z)tIcr12U%l$OPd-Rwh#cl4&6`LUKa#LEMIe zviqPYKjg>5GWn*EM=I|88_(rm5Z}V10ZM*5fbZZjA>R$)5Do`Xi^pZ-2_Z*>JSpU; zY&_-1Y!El&X_-7DG5&zc1Wzv2{Yo4`lkHA20dwLqC4x$IA-( zmQ>124<(FD#>^=Al6K5YDD;h_%xolMPo<;gemgyGMh%Xrf_I1-3bi9v z%G@@U+-Ii8jC~^8Fk(|_w~@AF?k;+>6BZr3eesU%w#*s&Rh2QbV+KRX4rb|B+m?cFIiAWK-M70b|;T7&F<(rnE6R z!Q`!Td>B_)a)UiOG~TTc`s7ykFaruqGq8KDSaw1oDEwyA8lRvcE!QQ4s#? zxA3MPztC|CZ|gXXGk%=a@k=@F9Qyn?ucLqqIxgZ@I(EqNmxb&UGA85_E-N&a&Mzw> z@$nrU@8XJ%U*kO;zmbF97w!Y$ek^^sB^0e_+gN=5NNVRq8_N!JB_-39v9vKG4@oASPpzV!cgL1(cXMyQl}K!# zHV9dsd+y>h)-Ui(^W+4f9nQC5WN?VWK|XT2vhJcMY7^$YZNu%<@?_*vWWT$(kCl8~ zi9q2C@In*p;7f}pkm8I46lWy5a12n6C`Y=Ev)$BC99M)dK!v>pXyFD=0p9Rs`1WwE zq5%IHNBa)aCcaC_o0gXr0tBjBp12$v@kOrc#dEM8cX9@N34^YUr>N!UO2_i>Ip*gu zX~5pPf|q`wGy*1yo;eaun6rh84uFTM1oZ+~b&B>$uZVGTDI*3{}GE zzz{i&S~p>sPI{m1w5Q z=5WUa)O5Uu+EIz(LwL_HhPw46^}XJ3BN|#l-iv5F9GC5L2%SSyiCY@A&m$0S@g>fq zG92>C80@bEQ|rXJfs>m#wwP zTClT#n+B@t>U#CdxOq=VKjiUVKJ7o;{LqXxs;ubn4 z+j@)=dW_73{0dklf?N$;w|W+zb5#7Y8Cv(jww?^D`7eDVTj?ebi zb}p+Dzs{n~Ijp847OJg?)%olEv|K!4KCkT;5svrQ-C(&R-rvwXzp=C^(q0@oqoNn> zZ)|QTseV$TgA#Io&ZRWhEx3>7#?n<#BGBBhApgxx#nk_wE#m5sb34mTFyW z;vUA>qIF<9IWO*0AG4`@7-?Glh4J*T_YSG|+2B3IjHBuuzNGZ9&rYg0_@>fB)H$b) zVHdd|E~#1K*S)C16?KGp=phDOQx9Pe_M)2c{F@oOW}kV;^IPmhe*UMF2z1BUBMAPL+X$DuG1|W)Un1 zh8q6~zhMH!ZRb%ne?ZXLU_s%$b4XKBa4wUKc|Y%7fNG-T#~NoYz_kD^i$}f7#9k@$ zXCAyP9B}>VbPv$N*TdciWtv(kk~k9AYkJ;dJmrA-(G4^;Bps;~x;O@Th9EHi{s*$T Br&a&} literal 4020 zcmbVOTXa-s75@IYMv?gsWX*rs z|G)RYuirjb|8waIfYtbe29Ls;jG2$-?D1^EJYZ*s&FH}mv{e#C4Uwa0U2OWtl7 z8&9Vl%Ko&SNVSNxFX*@q%M_|9ZI^AQcUfb*%&ELWsC7Ub7EK#;*Uo&FUh8Qa(r~@P zO$)YL9Jit~h-S2i9m^Hgwl3UzB857L+BfJ}fiEl68p-6Km^WbM@@B@&Dl9K5ZcOH* z=7gEaN9SFj0EL6a-Xr`i#thY z=_>Rr-1>MChb|;NQ1^zGD935`g~4g91_DK-mrCyIWJC8fiiC}A^6t1TE`~p+j!%Kw#cm?>3B(Q1)2Pvc?TjSLw~H}WxT=%5;lRy*BWnQ%J0N$I$n3k zIV&UFZ|L}GiMz|?X7LWwud`k)6^*o;;VuIDr;obgJPb?_R*Q8Ml(kzp0tBlB2srq2 z+p-p=*UgG3`j(nz4K^M{Z5wA#=fsXL_{2M$#35vu>Ldhsr=4-C%UR1-!E0$q9Zp1ezdWZAmYDb;+ z@{{fO8ch{*+Odu+54o<#tsK4Nt-;s15(9d%zNlK1v)p%{Kh1@Q4*(SoarYd%{KZF< zG#;1P`*-@ei7cDK?H6!c`+L|pC{}z3-x=D_zmCIT%olFJ_U4f9B6b`}$?-YdaSq=s zuZ)C!9v$IkfBHNk;gC<}m65YZ7I2W4A~8`d!e58Wl1a_%i&f00-6J%Ow3V?+8Tl*T z&ZlOQvA}%Vq|kzq0uHTRR9hR^fOnri38qp6`B3f|~ws-NforbgHG|HHYG^j;_b zPBDRjJDIF^F^%`34hHHmj3sQ>%}6nQGw6rSQpn;CjN@*0)+{D*7*jaPwt5nWa1Qt4 z67I(pJcy6+5dMTm@E1IaPk8GecuZ+{Ts5YP)@aE7ZOE~y!u#V`0ld__G$dxONFkJWuRj{@7?Hv9`0NUNq*f5SztYG}`C z{E{G0ORG-MJ5{KsZIignRRb;Djd!?e#JlujrS==;e)astDL<6 z*F3azMZHVMUYVoMEO`9}zb)z$DGKm}uZ6u2=5Tt-mi!JMUd!oyi^|Rg%#S{U(}Rzk PTffIu&VtU(ocZ@(Jpia! diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/about.html b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/about.html deleted file mode 100644 index dd226d5..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/about.html +++ /dev/null @@ -1,49 +0,0 @@ -

Fuzzy Control Demo

- - - -

- -This demo simulates a 2 link robot arm. - -

-
- -arm.png

- -
-

- -

Control

- -The user (that is you) can click on the screen to specify the desired location of the "hand". -The controller works out the angles needed to achieve this "target" position and uses the -difference between the actual values and the target as inputs to the fuzzy control system. -The angular velocities are also used in the fuzzy control system to provide damping. - - -The inputs are: -
    -
  • phi1 and phi2 -- -the difference between the actual angle -and the requested angle -
  • -
  • - dphi1dt and dphi2dt-- rate of change of the angles. -
  • -
- - -The ouput of the system is the torques for the joints torque1 and torque2 - - -

The rule set for this demo was created in a hurry -by the author in order to get the demo working. -The rules can be edited -(and possibly saved but this feature is untested on windows) -using the Fuzzy Control Logic tab. -If you manage to create a better system please let me have -a copy :-) -

- -

PJ.Leonard

diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/arm.fcl b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/arm.fcl deleted file mode 100644 index 154b54c..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/arm.fcl +++ /dev/null @@ -1,99 +0,0 @@ -FUNCTION_BLOCK arm // Block definition (there may be more than one block per file) - -VAR_OUTPUT // Define input variables - torque1 : REAL; - torque2 : REAL; -END_VAR - -VAR_INPUT // Define output variables - dphi1dt : REAL; - dphi2dt : REAL; - phi1: REAL; - phi2: REAL; -END_VAR - -FUZZIFY phi1 - TERM nb := (-2, 1) (-0.5 ,1) (-0.001,0); - TERM ns := TRIAN -0.5 -0.001 0; - TERM ok := TRIAN -0.001 0 0.001; - TERM ps := TRIAN 0 0.001 0.5; - TERM pb := (0.001,0) (0.5,1) (2, 1); -END_FUZZIFY - -FUZZIFY phi2 - TERM nb := (-2, 1) (-0.5 ,1) (-0.001,0); - TERM ns := TRIAN -0.5 -0.001 0; - TERM ok := TRIAN -0.001 0 0.01; - TERM ps := TRIAN 0 0.001 0.5; - TERM pb := (0.001,0) (0.5,1) (2, 1); -END_FUZZIFY - - -FUZZIFY dphi1dt - TERM nb := (-10, 1) (-1 ,1) (-0.3,0); - TERM ns := TRIAN -1 -0.3 0; - TERM ok := TRIAN -0.3 0 0.3; - TERM ps := TRIAN 0 0.3 1; - TERM pb := (0.3,0) (1,1) (10, 1); -END_FUZZIFY - -FUZZIFY dphi2dt - TERM nb := (-10, 1) (-1 ,1) (-0.3,0); - TERM ns := TRIAN -1 -0.3 0; - TERM ok := TRIAN -0.3 0 0.3; - TERM ps := TRIAN 0 0.3 1; - TERM pb := (0.3,0) (1,1) (10, 1); -END_FUZZIFY - -DEFUZZIFY torque1 - TERM nb := -800 ; - TERM ns := -400 ; - TERM zero := 0 ; - TERM ps := 400 ; - TERM pb := 800 ; - - METHOD : COGS; - DEFAULT := 0; -END_DEFUZZIFY - -DEFUZZIFY torque2 - TERM nb := -500 ; - TERM ns := -200 ; - TERM zero := 0 ; - TERM ps := 200 ; - TERM pb := 500 ; - - METHOD : COGS; - DEFAULT := 0; -END_DEFUZZIFY - - -RULEBLOCK No1 - AND : MIN; - ACCU : MAX; - ACT : MIN; - - RULE 1 : IF phi1 IS nb THEN torque1 IS pb; -/* - RULE 2 : IF phi1 IS ns THEN torque1 IS ps; - RULE 3 : IF phi1 IS ok THEN torque1 IS zero; - RULE 4 : IF phi1 IS ps THEN torque1 IS ns; - RULE 5 : IF phi1 IS pb THEN torque1 IS nb; - RULE 6 : IF dphi1dt IS nb THEN torque1 IS pb; - RULE 7 : IF dphi1dt IS pb THEN torque1 IS nb; - RULE 8 : IF dphi1dt IS ns AND phi1 is ok THEN torque1 IS pb; - RULE 9 : IF dphi1dt IS ps AND phi1 is ok THEN torque1 IS nb; - RULE 11 : IF phi2 IS nb THEN torque2 IS pb; - RULE 12 : IF phi2 IS ns THEN torque2 IS ps; - RULE 13 : IF phi2 IS ok THEN torque2 IS zero; - RULE 14 : IF phi2 IS ps THEN torque2 IS ns; - RULE 15 : IF phi2 IS pb THEN torque2 IS nb; - RULE 16 : IF dphi2dt IS nb THEN torque2 IS pb; - RULE 17 : IF dphi2dt IS pb THEN torque2 IS nb; - RULE 18 : IF dphi2dt IS ns AND phi2 is ok THEN torque2 IS pb; - RULE 19 : IF dphi2dt IS ps AND phi2 is ok THEN torque2 IS nb; -*/ -END_RULEBLOCK - - -END_FUNCTION_BLOCK diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/arm.png b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/arm/arm.png deleted file mode 100644 index 107034195e5b32061bed7c24467e3a0ca5db25f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1062 zcmV+>1ljwEP)$e00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iprB z4KX5mYb_c800X8;L_t(|+U?!lZR$W2MPVG#fN97rK&8+E4cR4dAJC2N4J5&4#xp+i zE#-wsiTGLUJ;xqQH;&^DD8YxP0OSMt0P=x+0Qo>ZfP5eyKt7NUARovFknbz~_1a&r z3@Av~&X%fIRGWr@6XYvkUV{quhr@2Sn+iD)U%qAC8r8qMZNEJBwUh`h-o5EEO+WRgQw4Q?D`?)An=9XyQ1VT~FgN^e=kttLE61U}48uXUk=Lu;|me`CcD&i#uxI2=}Hc*W={N6?>&luVu{KA8)E%tm>cSdw1s8%xZ6oPjAxGyViV- zcCIyFvG6lnDTh0!ia`DT)@i9;>3 zA~0Csz3I&~j`=QK5H0zBnhm?|eir}fp5*WiyC4E{UooQ@`Tm-hYMhMi-#XU{+Baby z9+Y}2;>y=bYhz=9*emT>@PR|@ZH}fl7Bm}s#(3pIOzQ0{APrr{D z!KmWPp8M}J;vTA(=d1mCEt3P2lB0z%-_czmC08)_V`CWmLOK`{@l4B9}rHy*JDqilMkp; zzJv#sK|Ww3^36RDCich&kPqam6MI|82h=K`d_uJ3<23n*g6fkmt$%DLpTfmP Credits - -

- This demo was created by -PJ.Leonard (Department of Electrical Engineering. Unversity of Bath).

-

-The fuzzy logic engine is jFuzzyLogic an open source software maintained by -Pablo Cingolani.

- -

-Thanks to Necip and Pejman for helping with the dynamic simulation. -

. - -

This program is written in JAVA

\ No newline at end of file diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/BlockDemo$1.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/BlockDemo$1.class index bc4059fcdd55e5d3913a6f430af62c0cbae4fcc0..d4f825052bd125ef75015df6d889f3bebf121764 100644 GIT binary patch delta 426 zcmYL_%SyvQ6o&tqv`sTjYpS;O-fC}YT5Qyn78gQJtbCan4+nALa&zn_?rbjHX86p^B{ zFtuR@Y09W!f(z>j%wmo(4D-nNzuZI8a8k;80DFP*fyfi0|7bC(mXSndg3nIffA|!# a$Pq)q0#P^?u|yi7zh8ktk)T?Pl-3U+{59JE delta 423 zcmZ8dyGjE=6g{((b+a>*&8qR07!!4)$tFYu8?_Mvf`X0U2ZXqlaf2BxtnBRLbbf)Y z;0p_}wi5gR|3tir55$3)d(ORQ&b>1iu5taBkH;qfE2ufJ7}m`Z56!EUwu5B{33F~0 zdX=k;3kIoRV@QA_rQpCbl4pBwb>p)QDT8L*iBAtZC)(_?Z7DE`tb-|r)gQyOLJrdm z$!4n+X&sm)-W_r8IR?8M>FAh&m(3;HvlS``&AU}UQ(JKy zbsO!b){#b$#^dw~=KK8_30brqBq{F_Y7p<&Wmvt12y6FH*8@?SPB9QuFU-RyK0e?Q z!x$k(moSP9QS?RJUB|^Vv%Z* QVuHS{j4B~PHAa!vCmD)2umAu6 diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/BlockDemo$2.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/BlockDemo$2.class index 5ee1f6cadb65662782ac93a5914d22becd4fe959..b696493ce142a1b6bbd756ebd23d6f72bd0c462a 100644 GIT binary patch delta 701 zcmZ8fT~E_c7=BK>uF!R{j4{7ZCZLuM*0PB@CNQN;G3bRP2CqzI&4Sb}S&P}-?z}Nx zH2ozeFo-6`3*&{q!V7Kn0tl$f2ZQ9P=_3 z6o@GEjHzG_mW)LOGAcZ%a_m-m?I+3Tq#KC=IAMtsZgcOBjJq;w(f;@N1GC1|P2YFB z>z)$?Zosgz6=`*;&LH&S5#e$CP248IvWhzHsVLyQiVIj_&|W)l9rGaE^UPK z`BfEpOsH5xgJC(+mS&!GTCS(!K8GHlp<*4jiVZYXJmldcG^6Zl^mK~VBCQrrrpo0B zeJiQ$Iey#R4!e7PyFT}vLDc!JIJ>)U5X>%G7K5+Tw6*w`Q0+5FT{m#UGe(6o6yNQI zcIV)g=Oz_wh7_@O$msUJ^{SjL6J+;VA&T_AhH1?F zZSxLNqHh|9U?)g_g*?E>Fc_u4IP60jK*=N1&Lg`&z_}r)CE$P9*x6V)q^RWrvMAH< pVbX`OlJN?|cBkVtF^lUojEEb=7jP3g*%WCETqRFY2+WZ~=MNR?Ym@*0 delta 664 zcmaKpOHUI~6vuzJ({`XUz!Xb;3u?hWpv8y}s7jSeqHzUDqluf5PMT_&CY{#cik%xb zn)wcHjfp&>iMnv*r|={A35@5CO>pI1oag_X|2gL#TCXkV$L~*HfF;&UVv1_0;>GZd zN*gBe&@rapy5FCSq8PI=8A)LMcGCX)&$N(}n# zPG!UOo89dcX)?NQN@3&+4c+m$O@d@Ns}{qis##Xf^}GJd?d~85->C;yit}7Fxu94c z&NLy+Ic60j?$(wU1iA35(My_KQmhOiR`@=a5VkoAHbu>r=y`$H*ZlJ~3zQWp-`nZe zyMw14FB+zvT>U8*ke94Q3Uq@do2y(?#HIX^sC>Q9(D55K%Q|jKyuQ=yhriTj!luTZ zux*rg?fbs(_0~FW5O@JIvZoo(Qa2$QcD1w|LC3#D{4MAyKwpiN3F3uk?Ui?h@ z@d3y7$bN|MCq#}%DA`JuOHtyau95Cqp5ip@M&=pLN>Fi*=^?=@DbcX?;z#U5X1+1E zPyWaeE4xoAL#37B^7DPJ{3mz)XrM{r(sh9`$`q)uc8|q>rdt0yl_q9|YIKd8;>Ebd SZP9W0?@T=IO(;~Jar~^VUDx}6l6HS*UW0{b_rcF9k*|B8h zVlo@|CT?7rAQ~6Owg19@z%MYK79;28o{u;0Iq%86AM_`^_Uq60AHW=UbJ$cgd8V_g z;{u80xXcyJRlMwKbO>pIsunekX2#;0#jM5kWcPjQt46_YcDrH!ekX|IFjg!-PMoFm zqgqJcnJ+39b(;n^Y>wmD6qvKQ$-Kpa%`I-*+`&($%=IywMV6BMN>Sl#1#g0SC+Ke0 zpS;`(+k<3dTKS3Nrw3*|V|vwAI%`yXMR7>nuE%d9p+0)ni8jK%Vtg|kw1Up-P$Ar= zLI>@37{`_QMnkdf$$ozN+gRRF6yk93Jm^cq(_S16qFz^#@g7uLl;mOZC?-&jGu&NX z!jN0wgrG&qR-_&xx;FC#Rr`wZdBkzWXN3dzI4SRR4 zyO^~-)E;B|WOrY=SiR;D_(tw0+S}*Yk;(+7v^>ORO+ILSq*fYX<^O7B&T(EuTv5Hi bMcKvVl5`oACYh2XBdujlOQwZpOBDMH8dXu> delta 545 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 Cuuv8N diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/BlockModel.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/BlockModel.class index affab6f4824060afc9a92ecaa59bc4c6b2fa2694..aa4f6b04f5b4b32b1de2fbcddee277243c2a7746 100644 GIT binary patch literal 3767 zcmbVOTXS1i75=t$wJck)EyuE(Y1KB3CAo=g#|7+Mo2mvka%$o;I#P&dDc;J!YiN63m1FuY>d~2Um+fmdhAkD13_GNv0 z?X|wW_W8rVfBQQCWB8yQOL#JhS`2l#5j0{5VmW+xCujMS(Wk zr*>Y%1rgtf;OX$QfA>se;F}_z2_KrBpZU{2e({m?o)z(&AUrSP1rgs0ANFhzKAiHj z2)-Rd8p|SH6!B6N-;ws^2wsU{7nY;=uC%Yp;A>HQFN%v%ye>oE7tA*zxD>$;BKV;~ zu(VQg6;wf?ZEA(0GO7@**$ZdgqFv#bE5=Fae9cxtPt=b7=zRZ!HqGKB6lSa*!zCWnwK+vcy)D?PL z04jtkgexoTFIFu#Uw0Zc(>mkS7Oecasm6s1=ZnsQZRSf>#mSe>SB;8o*7Nga$6U-G z5ji8)`xH9oT!TGhN$<-#cEfYYEKeIBW7CqK(d;gW}zQ6Zsvb^LA~=BbxtQJH0?FLNtT z<-*)F?j2TFpA>J+jIm-@8kMPpkcEtYx(Z+?pv-87zc>bA=h&DN|l zHZOhHSXv@U6?V7sGA9%L_$wtt}~f~mkiiKXQJ`F=h_d&Lzaxpl;IU90F6(Iq00OQL%f zy`m?n_pPE|^i*yQ1L9?y_AZY8F+LHa9{&CumK#{01o)T3diuU51c2kY#*Z2oz2kqZ8>#l1A4ZlaaXhP zLkR#!9D6T~t;1?y2wY=y71#!59~m56113YJ_A zeptu@<(;u@fLHc5K#dA-AEHQ3gobh{p>Zm^j={x=$d>MHixchA9ZF({W6GLTM620U zyKc2b$7d`dN@vrO4j-j+6D9E(ONi2~mw0|8%xtRL)cg0g80PA}4S!P|izYWpB^J$8 zFSXkpbE4lnLaNi7>gH6RKQ$mHHl+fl`la@z25zFm5mq|jd4~N3bl^o+y_Z<)US^Sa z1rA=tCA@}JT*M#oI{u6|l)@#o18=IGcuVDQS&i_ekUD;mb(4wsghtdJ*XatWdv(DH zphNA_b zFTFX2616`1G{Vtw^wYCGoS`;Ag79O;qY19D-U{i>8%XmFyR$ePTEkr;?jG*hxrTdg zU>C=SdNOOs4ojfdz&9e>!{<%+JN^E>en08=cl-S=ufK*pzv4FDv$CBb1>WQ1_dbvE z0Uwf|BSlvvSl*p8{a{7OXdCC~tdh@3-|0G?7K9!2Cplzlc4sfY!-s_f{p-kI`}l8i zd%UN%M?WbaGNjj;&{f`wb-j~3ukr+YkCkX;hKHX;3{-_$KtHeiX!r<`Krbh%T;2xf EKjc@oKmY&$ literal 3746 zcmb7H+jARN8UG#KEw7{a7R#<_luKhtZmc*-0bk+-SM}76+`4gU63Qj()yCOa(z?-fk1vW?+A#jfNyG*kK(XEq--r+aB^0W>yA}4`9==&j=93E+!ZM5R!Lx2@`>D5 z9P>`uDlLtr7P$T(18qS!dcxRsN3io(Dvnvy5J#_o->%Yjw~JxfnK=SDgfaEvSOoVl zAJe5vX4x_Gi8-^BuNJDsgz`IaFj20S63l#J_)wx^8g?mP85)X4@g?jI<6ePI<=35< z8WPwe5MGgH3iQ7_+06YY1ommzkNX5d<5tOXCg^H1wII<4BuKJB)jdH*9y{aq+tgakIya6{_S7C`9v;GYlyjvCpGK@&q-ib!y_`q!LnH~ zX+Gdwuoz~*d@_59NlRw4*%VnRIFawjy6}?eWEEX`8eEESt{6=ainC;HE5}oH@=Ar% zioXF$XNW*cE<%LTrY>n@$m8KF?g^2gE2mCM7j+HucuY!$hB-VII^o8P(22M!(Z35M z$MUeQo`!rLR`OvbA5roVB_CDtQObdmd6|~vz+#Cwwp%&^UCGqlj0}S*=uv!j%vC3o zH4Uq%7wCOaccQ3bpL|@=a24Mbh%<^=ebp*fi&JIYa4fr&wU#VLrZzb(NnFMEG(273 zOM>6EH-cvw*`VC}yoT?~s%a zjVviOvX0cqD&p8qy>@gEtCO=e1o#6Ee}t}%z8d;(L!8~f-rSDqo9N-o!5R(>b|F>6 zV3LC|&1YuqolpPqdusXV6L2rR0s0Z4v=e*S!}oHwkH0-!zYmAGn&4hq!4Y1E;I6%R z0AHpL9oUVp&@Ugp%J&@qgYGbdzmschr=FKjQ(JKTPh z&LqA+9&7|2-UjTi1N-a1{yMPV0~R=q$35T-fu;E%ogQt3eqdYF!8-IpQ|0kS<&h@J z0$*>cJkh9ptf}&urpl9z%3o`u44iGMoNZKosEM+`H<~KXG%DwsD)V~svVF#*Y+pJi zNvash#};w3TjcCRi03j-BAg~29w#*y(8c`q;>qKl2OBomn_`VOVx1$F{ux-`qSq4Z+s(0N8nN=kGCu=LmIgbi z?2;VWqI|t9*?ai$Gc0*K!$)=`IFOD@8qcIQaBg`dyluL;Jklbk16|15hTIbmD=`&s zQKQmm{hTdCX=~Wh>Y=o4p~OCC3sKtD7T1rMk&3q)%6?~)*WBG*_cz|UY|v0Vwrs>Z zDV?{CksddMc$>S_&ZTZ|saHm9$PO6qk-ab8dj}mR*%*N5nD*y+TfE4w_Y!;E%gEss z*mxD!d9$wL8vcsc@G&n=f$O55_uhWIF49;Nhj2q3*ERM{9>gY%C|yv;6%_ZYhT})8 zIH1~55PhNt7FWYai3l!IYN5TqW0_Jbt^OGWN^P|LE{c?5^x!F!D7DiMlRKh3{*U>^ zw?e6#J{`i7lzQk{H_DWHNf6$iDXx!b7n2D_Xa4A!tJA5RT-JX6DSxADT+ zj+Zv@@}SIe4L_{mTE}%hPUskJvh{kJR~ z_m*|7eZ+j;V(ja*c8g`Pp{%*LYyalC@b-O&d-x5*Oub9VuWnaY5Qg8mOR{D?&8jgP<4259bC<>sETSlgC|;pp6SR^bhfRo(3%02(k2L-b zK_gg*w*CVPEiA134dU!2#O$!|%P>dsnX$gUh#0+M&%t=fk zD=;sR3#zxRSz1w+TdR5Xy=ukxJ)f{0yll2^XuVZ2&T|3_79{c(1`romw6KI_3k5AU z9Ku%cS~Bvh!Eu&K9L5P|!7dZh!AY{Yf9=&8gvh1WI1LMKCpjZX-)kIP)i1nVZip6K z*DfQ=^9mlFl+w>}Wb&361i|8H2L>CTIK>B$^9bXPGXq1cG4280G0d9kbfKBR2&WpM zal|%?u`cY8;Too#dr+|rlXs+z=s!}1^$#TQ*@sn}cc=L2Z^ dk3l^Kbr~im!kd#wvybp6WuQ2c%#X3>^#}H8Hst^S delta 456 zcmZ9|%}T>S5C`!8Bx$!@HyXcctyQa5O%o6g3icw1Am#-`k41u)5~1n6cW*V|dk9*= zgW%OS@Sq0|o(jH!I2&sf37egn-T5(WU%U(Z>GS>pz!rP~Bk9wwDPSd@QR(_ur922D z3K?W2OxOwnqXg5f9d#c!FDc4N6i^hHNiK}?hQcgL1nVqpAE&nheOy+U|0$nHEMiHZ zLZ~MnR4*zlV}&5&uzhgeIt};Qgp3;mNs}5Kf(oK2Z0$E2aU8~|@H8gRN{*vP;z(x# zIj-k9+JV6zAU*$Jj3B!agVN!V}f_WB&G(+A*)((I^GSW-@`Po zxgHk&V=oN9rdZ*-VSsTfs#s-?ur_43nba)(GFiR=y!|0)ND!)SYM5A0J6+UxxA^^R LcpS;p=K%NuFJ>}d diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/BlockView$2.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/BlockView$2.class index b944e0f37eb293b29b17629e9d20be81251bd134..8aa8595b5d9e7a696758c7c0b6138af4089dea3a 100644 GIT binary patch literal 1407 zcmbtU+fvg|6kVq+4Gp1Sy;drqR!xhLQm;^~gGgsOQyj-jRmPW)9!oGym?VWMf8~r; z#s@#Z|L{S5@bUqU`-D>Z!1&N6lby5A*;#9^eRj^5zn?w>$YUu68PhUGFePIW7iC<+ zWnt37y&}w28P}kSQAR>m!VE*y-!#2+j-gPoxvzOn(>3@T$E|a1tJK`vYgL@OX=pXx zaI{*>)*GhbX&aVfywx5ETQ&J^fnb(Q+w_YJMRfq2OqC(B;?y|9SjDvYqh@1+yU+9u zi)IoP$Iz{+?wZ2yOh!cd3`*Iyxw~TNp2x|(*MAP_JgHF{PSfL$T~2T{hDo)urSIsP zzUymzhuglkCe~NQupn|~l-|UDVi-mP#3$V1dH^Xu4GLW{g|c|Jl5>KG#IM?h<#?uD zU*rC!Q7J zUasleK6e=w`o?AmtD@y6h<#KOM^Evt@T7%@2>8}UZsQWEy!NtDH8+^?$d?<~?st<)O$>rO+Y5SO_ zLt=!^3pPG3nu$hXdg2%Z!#ItK2+ifmY6Tu$~jPz)EJ{gGKfcejx@kZA9o9Y9o3C9S_p@h8Vu%9DejrB)b$zT1gT# z!}%`7>kdUqAcqer_94aF7#4GF#Ew`Jh)_B|iRBkg;WsAmr-v!kWlD9J!W1FIr*MJZ R5jr=g=sO{n+K1kB{R3W}Ydrt} literal 1395 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 literal 7191 zcmbtZ3w%`NmH(fcOlC5?a9eG6t6g{N>h9KdAMJLxTixA?(*L=4CK(?6 z{ZQve?sx9_zH`3w`p!Au<>@!S@d$t=GUA3ISRS>KO^Mh)L_ zY&aZj3Rz>ZrqJGKU@RO=H0_GSf}>4s`Wy&byWPkYl-&}T4D4x2><&kVn{Lbd$}TF4cWN7Ks+AX-6bgLQtg@oyOT|QBY|;?{GGX8f!E%A zYdDk~5frw^qKRZ6nj8p3CafHqw~nIND>hiVm7*%RZrqA?2NH?iKqx$sP-L;qa;(dW z=B<9=kpAxFvT&k1Hj%JegURruioA{c(K|satwa7uY|QE$3k-8IOGq0-A@h@QD>I$1 zTBVnIZMD-co|VB!I2ul_qW*RD12j}SZI}f z**hGIda)3TO)SB6RAyzGr>Aav=l0Id`T^y$)I=G|6B|mi<)7hi7RoH2b;K9ouv{hzSqQD#rG4hj?3T&Ow3dKO;pi#VrF8SiTSvSN_K^# z*2amkT~@q5uuJ2-tSiQV9|*+5`fek=$iaJ5gF4-7r-^)c720K@0N%VcVFo0BiW)Lu zqEMj`6LV1LC3K64QSgYCCah#fY=T_dCWeNrxD{gX)NNB&M=|b3Oi(lxBki$BEN)?5DYpMR3UlU6j@bctnT=Ei|{q}U=a_TzRH>BA;If{)UV8Ih)inR97jG7BgM z1132VPEeG0U>XJ#y}3^FVk`ICPndASRQN|Df%`UcV8d>#k&wiP5S!8d}9vd5v zMHw^1<2aAw)bY-&S!CPggo%?#IU=S@BTZ&or_6acWPqZnp!*EAaBhq2k_!ie9Mi;vh#hH7*)*7}w%hG*D0#Zmm)#D8hkaBbbt*}ql^eq-W)v^waav8#X^uL>%rg0U@-2nV@y zY}CqarLDdAE&flF@c*j|);YVrZsIK7V0e&;vz9Ef!o$Ha=CzugGX*L`?k?KcEk?TG zwOc}!m`z2*@`^~VZu2V&DS4*2#X}O+>io*(G?6xE@tRVgoO4({xsw!{Qe?A(wI;Pi^n+VvA0|A$I^c-_W z!n_PQXf{cPUPFxCy=+&tP3#*F1lgH#xxTRv&DpbO51)JYvN#kZ!@<$46?`K@&v!vD2ornBm(IPK-wad+nR2manuEoklTT*60e8OQ*^l z+gf4wI~%oBD-aB_ftph^TEpuUS zRPWLhol&-o_EpGAu(xOY@Xv*E7}_@3HHsGld*rpi9(fnwSgrR$d*rRq9(gCUN8ax2 zk#{?L^pTFOAFsH=ZGw3RLjqeT4)GrA(p25Pw<7hli zGhe9dbe}lf(r|^J3g)dBRU&f7r-*Ma587ODD?Hl$Mej7h~ zYKz(Uq8&zLjV}>0NKuHt;9m~u{}NwL3(&+-E#=bfzDB??ex4%vPmSwH?@F^4ZFD)s zXmWjlXW|Nyob@j_g@+bAhGX5z<~zteMyVfO#mA}U+_YZHUH)npm1}k%h0i~D0)gC} z>W?(i=RQz#paS2BefsdZpG~a@oxh?2->f+>s;lm~|J=*|B4y_}j&4cek>-3~t}D{) z^?7{xJMTxn&r@>*l?|LF##>SmDp?oex+k{!b5i)u@&bR24uutXngUv}<;B&-)dkhX zvD5f|1^y;Dy1d{xHk07T&80^%hkQ2ss|&c{U~`$z>nnA5DMfI30f$1${i4r(99vWv zS0vP2b{vB?eYwwV3-ut%$!3eM%vWv;auiiMa|9(s4^E*Q%AU{tEBxJHPPJ?IY5aZP zX}s(!EAj61m6v!K89#5xvDNW}YD!vD`1g`fa|JaB_|nhFNT}JzUq#XtIRdXjJDYvn z;XhOO?}jt@?O@q!r|`ci{O%}bG;rGM+UcusMcm|-UhMPLJaFz8Bze;&5gGKkX+Xz{ zbtM(2Bqt@VhU1d2^T);H;BKyLpf;6U#Rpfre3c{mmy%+CO3DtQkSi;>@+iE7W)N~h zUS_3ac5{`l>N8mFb2nFW8*iwYqE-85@ULp8Z$?V4)K>?bN5Piq{x&A*n~_Y(yrXFK zRo#b`m&>5}LI!Cy8qP@FV7d5DNrM_SC5`2>C?!kmAeNN>IbjbH2<%qs-=K!diafn}c@3n`AEfWFBso`LGC2N(1)E zHP|l;`TbxK?v=&(3OS#Ur8pzY@RY2;^U}h*%_`nn*06bB#eTX&DrK$AmUV10*R$!{ zAZz$_w_CboOg74GvPo{2&2p#o%3C^j0yRq@qW46_^^D+I4JiRcgrE;LAlp>NDdn*xzBh)9x$Gk&l|7HgLaNN%N)u) zl1X32Sy?I9Gs}35-%!KV%t}?pE7VuN($yF*Nh_gT%r~BwHl{Qe8jWY9oj5o48Sj-2 zLLTflCS@(5e0>sB9$UGxG47^bo2vI&fMx5vnq}`PFwbp=zU_p6?|z z!#FsFyE}uEKE}`>%Fd$9jbrDS)7@?clJxUUB!_9Zw7B$5{;z~c**R9ZqVr~n&B@V4 zHE&=UFF|kc1F2N{&SIzJon>mI8D(IqGA^Ylxfc0)_Ou>OmliD&kfZR(7qjwyekSiT zVs3KsK3cg_OK!fOIsdMcxbs3LUnP@=Y$lb?!i-~)&p_KoHX_@nWLm86Wam1+)H(8; z;{T+a&XQ-k4)H5fTAnuK*=4OrkL-b~`LsrZ2fs{~+12b!mOw>Q0u|BE+Fyx&%t-TV zWo)T_g)^05=zubeJ#+!P$FkTJPO&RY*Ig0b7t`!klATsvk4iQiyGXDnvp9LCIC-W7 z% ic^sX_XZSsU8lf}* diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/about.html b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/about.html deleted file mode 100644 index 8546078..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/about.html +++ /dev/null @@ -1,100 +0,0 @@ -

Fuzzy Control Demo

- - - -

- -This demo simulates a 2 link robot arm. - -
- -i2.jpg

- -
- - -

User control

- -

-The user (that means you) can apply a force by clicking the mouse on the display. -The force applied is proportional to the distance from the cart -(like an elastic band). See if you can get home without falling over!

- -

Fuzzy Logic

- -

Fuzzy logic can be used for -a wide range of practical applications ranging from what wash to use in your -washing machine to the control of robotic limbs. - In this demo when the fuzzy logic is enabled the program attempts to -control the angle using a set of "fuzzy rules". - -The inputs are: -

    -
  • phi -- -the difference between the actual angle -and the requested angle -
  • -
  • - dphidt -- rate of change of the angle. -
  • -
- - -The ouput of the system is the requested force value. - - -The fuzzy inference system classifies the -input values into degree of membership of fuzzy sets. -In this case the sets have names like -PB (positive big) PS (positive small) Z (zero) etc. -Unlike classical "crisp" logic -which only uses 2 values; true and false, the -degree of membership of a fuzzy set can be any value between -0 (not in the set e.g. false) and 1 (definately in the set e.g. true).

- -

In this demo the fuzzy controller is define by an FCL (fuzzy control logic) file. -You can examine this in the Fuzzy Control Logic tab. -In practice this file could be compiled into -a program for an embedded micro controller. -

- -

Why fuzzy logic

- -

The big deal with fuzzy logic is that you can define -your control system using rules that mean something to a human and avoid -the complex maths required for some types of classical control. It is common -to create fuzzy controllers by asking experts what rules they use. -

- -

In this demo the rule.

- - - IF phi IS PS AND dphidt IS PB THEN force IS PB ; - - -

says we should apply a positive big force if the - angle is positive small and the rate of change is positive big.

- -

All the rules for the force are combined in a process called defuzzification which -which creates a final real value for the force from the degree of membership functions.

Graphs tab - -

The Graphs tab shows an animation of how the fuzzy system is working. The -coloured sections are the fuzzy sets which map the crisp value -into a degree of membership. The defuzzication of the force is done by taking the -centre of gravity of the force graph. -

- -

The rule set for this demo was created in a hurry -by the author in order to get -the demo working. -The rules can be edited -(and possibly saved but this feature is untested on windows) -using the Fuzzy Control Logic tab. -If you manage to create a better system please let me have -a copy :-) -

- -

PJ.Leonard

diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/block.fcl b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/block.fcl deleted file mode 100644 index b3d8711..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/block.fcl +++ /dev/null @@ -1,50 +0,0 @@ -FUNCTION_BLOCK ip // Block definition (there may be more than one block per file) - -VAR_OUTPUT // Define input variables - force : REAL; -END_VAR - -VAR_INPUT // Define output variable - x : REAL; - dxdt : REAL; -END_VAR - -FUZZIFY x - TERM ok := (-0.1,0) (0,1) (0.1,0) ; - TERM left := (-2,1) (0,0); - TERM right := ( 0, 0) (2,1) ; -END_FUZZIFY - -FUZZIFY dxdt - TERM ok := TRIAN -1 0 1 ; - TERM left := (-1,1) (0,0); - TERM right := (0,0) (1,1) ; - TERM tooRight := (3,0) (4,1); - TERM tooLeft := (-4,1) (-3,0); - -END_FUZZIFY - - -DEFUZZIFY force - TERM zero := TRIAN -1 0 1 ; - TERM left := (-101,0) (-100,1) (-99,0); - TERM right := (99,0) (100,1) (101,0); - - METHOD : COG; // Use 'Center Of Gravity' defuzzification method - DEFAULT := 0; // Default value is 0 (if no rule activates defuzzifier) -END_DEFUZZIFY - -RULEBLOCK No1 - AND : MIN; // Use 'min' for 'and' (also implicit use 'max' for 'or' to fulfill DeMorgan's Law) - ACT : MIN; // Use 'min' activation method - ACCU : MAX; // Use 'max' accumulation method - - RULE 1 : IF x IS right AND dxdt IS NOT tooLeft THEN force IS left ; - RULE 2 : IF x IS left AND dxdt IS NOT tooRight THEN force IS right ; - RULE 3 : IF x IS ok AND dxdt IS right THEN force IS left ; - RULE 4 : IF x IS ok AND dxdt IS left THEN force IS right ; - RULE 5 : IF x IS ok AND dxdt IS ok THEN force IS zero ; - -END_RULEBLOCK - -END_FUNCTION_BLOCK diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/credits.html b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/credits.html deleted file mode 100644 index ef6a20a..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/block/credits.html +++ /dev/null @@ -1,11 +0,0 @@ -

Credits

- -

- This demo was created by -PJ.Leonard (Department of Electrical Engineering. Unversity of Bath).

-The fuzzy logic engine is jFuzzyLogic an open source software maintained by -Pablo Cingolani.

The inverted pendulum dynamic simulation is -by Andrew Kaluzniacki. -

. - -

This program is written in JAVA

\ No newline at end of file diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/generic/GenericDemo.class b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/generic/GenericDemo.class index 0549cc0ccfe8ca6f7d1155a0e4abc1d2f906f57b..7cb186c49dab1d6eca41889096f5f14e78fbe370 100644 GIT binary patch literal 1751 zcmbtUYflqF6g|@}EYw91c?zibECpE#;;TGjFes)P5|9YrmUgH^w!3wA3&O9`MAAeO z<7a=A@y^VGm0+-trn_@z?wmR2+`IGh*SGHgCNZ0Wg|vy06cWg^;u1zpjHS?o2QnBp zVW-f72^nNfOq!TtXs!6+iYtmdVCc?oJ3G!NJKPms$$qV;a}3Qh!V}RPLw{Oj*uuA$ zyh=4%i30AFa~mUT490?AfolTc!I`e+Pao3zc$T*%fq7Ncun9qAW zvO~Wb6!?}Ol(@aUSl!>>%ljo!u#3Fx+r>T4DT_jAm$=6RntiF?FKCgtC4_fG{3ImMdR25R3 zT2Xc_3YpVU=f=3Ko`rUFFwC9XSLKjId1zr8j~HH^8>(Kn%L57e*uoP$WtcrT=$hcW z66u+R9A++pBs+*<>i?N2J$hF%t!iJE?Zl96ppBKkRL1w|1~#4OeT{MIx2W28OMXLf z!;$d}xdzTUQ8l8vaAB&Fm9ayWW0+`wimY`G!*pL+bi*tgUs}k0vjDE^yxQ2lk_9I=Ka(^~+ zh{Spg$paWPY+BEJh4BN4(Hfc$=+Hy798J~GdVtg)0-Z1jV1W1!;yQ*fK@=pB9u0g< zBpVYkC~qh}ewy;+@pXEnY+$Mmf-Z?z3!?*W(7HiKoC&df2E;IKoyFqaKOk@l_KYo4s3fy2VCNQkIXTh?) zyYpfz*m6EKfei}mz%TobmMlx*7D5sTeIK$Z-`%=wRzeg+mOr_JK+NCCQvXg$K_Kixj z$8?uj{c0Tk>XCN2a;#vKNPTJyQfET9wjd2&NhMR(I#SZgl|;0-p7&o;Ue@0n^Zekj z_y@xrF|=Ck+^FNy-waM5+W$e^-#5Vr6!k56fl-! cV`N}tUswK6nUV4y6R% zz{ev<;j+LLfdzp@fvW;b0?Ps`0;>Yo1l9x!qxb~H*b3d`FSh)g*8!G?lr zaBV7BM?q~?!PqG%#M+S;1>E(-T<>Y0E)K#Ja_AB%3hM!Fc+{vw3U<9&32F+frA83t z+s#hP4{kSG)gZrL?A*P3r_`*5e!ddaoB7I}hF1^$c3v#nQE-?q^ddLJVu4;d7k+aw zY=qI0!bWzdP$>Lw=c#Sxy~d9yjFrMh@M)*M8?-+6c595hR%-fQZQE;wvhN42XfJFl zEFb67($I&Xl6S!vjv*j8O`j5W;R4Kd!m_b(X80qEEJ}=`wJ!qVr{qm8OB=pq5r5gj`Y#LnUpe`gZFAm9 ziFZGt5xq&KoIyf1mhi%MbkHe3!fN#j(VhKNB75A`)M=0PA z@}F48V{EDzw$uu_h?{!kWsWP08G5DZeK1t_`^v!+Z0e`H(Q3VaHEeZ_-_3C7lPbe3 sGR*QGzUBqW(B(sBdKU4g$eN~ljPrkET<8hT^tUN)H+XoSFBUdP7*6l*X+g7{>$?|G`-t(iB1|>zi!>z-FKZpK=^#_2t<$EMoA#DQx=GI0y}Wo3&~tK+lQ-z zVG_A$o*?(543|b~)YO};n%fXqt-OKda(IZlQsM@+lo#%~6XnHjo^CWeB(o^>X+c~&vANCJFdSCqj);)PWW5>st zm6eS&Z&RbHiHHo4EF$Am$aoYo9EA*1A){2ts1!0#g$zs~<5I}56f!D>f+h1l_xpgo zm)zAL*7Lt0kuN;&VKSfp8Iwi;l6h6Z=zQ9H7AOjnh@BlOXuE=kT z&bE#Zu|Ske9#1GHFCe1WM`TgOt%Y0`lqL#Ww-p@j4{vf`S0iJbyRP%lo!Fk|c!c(aZ?%F$$|eZPv`L`T;G2#)Y0JPib_^tt zG*Cv)Kt)1T!Y*=ts*@*JBm2>=Pi%Kkzq}qf{VAd2TL=DgI_S|+U@FBYy5-P5*O==L z4QRYQAa Jt;P(*{{RX7GZO#+ delta 398 zcmXAk%TB^T6o&t42MTon6&33R6}$jSkmwRL3NBn3UAV7U2^VW(iCg0n7}EDJu^ST? zx_9T=cQO90lbp+U&Oc|)yu^ce>g)IY1He9Z3}}8+99jmXz+~Tkuxmrx?bgn&`c7wL zAnrelc0S(dxxLYWfL2ei&+CR{pJ(Xq3wB&M;(`-#kjsk zvpq(^7^}R&e2vo`KWIJe?Z+E5C00*Oc=h1_XlLPDHN<1{pw7e!W$Qd{y!GBfEj ze*zwP;TbyP420na^d~V)+wUkI+L8_r*39mnbF|v??YFyn^7N0t0Ng~yz$oVQmEV6< z&rcHb1~kk`EEv$SsMJyqma!u7xd8)nO5M)ljvqsWZ}M1xYKJft|32Lk${=X>$8K)Nt-AfT-VRaca9w75Y}lSJFj}aTj_vPlt8V)>s~m@(Ut3U^gh$z+pB>hC+t6#= z1X9(QIRp{Yy4?+&;yJ)Are7zfOcdKO(@s^$S1Kf7E8RrhYxy;IvlYiSWA>I~+j+QU zHxu?GCM32brde@;?4nce6v8McM6P*?cC$m%v|`4@+qgoyyJ!3QjKESCpTEdMVc0gY zgDVodChlTS;L?A~cBkdlt8QqbjD6BKKCV{xOdQ~AiTfrF@r{Yg$eVamsWGMALSA6L z3v3;R1O{Hf*f~0O9X7;D7x7;11cCKJrC2O>Q~Q_WBz>%_zTew?1!(z%haAgv&?4NC z^8xSzYnR<0a|T?y!S2xQX4Cbn0+$QLi3>y0VVizag$pki{?9)f2j_DpFkHCk$cRG; zr>_DMkWB@z&Y>N7-Hiu$hkv0_{^m4fRf)OEswyXzg-$H%Pn(8NT}^$JJBwD(W+qP| ze&r&CacVs|OfxKCo;%}{hjuW4%CMt>UveUFj*K^MO~ zd!jI<6HJr*0|UKGv7ea6kYht%Wg-*Q)AYDYwD-8L5TU}o%q*^94)5azS44>deHBIb zF-a;o>)6Ey_>l2)*u)g0XpFT)Qa(ZkGxQxp>KTLR5;xNlA4_~9F)M(-@fmZ!^)HRH vK=k3^9RW+MI$f68M7*PM)dtgf^2@rtm4xQVe#9)}W{IVeOs+W^JR_ literal 1791 zcmbtUU31$+6g_LnQsOG#aa)(tx=l*$Kq6eA(0tOygoHS8h=UbRl-iOue*kzJmX4UftZRp6 z;I;j#{n+#Cwt2A9e)jCJ;MJX~S+kp-Svz#Crc({f&}rI1Xt&HAiegaJp$ZHiSWhjp zVYzj)xPM?*Ljlp`$a6g5sB%0O=$o%L9M=gK1(Zy-ETArXHM<`Ig9hTz?Nn3trV~lr7(p>yu4wKDs0U1t|kpaETX%-#CH5 ze4+P1=ZMm@99Q6SrcyW!xD@)1Tc698wWVLbli&9`Zt<$#Z<@>{kVZ8-i=>65&bFF!I_?Qv`7fi7+D@Zp`w155eI4(dg^oBk@GjmH z(4Sh3wq0a>B{TW#`OGAc!>lBM8BAu*>$BxPEC|HXX=%A+;C(z~WLB$XyETF7i;kQ_ zIq`N*LM%%Nmj3mN+#lVMH<+}*IZWRfPXD*E3BNTM33yei9o#oHKh73(_NlF{6 zPu244EcUSrs+3{YmyN1EtWa zKH0EZ(Yw}B)UikW9$v)D6|7@NAW@2%-HIcdh;h=&W+b^>uDP!5FE^|pumjv;Pg2+_ zRW>8GD9-w1gNh{EQzY4(C>3fFxI}w{s|CdP2S$dTV}N65@Od;J`-z(|B>5jDCD?pT-i-gQ&#K3m*iET}cc+hVXEv_f*M7vkRJ?=C&v^Y9IqH<$FL>(+4@T!ZSWKyE zu7gJ%e9*xfgBkl)6G?5j_QQ+6q)$o|(i9m01{l&1Z@-2SdU6vtaEJdXHnk1%`7zfO zOh$e$M$GMD6Gfg=@fo(bBR$`u-8NB2u#OUTsJlr{KS7y<-NplaN?Q%PJarYZ7ra2z f@wuX-qT>r46Xa`#G=E8b3}4}E$^>!Kl>Gh$$LF-Q diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/tipper.fcl b/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/tipper.fcl deleted file mode 100644 index 02f476f..0000000 --- a/bin/net/sourceforge/jFuzzyLogic/demo/dynamics/tipper.fcl +++ /dev/null @@ -1,54 +0,0 @@ -/* - Example: A tip calculation FIS (fuzzy inference system) - Calculates tip based on 'servie' and 'food' - - If you want to about thIS example (and fuzzy logic), please - read Matlab's tutorial on fuzzy logic toolbox - http://www.mathworks.com/access/helpdesk/help/pdf_doc/fuzzy/fuzzy.pdf - - Pablo Cingolani - pcingola@users.sourceforge.net -*/ - -FUNCTION_BLOCK tipper // Block definition (there may be more than one block per file) - -VAR_INPUT // Define input variables - service : REAL; - food : REAL; -END_VAR - -VAR_OUTPUT // Define output variable - tip : REAL; -END_VAR - -FUZZIFY service // Fuzzify input variable 'service': {'poor', 'good' , 'excellent'} - TERM poor := (0, 1) (4, 0) ; - TERM good := (1, 0) (4,1) (6,1) (9,0); - TERM excellent := (6, 0) (9, 1); -END_FUZZIFY - -FUZZIFY food // Fuzzify input variable 'food': { 'rancid', 'delicious' } - TERM rancid := (0, 1) (1, 1) (3,0) ; - TERM delicious := (7,0) (9,1); -END_FUZZIFY - -DEFUZZIFY tip // Defzzzify output variable 'tip' : {'cheap', 'average', 'generous' } - TERM cheap := (0,0) (5,1) (10,0); - TERM average := (10,0) (15,1) (20,0); - TERM generous := (20,0) (25,1) (30,0); - METHOD : COG; // Use 'Center Of Gravity' defuzzification method - DEFAULT := 0; // Default value IS 0 (if no rule activates defuzzifier) -END_DEFUZZIFY - -RULEBLOCK No1 - AND : MIN; // Use 'min' for 'and' (also implicit use 'max' for 'or' to fulfill DeMorgan's Law) - ACT : MIN; // Use 'min' activation method - ACCU : MAX; // Use 'max' accumulation method - - RULE 1 : IF service IS poor OR food IS rancid THEN tip IS cheap; - RULE 2 : IF service IS good THEN tip IS average; - RULE 3 : IF service IS excellent AND food IS delicious THEN tip IS generous; -END_RULEBLOCK - -END_FUNCTION_BLOCK - diff --git a/bin/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/qualifyDemo/ParameterOptimizationDemo.class b/bin/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/qualifyDemo/ParameterOptimizationDemo.class index 2bf8993c08f663caff1b828b42449a9da139e4e1..beda82c1f1a356f66911a9376eb6883d5b4af76a 100644 GIT binary patch delta 164 zcmXAhI}QO+7=^!?@t7O#R1(!K6dD__0YWWSptK2AFwO0}-|qqw5h5xY8(=wpQJs@> zzI-3^Hv5Zm{OGFcp1Kn!2|R69AMHywTP04Exl!Rk6)j&4|3}cFD;aR6M<0g_2L=pr v$uVQZ7>|N56Q;yykdk#S{ zzI<=PV0G?6Sw~mTlezR5LM41~E9#rw=t&#jObm>V3oar;bA%kVe w2$viS#!OHY{y2D$=Cg_((w#0GTO4G{nOJfAK@B4Gh+#xC5XgFCwC z-1`kb;p63*#`EoUoZ6T&RUo%Ne_@kglE$p)b6~)oAuV-rL9kQ?6o1(Kg=l9Nix$ow^`IY;f>zw@g@e@E5FESXx^(^uzG0m_z z8I&>0G{-d0w7^thT4bs+Eiv6-T4uV*bc^XW)13j_wXkC0o`4y>^}}LCz-b0vv=DaR zeTq+vN}+$XQCnOVP#Zzu9oF~VF!Vx!N;Cc-N>))=#${QGkIeB`3g>Y_;UexU zT*aiq13a|wNTG(u3U!uMmNk|J))k(xY_M#yY;mE<@|5Kn%X4fi>|p!buAG))o)0(E z!@IT7K3SUCjdw&o4n(;lkkM1U_6{NeWACMa)c7xcqZ86z^4<@4W1V7+r?LBy6IPXW zbXzU2O-;>H7)IN^vc4v`PPUG z2)eog=_su}(^`@@oN@x;e23x8CXkMuOVH;Wqd$R3W+fOP%OuD;lgBudK+$qA!C5le zYLg8m82+jc7>kS6($OX2iL^P!iTG>iA%rG+Iz7xa6nn$Wk#kKBpZh{)V2sq{sL%zs YQ)#)^&cKx3HH|CeS*nfDk9QgP3md6;3IG5A delta 744 zcmY*X%Wl&^6g^{;xCyt3DYUqRM}bfh_mQ+|dA~|ZAUp~MiA@*C1cM?aPGqMN80MvpkBo=Iu*sTUxKJ4cc$>DJbkGB#=x)$2h@2MnNwWp9*6V4qzgD zqn2$c4-qCYrI2~yHkv`R<85rWpS!+-s;6M#h=FN^0#EJ}ayY7x;wek3&)iN=LECyF z9>)nMgwnYwn@$o={U?1XsyyM$NX4~^!%T$J46_kzhJ^@ahDwBU3>PC@$uM4zP~9C4sD*i>(!I^=DYj>G+(DgD yR{X;ZBizNkQG^9X#hgBIe}_S15jZKgrUwucis_MwhK-@>As#WNhnp>I0>1$>Ykfli diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclLexer.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclLexer.class index 1efcb9016f71307c35f31858d54dde6557291f57..0baddf40688203ae5ecdaf1b8fc0186b9f8354fd 100644 GIT binary patch literal 66480 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 literal 69434 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 diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclObject.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclObject.class index 801e6b3e2b2185a1038acf9864b1ff1bf162b6ff..f7100d3f9de1c67a6c1a4fc38111c5dccc0a63cf 100644 GIT binary patch literal 789 zcma)4%Wl&^6g|_pad6zGqzR#+Pg+VIz({Ocv1qEStgvWRsmqBoH4{0uKqVg-a*gH%gV6~GlA+|NK=vl1zKqXB-=|F330>h|h*;@(mNb%2 zYRu4f0-5k}IEh_(6~>zC&%3Vwu|Je
P(b!m}h+fyYp3G@YUN zEVwTMk598yQT$uciK2TEkuX?iS(~oXqE>Ht-)R~fD_FHrLzSU6&wDaa{y@ewDCfI2 z4)NMX15Fbx8*Nl=R5Yyl=t&sX?pjQTV>tXDyc3QhlAR5e7f~dG0mIwI;szF%G83=2 z=gFkwi!rTz{lWIKBo&nIRL$y4g7m~l8hi9LieRwmyBK6?TXdEv;$#`w<<pXGT%;N?naJnIZmbWtJ;f^ zTB$#vKdS23;VS`g@a)cb-^_b6^Y`DcKLFn1(8LnK2~{d4(KPYYX_WX%jC#|vv+r)? zYfqedf#`X`r@=^hsR@IyI+EX{2xRDs%V?RfcVCijG>&zkx^YY>ztf>k-xEr0r%y1t z(NI|^p=!fKg-~;KsE()Ofl5BhL7)hAH}YiAmx<2(i=dHy)f2+Ldtco-@<)V98l9wx z4t+wS?YP%MX3--HgmoJYtP!f0Z(02fk2RQR5n7Ajk5e5CRZ_uYmL|lOg(jZnnw}9h z+P7;t{ap168=Kf-X1+?hft;|U^*Lrmkcqv-u8AFP&vo76myK6BTa)p}a?G7<;}BXIrfb|t*P3zR4d?k6oZb}05B>u(4X5J{!@vBjiix~IszdQdrPsflP+{=Q#bJWE<$1@sRKBKqljT; zVe{V0%>3RYMq>Dn*X<4BEOPVi7< hwK)&izq{ZH?aYH;`1A+XQ2Jh#k!N=p)=`5C`wjWt9FG71 delta 244 zcmZo*ZD18R^>5cc1_lNb1}Sz1CPoIA$?F+4C#N$?GqW?WOm1S-nJ8nx#l^tPz|F(J z&cHFz$AHPr2c~A?J0&ho21W*99tKthw#fpFazcy@Jf3-ZsYT8?iN(dK#q10clh*(Z zsgh-5Pz0)Eo_vo{y_#zy&_*T(9w5mE6lCC^z`zS+^MKeullU0;fixq70D~ZqT9n7gz~h;hms;eUlUQ7wTFl7c;xkdeX|g_}(&T7HIbI$Hb_Na} z237_(b_U6bysi^Nbr>}#3TU!1C<5(ZnS6s$U4d~U&}t?IE+EOqz{tSB@5{gqWb=U7 pK%G33<(Xvdm^Pp(@<&y~zz>!e0+YfFd_bBDXaF;V7y~Z@Cji%$B*6dx delta 212 zcmeyx@{5J{)W2Q(7#J8#7^K)4m?oPux-zpfuuQID)R`z_z{SPD%)rgVz|O!i(Z_(v z#b>e=qtnD!N?e=_j10m&46F=nlX)2BL>U=)JoEBWi=1;3i;Gi>*%>4l88m@vH78a{ zvoR$?{CHc0wD_6#1hnV&DhM Wi-1W{1~DMb1vG$>L7YL7ffE3~${X$g diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$atom_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$atom_return.class index e8986008ddeea23426eafa14acf19d9ac5cc206c..84e851fdc9a3fcbd7bc407cade55efbb367f97b7 100644 GIT binary patch delta 206 zcmcc2a+yWy)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+ka8BJVgAjO?nlAjx2lv+|+ zl*h=x4ju+p1~zsE$%(uc6Fqb$7c*+HF(?8J zW0|~>QC)#?BhU^e1}-4U#=ywHz)`}$4P^6x*g%aulYcPE+A(cFQ&fhkh=Ct0F9arq S8Tf!S7tjD^1~CR+22KF}+8)mU delta 245 zcmcc2a+!tq)W2Q(7#J8#7^K)4m?q0IS}?OSuuKkR)R`z_z{SPD%)rgVz|O!i(Z_(v z+-I@^qv^y8N>-cUo zJf3-ZsYT8?iN(dK#q10clj|9EL>L*k6HD@QpO>6dTAZ1m z7hjZGQd*S9$iU;7mzP@PoRe5woI3Gg(qvyoIbI$Hb_Na}237_(b_U6bymk})bQm=! z3TU!1C<4u7nS7X0U4d~U&?+VdE+EOqz{tQLl*7OcWb=U7K%G33xtL__m^Pp(%0pGe Zzz>!e0+YfFd_bBDXaF;V7y~Z@CjjoMAg2HT delta 220 zcmaFL@{~p3)W2Q(7#J8#7^K)4m>3zXCoZ&RW@liToX)5-QO1Cai-DPen}>m&fn%bN z!NmFTT$~Jy48lANtPE@u|H%n4GVplj<)s!m=Oh*vrxvp_NKBr{s3XP5Aefw=mz+~t zoSB~&UzA!>T9n722-L|u`7oop0@p^MjZ6$YK#~n8$RL!%zzbyafY?Bj`6hEQ$=V5R fKvR^5s)&IfEH45kMH$3^G#AhSMh0;PNd`^;P&6V9 diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$condition_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$condition_return.class index e9bc1fea45e76ce92fbe7f1296898e13fe74ee9d..f333ba1d84d1127577500fb4a50abc9c65bf05b9 100644 GIT binary patch delta 212 zcmaFF@`y$1)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_8%^A7ATN-dpO=zZl9`_u zUzA!>T9n7gz~h;hms;eUlUQ7wI`Ki`WN$_}ULFQ^1`ZwuRt7e92FZ!MwiA7I7&Rvf zXtFUV0*z#ue1K71fpH_yCME_hAj!tS$iN`*kbxV><^i#RI(a6uGs)U9Z9r4>7*!Di YKUiJ}ObRpb0ckFv0n7|y47?1S0Kyg_0RR91 delta 230 zcmaFF@`y#?)W2Q(7#J8#7^K)4m>3zXCQoG4oOn`@nVo@Uatfo)L>U7vE(T@>ZXO19 z29Ak7223_S5GBT3oD7T%!aNMD3~Uqs$O$nr@Ob9sr4~8oBo-H^7PB)*OzvaUkz`~L zNY2ko$t=mt&x`2M+@)0~I+vco{eW0BR`^ delta 216 zcmcb~a+8Jk)W2Q(7#J8#7^K)4m?kSSS~0UTuuP6-)R`z_z{SPD%)rgVz|O!i(Z^uo z>}W1d21W*99tKthwu#^5L>U=)JoEBWi=1;3i;Gi>*%>4l88j!()f8i7;7!gi&df`V zFG?*bEy`n11nOg+yq!^9fomhsHYNrhAjt+4WMKKuzzbyafY?BD`6mBkl(iGufTrjt bsv-t{u)GME6lD+t(p*3T7#YMFBpEmX6-Xg$ diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$data_type_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$data_type_return.class index df5e7ce91ea3bc2301aa05bf21b37099fee5e5ff..f2555d7a558f4136628b3d829ef4d34ca97683d9 100644 GIT binary patch delta 212 zcmaFF@`y$1)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_8%^A7ATN-TSdtiDQdy81 zUzA!>T9n7gz~h;hms;eUlUQ7wI`Ki`WN$_}ULFQ^1`ZwuRt7e92FZ!MwiA7I7&Rvf zXtFUV0*z#ue1K71fpH_yCME_hAj!tS$iN_Mz`zY;^MKeuojjA-nPlylHlQgoLRG}T Y50)1Klfn#qK$;6^05gLa11|$70As=*nE(I) delta 230 zcmaFF@`y#?)W2Q(7#J8#7^K)4m>3zXCQoG4oOn`@nVo@Uatfo)L>U7vE(T@>ZXO19 z29Ak7223_S5GBT3oD7T%!aNMD3~Uqs$O$nr@Ob9sr4~8oBo-H^7PB)*OzvaUkz`~L zNJ%V7j4!DyNR2N_Eh#O^V^9QYWS)G0QC)#+BhYRp1|A^E1{7ovHelcdvUxykpuv2T l*_mYRgf^flGD20vzz>!e0h6K(VnCV;XaFOFID;euCjfpMBp?6) diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$declaration_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$declaration_return.class index 162ff031e2745cb338aab289d1a0d3c27af06808..78bff25e58f526fb9520d6ff9c361359dda045b5 100644 GIT binary patch delta 222 zcmaFC@`6R`)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+lF8cp14peB@(nw*nZlvt9P zpBG=0T2fk+$H>6rnU|MZ4ju+p1~zsE z$%(x76a952H!^CmF(?8JXPJDAQC)#?BhXGJ1}-4U#=ywHz&M408_4DXv4I+SCi61M i+A(cFQ#1`#5d%M1UIwSL!7@?{|5j~oyIyAARepnwe1{G-z9jS0W3@=M&fRN`%AbF&wMc^~n zb-d}$_I=0KQ6_Z7fVwq8Ztbjgwr2;My}R(7;NZDv%WG9UsncRN`BMRxn3N{y1XF7M g)p9)}Or@Z KgBSxZ11A8()+D3= delta 271 zcmaFI@{Wb~)W2Q(7#J8#7^K)4m?rBpIx@2}uuLvs)R`z_z{SPD%)rgVz|O!i(Z^uo zq9iL$21W*99tKthHbw@n;QZ2}!|qN>k&DQcFsU@)#6>#xhSn!>C@(wGrqT zCI%iL$p#c;;05cc1_lNr1}QEE76uVc24)6Pb_Q{F28oF+MiUPhOg_vg$H&OPpzUayH!I*ghV1vJ?h6oKZmOn%O&uE4kvXe|>17m#FQU}Rw65cc1_lNb1}Sz1rpb^f8#Y zI-84=fssL&hk=!WZL%1noG2p$k7r(9YLRnJVsUY5F*}08+7-iWQ z6oDF;CqHLYSK!(Rw1$a+2S~C31sQnx8F+zg9uOO7Am3y?CRsb74QPr4Q57-pgXKlQ Uq$qm6=u< zpOllIoE=}3T2fk+$H>6rnU|MZ4ju+p z1~zsE$%(wq6N7aaH75#avN0$EZD5&viBVmFaU;-TCI&7b$;QCQz`*^2fg8x?0kMHP nc_vFT$=We(KvVPzRS^R}SY8NB3N!ElX)d4v%nV`-ybPQGUhgFL delta 208 zcmeyu@`Xj<)W2Q(7#J8#7^K)4m>3xxCN6VeW@liTT*jy~QO1Cai-DPen}>m&fn%bN z!NesgT$~Jy48lANtPE_EIT+=H7#Vmx^YT)QoO2S3i&Kl)86+kzVANq|WDuKpL5z(- z5vZDZ@+C%f1+I-iTbLMlfFv7Gkb(OJ122%x17ZVBR7DK@V0jTR UDas%Qq`80wFfxcUNHTB&0F8?rrT_o{ diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$defuzzify_item_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$defuzzify_item_return.class index 8c824a10b16d02abf7ebfdf10c92eb74c0a599ca..84034602e70d6df7b69f9323f7e324266458e643 100644 GIT binary patch delta 258 zcmey!@{vXA)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+mw7){(^FnKehm@p#)k7r(9 zYLRnJVsUY5F(ZSc&qM+H$(oEx+Kdcb!TF^{$*FFcIjM{cd~V4(0f|M$sYQBOiDijA z4D1XXJPfQ1Z0rn@6M3B`2I(+rP885&V^9QI#4`Cjqk1*tMxgyn3|v5xje(JYfya@7 z8_4DXv4J{y82EuSBZB~gAdut)vh{&9SWasT1Jeee0J3IhESi}ZgutqV8Tf!S7f>@Z KgBSxZ11A8p63Io894G+4wETf64|rWhy|IS(No225>(agc~sc diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$dsigm_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$dsigm_return.class index b61b6c78f167b4a5640e21ea7e20c0f82a9e50a6..e5709f4cf63bc6e9de09c9984134f6e51504786f 100644 GIT binary patch delta 237 zcmcb{a*ajm)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+ka8% zT9n7gz~h;hms;eUlUQ7wI`K}d9wP%+aDHh~a;jTqPAVe& z13Lo;4+AR$8#{v}BZJw*hh`H!br>}#KGbAmPz2h=GIP12ywZ{>>ZDD40M delta 241 zcmcb{a*c)e)W2Q(7#J8#7^K)4m?q0JS~9aUuuP6%)R`z_z{SPD%)rgVz|O!i(Z^uo ztSDPf21W*99tKthHbw@n;QZ2}a)Cwa)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+ka8ckelAjg%KoD*M^T2fk+ z$H>6rnU|MZ4ju+p1~zsE$%(w?6Ww(t z7cy$GF(?8JWtqH=QN5aRBhW4;1}-4U#=r<9Z!>TMNggnp6-e^~d5jDK41z$C6Uf#F o(jaxLT3Z;HHUJsOn(t!K%)}rBRwc~92c)@xnwc5I7a)CwQ)W2Q(7#J8#7^K)4m>3yMCf74+@~NaH=foGKmXsFdu`{qt4r0`qC}Y6I z#lXzK&BMUXz%kLsfXU1Uq;%q8T`o=rMh0OX237{Pi67*I7#Vmx^YT)QoO2S3i&Kl) z86+mxFzN_1GH@XbWl#iaVV=B>QN5aLBhYpx1|A^E1{7pqxXr)|BzeGWRt7!>ejtyL wL4ZLJNOA(%`al|_j#X<5gU|*b16lK3ESi}ZM8K*<8N`4z7g)PEgCqkd0F1LG#{d8T diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fun_atom_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fun_atom_return.class index 32edc7d6e38e6e6f0f2b8f6cdbca18983ff45368..86789152d0ffeca2372fe2351509dceb84c219b1 100644 GIT binary patch delta 235 zcmZvVJr06E5QX0Yg5a*;|4(6JWi%!lYC9_u?|>9o>6#$ec#4e|QDbGI2k;Wy#5h`6 z*u3{LGvAxs$c^svb$bBt(RE;;ZbL`ILd!y1?R|Bb_S{t_!zkTu!X!?!L^AL|$~c*? zqunl6`SKXBp5U-hCKyl>C{gC0OeBX( l&fuX!YEzz&e|MuRv=a?}VfPQLq58e5p-k=&tfL75`wiwUAAtY> delta 244 zcmcc5a-T)u)W2Q(7#J8#7^K)4m>3x>C(gHIW@liToXDs%QO1Cai-DPen}>m&fn%bN z!Nj?-T$~Jy48lANtPE@uf60k5GVplj<)s!m=Oh*vrxvp_NH8*JPMog^r1;ZH^Wqar z@^j;hQcFsU@)#6>I+-W$WmK=`+6c6fiGc@5vH=AdxOo|PfovWS8)z~g13!>vWDsBw s1d^OUwmy&s%V}+45ZV9~K-SEUMKcqF2w0UUgBXzJ0&5p%kYwNl0JrZU7ytkO diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fun_md_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fun_md_return.class index f9155ab918126d12416735475d66b5c4e915a64c..8fe78ced2962087e0b851f4edfefbbe04c525226 100644 GIT binary patch delta 235 zcmcb~a+5{s)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_7){(@Aj6whnirp&5?_>B zQd*S9$iU;7mzP@PoRe5woI3GtoHio^S8#r5QF5wVW=<+21D{)RPC#N&acYrXR$^Hq z4+A>`2M+@)0~}W1d21W*99tKthwu#^5L>U=)JoEBWi=1;3i;Gi>*%>4l88j!()f8i7;7u#di_cAo zFG?*bEy`n11nOg+yq!^9fomhsHYNrhAjt+4WZ)8H;03aIKy0A7e3Sn%%GwESKvN`) bs)&IfEH45kMH$3^G#AhSMh0;PNd`^;qIe&q diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fun_mp_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fun_mp_return.class index 5ace5df3216d3907e964abf051361af87814517f..93d44ee2dc05eb7a76321034d835139ba14ab279 100644 GIT binary patch delta 235 zcmcb~a+5{s)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_7){(@Aj6whnirp25MPv9 zQd*S9$iU;7mzP@PoRe5woI3GtoHio^S8#r5QF5wVW=<+21D{)RPC#N&acYrXR$^Hq z4+A>`2M+@)0~}W1d21W*99tKthwu#^5L>U=)JoEBWi=1;3i;Gi>*%>4l88j!()f8i7;7u#di_a~H zFG?*bEy`n11nOg+yq!^9fomhsHYNrhAjt+4WZ>#&;03aIKy0A7e3Sn%%GwESKvOgk bRS^R}SY8B7iZX}+X)d4vj11xok_?;x=7J!s diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fun_pm_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fun_pm_return.class index dbe9543ee86104868b440f307cbd4b0735e1c75f..9c3052dcc82fdef62b2e1a93764b4cacd4ef653c 100644 GIT binary patch delta 235 zcmcb~a+5{s)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_7){(@Aj6whnipS?8()-K zQd*S9$iU;7mzP@PoRe5woI3GtoHio^S8#r5QF5wVW=<+21D{)RPC#N&acYrXR$^Hq z4+A>`2M+@)0~I+vco{eW)J7;) delta 216 zcmcb~a+8Jk)W2Q(7#J8#7^K)4m?kSSS~0UTuuP6-)R`z_z{SPD%)rgVz|O!i(Z^uo z>}W1d21W*99tKthwu#^5L>U=)JoEBWi=1;3i;Gi>*%>4l88j!()f8i7;7u#di!aEH zFG?*bEy`n11nOg+yq!^9fomhsHYNrhAjt+4WZ<04zzbyafY?BD`6mBkl(iGufTn0F bsv-t{u)GME6lD+t(p*3T7#YMFBpEmX=l~$H diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$function_block_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$function_block_return.class index 4619873037e2d1262828d80b3d8eb3bc60fca190..dc0093397cb90eda0bf79d598c09b8c7988535d9 100644 GIT binary patch delta 258 zcmey!@{vXA)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+mw7){(^FnKehm@p#)k7r(9 zYLRnJVsUY5F(ZSc&qM+H$(oEx+Kdcb!TF^{$*FFcIjM{cd~V4(0f|M$sYQBOiDijA z4D1XXJPfQ1Z0rn@6M3B`2I(+rP885&V^9QI#4`Cjqk1*tMxgyn3|v5xje(JYfl-Tr z8_4DXv4J{y82EuSBZB~gAdut)vh{&9SWasT1Jeee0J3HsESi}ZgutqV8Tf!S7f>@Z KgBSxZ11A8r5+qOn delta 230 zcmZuqI|{-;6r7ih8?$cwMB@(;tb`CSf+x^Q@Dd{FB!wwGMcCTP3n*AwcmSK6#S4hf zR2DWf!@QY!FZ*SC&-eWSV1c0n%gkvh9M~qKC?Ca2L7=ALpqg*u{Jc{x2yKlDq>(iC z33{ET$ziqMW?7Os=$jKof)M0IATi;zFa=GI>dHSXXhz8Jbw(O@Pt(PDI2 e&zQ?wc!Pgo22sQ_JORn~hL!2JLPU>fZJ diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$function_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$function_return.class index 01d8917be11726324a3b6a381929b23befa8034c..334c19e6930df348129c7fbe3a61697aa6c71d0d 100644 GIT binary patch delta 235 zcmZvVI|>3p5JYR%b;ns}{r>~ONEAUaHZxlA1|ll5f*>R8$HY?%UPQ%6&;xjhy@}Ww z8JJWR-TkU#Gd3H~*X;pdh=vUlC4mIW9952*-VgO<(9EtQwF);oHTS(R@)d)0mGb=Y zb{Pboju%IlH600#ltdC1M_oH3J?XKI&UGxbsL?#$S^L1w^vHlsYJmY_iZo^U$wW$I m$r*CUlM2dx^6##Dg>j<6FFgAL8z_9QipY@L1Se2|1MvnN*&rqW delta 244 zcmcc5a-T)u)W2Q(7#J8#7^K)4m>3x>C(gHIW@liToXDs%QO1Cai-DPen}>m&fn%bN z!Nj?-T$~Jy48lANtPE@uf60k5GVplj<)s!m=Oh*vrxvp_NH8*JPMog^r1;ZH^O8$4 z^Yh}1QcFsU@)#6>I+-W$WmK=`+6c6fiGc@5vH=AdIHMVOfovWS8)z~g13!>vWDsBw s1d^OUwmy&s%V}+45ZV9~K-L_KMKcqF2w0UUgBXzJ0&5p%kYwNl0PH9sy#N3J diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fuzzify_block_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$fuzzify_block_return.class index ca06270fa9d1667ff8c0fe949c4bffcaf5006200..68188fd528272eb5b4eeb282c0170b5756f4388d 100644 GIT binary patch delta 258 zcmaFI@{UF7)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+lF8%^A9FnJ@Rs4yb~k7r(9 zYLRnJVsUY5F(ZS6&qM*c$?A+s+Kdcb!TF^{$*FFcIjM{cd~V4(0f|M$sYQBOiDijA z4D1XXJPfQ1Z0rn@6L}pc2I??sP885&V^9QI#4`B|qk1*tMxgyn3|v5xje(JYfmx4% z8_4DXv4J{y82EuSBZB~gAdut)vh{&9SWasT1Jeee0J3HSESi}ZgutqV8Tf!S7f>@Z KgBSxZ11A8epd?5D delta 271 zcmaFI@{Wb~)W2Q(7#J8#7^K)4m?rBpIx@2}uuLvs)R`z_z{SPD%)rgVz|O!i(Z^uo zq9iL$21W*99tKthHbw@n;QZ2}#xhSn!>C@(wGrqT zCI%iL$p#c;VAf;c1+sZSY@oG#4E#WvkwJh#5J++Y+4?{lET^@FL1+U|09msE7R^iy UB4Aab3}Qf<3#?t7L6U(J01(eA#sB~S diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$gauss2_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$gauss2_return.class index 649ad115876a82f51cf080eb3ac5ce6952a9728e..61b53af78879965698159831f556c28b46cc073a 100644 GIT binary patch delta 235 zcmZ9G%?bfg9L3LN%rNdC-$b#JNSdXEjZ&7H@O{4BL-s9#)SSbrz@dg%NMJ_uw z=bSpf|Hs3480Guxd;#F1Y{Nh{hA?s#3KoiL>#9Sy;w)Jpr8^gV8wj6(j(nesfyboe z>N#r>*walQ7JRt!I6-2#@Fq-1E;?(rV-yym6cLyfO3LY}aho(%s%fIGFB$t2Y1GJ3 uKM;bg)dT?|SHyLupR6b8{za<&(BTid{X$57`}9{cNNBh9f-v%M5PJj2Gbn}t delta 216 zcmcb~a+8Jk)W2Q(7#J8#7^K)4m?kSSS~0UTuuP6-)R`z_z{SPD%)rgVz|O!i(Z^uo z>}W1d21W*99tKthwu#^5L>U=)JoEBWi=1;3i;Gi>*%>4l88j!()f8i7;7v~~EiN{S zFG?*bEy`n11nOg+yq!^9fomhsHYNrhAjt+4WMDnczzbyafY?BD`6mBkl(iGufTrjq bsv-t{u)GME6lD+t(p*3T7#YMFBpEmX>75|r diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$gauss_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$gauss_return.class index 6ae3a62894087478e5ec4cadfc57c0f37df6be7c..a0251edfa652f375aa4430d4cf067c4fb2320b13 100644 GIT binary patch delta 237 zcmcb{a*ajm)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+ka8% zT9n7gz~h;hms;eUlUQ7wI`K}d9wP%+aDHh~a;jTqPAVe& z13Lo;4+AR$8#{v}BZJw*hh`H!br>}#KGbAmPz2h=GIP12ywZ{>> zT9n7gz~h;hms;eUlUQ7wI`K}d9wP%+aDHh~a;jTqPAVe& z13Lo;4+AR$8#{v}BZJw*hh`H!br>}#KGbAmPz2h=GI{ep#T5? delta 241 zcmcb{a*c)e)W2Q(7#J8#7^K)4m?q0JS~9aUuuP6%)R`z_z{SPD%)rgVz|O!i(Z^uo ztSDPf21W*99tKthHbw@n;QZ2}Rm8v#mKOn&q6}g{nhR(EBZD}DBm*Y^jY1~$ diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$id_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$id_return.class index 0b72d06b5dab0b17564572a7f66e5deeb910282c..a11983711e13f913974df65aafdeab42cc6b915e 100644 GIT binary patch delta 238 zcmZvV%?bf=6vfXSW5$gCFup&EVxy5FVrQk4@(xmFp)_fRm8bYOkHLbnvam;9NiHi3 zn{!V0-ru=T^{JNcugeuc7iAMFvIZi^=_u$Z%5_&BIu&ENnECEz>w5$-@jTZbt>!`C z288}p+PyGE^>9d4OF&0VAPP-KNm>IrZjmExM?;NE)o@RZ9i8}>0+Uq(0kIq6oW&T9n7gz~h;hms;eUlUQ7wI`Ki`WN$_}ULFQ^1`ZwuRt7e92FZ!MwiA7I7&Rvf zXtFUV0*z#ue1K71fpH_yCME_hAj!tS$iN^_$iNL`^MKeuojjA-nPlylHlQggMpeYX Y50)1Klfn#qK$;6^05gLa11|$70C)Q!1poj5 delta 230 zcmaFF@`y#?)W2Q(7#J8#7^K)4m>3zXCQoG4oOn`@nVo@Uatfo)L>U7vE(T@>ZXO19 z29Ak7223_S5GBT3oD7T%!aNMD3~Uqs$O$nr@Ob9sr4~8oBo-H^7PB)*OzvaUkz`~L z$V`h*&PgmSPK_^0Eh#O^V^9QYWS)G0QC)#+BhYRp1|A^E1{7ovC}iLTvUxykpuv2T l*_mYRgf^flDn?brzz>!e0h6K(VnCV;XaFOFID;euCjga1B#Zz6 diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$linguistic_term_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$linguistic_term_return.class index 17b04316a8c9f79c57e20d9335b0e5e324f2f85c..77a8a833186da93883945a992f57aff644186ec6 100644 GIT binary patch delta 227 zcmeyu@`Xj})W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+mw8cp13pe2@*nU`LgSzMBt z9AA=Jlp9}^T2fk+$H>6rnU|MZ4ju+p z1~zsE$%(wq6N7aaH75#avN0$EZD5&viBVmFaU;-TCI&7b$;QCQz`)$jzzt;cfY?Bt nJd-7vWbK$XpegD^Rm8v#mKOq(!VG*snhR(EGlLidF9Rn4FhnFR delta 208 zcmeyu@`Xj<)W2Q(7#J8#7^K)4m>3xxCN6VeW@liTT*jy~QO1Cai-DPen}>m&fn%bN z!NesgT$~Jy48lANtPE_EIT+=H7#Vmx^YT)QoO2S3i&Kl)86+kzVANq|WDuKpL5z(- z5vZDZ@+C%f1+I-iTbLMlfFv7Gkb$|KffvZ;0kMIm@lBRwlC=}sfTpMuRS^R}SY8B7 TiZX}+X)d4vj11xok_?;xS!5g3 diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$main_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$main_return.class index 3f170bfc41b39ef143b254678432e880d7dcbdd0..3ea40b88c6e5c0014af2a0ff7fc4c7ee45ea2a95 100644 GIT binary patch delta 206 zcmcc2a+yWy)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+ka8BJVgAjO@Vn3)$}lv+|+ zl*h=x4ju+p1~zsE$%(uc6Fqb$7c*+HF(?8J zW0|~>QC)#?BhU^e1}-4U#=r<9CopgWNggnpm4RpS4@Ox#rVVI{CZQ@~;0MbKfk|No RJ|N8nG=P~wjDeSd6954X9_s)A delta 245 zcmcc2a+!tq)W2Q(7#J8#7^K)4m?q0IS}?OSuuKkR)R`z_z{SPD%)rgVz|O!i(Z_(v z+-I@^qv^y8N>-cUo zJf3-ZsYT8?iN(dK#q10clj|9EL>L*ka}zW3;)_yCN{jLs6oIBOPu|F=uE4bs=oBUf z9w5mE6l7qSz`zS6dBAK|2ENHZ7-j8*HlQh*gsO;vA1p5dCPf*vUMY(0WD8qrc!Zn#A|xsa4?w(vM-gKy zh31@-nfcD_&Al1k-g?#mPc*o!76{NE$Z{6n%%DJ?o#3Ou h>TvF}r@QVM+K~sp@beF>p_pC;$g#T&>!`qk^8po(9PI!A delta 244 zcmZo*ZD18R^>5cc1_lNb1}Sz1CPoIA$?F+4C#N$?GqW?WOm1S-nJ8nx#l^tPz|F(J z&cHFz$AHPr2c~A?J0&ho21W*99tKthw#fpFazcy@Jf3-ZsYT8?iN(dK#q10clh*(Z zsgh-5Pz0)Eo_vo{y_#zy&_*T(9w5mE6l7pN&A5cc1_lNr1}QEE76uVc24)6Pb_Q{F28oHSMiUPjFv?AqWt8J%WZ?14 z%S$bC&PgmTPM!EJe{wpb94`+8I|By~11kd?JA>pzUhj#~I*ghV1vJ?h6oKZjOn$|v zuE4kvXgm`G7m#FQU}Rw6=VIUnvUxykpiZ92hD@?{OdHS?@t`VV;0MbKfk|NoJ|N8n NG=P~wjDeSd69DTe8FBys delta 211 zcmZ8a!4APd6r9)9uCAqmQbNN?Bo380ySP;1Cmecf8qwcqB%A#WX}CK00H5L`#OjU9 z%w%TXyuvQ*_Vayz09a$hVG&|g#*Cw;&$LwINC+@ABsl77AE`?!ToAevHXI#L=o92F z%aYSJJ>+?ka|DEiDi@3p>LY~?X6AtD7tN>QW*%9P1|4I<6KEPOzuFA8^varSI@iCF V{4K$&@?M2L`i6xWAPg{s`vLAm8jJt{ diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$operator_definition_or_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$operator_definition_or_return.class index 1b08c643a3504c4dac901153d86cb0945d08f27c..9a1289a74348311f13badc7f0a1dc49972db0a9d 100644 GIT binary patch delta 225 zcmeBV?PQfY^>5cc1_lNr1}QEE76uVc24)6Pb_Q{F28oF+MiUPhOg_vg$H&OPpzUayH!I*ghV1vJ?h6oKZmOn%O&uE4kvXe|>17m#FQU}Rw6JI=rjWb=U7K%G33 l^_XPsm^Pp(I*F=?fgda{1SW+U_<%GQ&;VuzF$P`+P5=%jBf$Uw delta 209 zcmeBV?PTRW^>5cc1_lNb1}Sz1rpb^f8#Y zI-84=fssL&hk=!WZL%1noG2p$k7r(9YLRnJVsUY5F*}08+7-iWQ z6oDF;CqHLYSK!(Rw1$a+2S~C31sV8`Gw=f0JRmmEK)%U(OtN-D8_*P;L{-GV50)1J UlcEe_K$;6^03(AqgCqkd0Izu)H~;_u diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$operator_definition_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$operator_definition_return.class index 146685f1fde0897450ec596f8e91862a816b6a60..cc6a6ce58edaec173bf37cd77ceb4160c58bee12 100644 GIT binary patch delta 231 zcmZvVJqp555QJy*YvPMWq4}V|{5cc1_lNb1}Sz1CPoIA$?F+4C#N$?GqW?WOm1S-nJ8nx#l^tPz|F(J z&cHFz$AHPr2c~A?J0&ho21W*99tKthw#fpFazcy@Jf3-ZsYT8?iN(dK#q10clh*(Z zsgh-5Pz0)Eo_vo{y_#zy&_*T(9w5mE6lCBlV&Da`c|dHSNqh|aK$?+3fI$#Qast`< mKpHHkwS_@w15f~2a|ssBObjAmRiX@HK$;7zU7SIZffE2?-ydrL diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$piece_wise_linear_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$piece_wise_linear_return.class index f7bbc4e3b36929956376c0949535249addc293f6..512dd63ea347ae2d3dc5d5972929a31052203be7 100644 GIT binary patch delta 229 zcmeyx@{2|4)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+mw8%^A8pd(R`nVOs$U!GZ< z8lRJymzr1T9n7gz~h;hms;eUlUQ7wTFl7c;xkdeX|g_}(&T7HIbI$Hb_Na} z237_(b_U6bysi^Nbr>}#3TU!1C<5(ZnS6s$U4d~U&}t?IE+EOqzz8Jb8MuLL9uOO- olV`F#ldK)n1~f&9sEQc)!SX_2Qka1cNOJ)VU}g|w;AP+h0LaZGxBvhE delta 212 zcmeyx@{5J{)W2Q(7#J8#7^K)4m?oPux-zpfuuQID)R`z_z{SPD%)rgVz|O!i(Z_(v z#b>e=qtnD!N?e=_j10m&46F=nlX)2BL>U=)JoEBWi=1;3i;Gi>*%>4l88m@vH78a{ zvoR$?{CHc0wD_6eXf6V&DhM Wi-1W{1~DMb1vG$>L7YL7ffE44FB|{> diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$points_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$points_return.class index 30f9c531399347c47f3dc7ca35a7a449b2e5a68c..842ac31a60733a62e35f1e6d90f97fb647aba565 100644 GIT binary patch delta 235 zcmcb~a+5{s)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_7){(@Aj4abpP5%u9AA`L zQd*S9$iU;7mzP@PoRe5woI3GtoHio^S8#r5QF5wVW=<+21D{)RPC#N&acYrXR$^Hq z4+A>`2M+@)0~}W1d21W*99tKthwu#^5L>U=)JoEBWi=1;3i;Gi>*%>4l88j!()f8i7;4R3{%quC5 zFG?*bEy`n11nOg+yq!^9fomhsHYNrhAjt+4WZ>Xs;03aIKy0A7e3Sn%%GwESKvTqz bs)&IfEH45kMH$3^G#AhSMh0;PNd`^;utFca diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$range_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$range_return.class index d3e1f3eab159b43b37d1ebc33a5a270e9b192b78..9aed7fc3eeccfc8dab147228968e47c7fb9854e9 100644 GIT binary patch delta 237 zcmZ9G%?bfg9L3L{F~hhh-ybPfQj%t2X`_^#vX*YTiKbC^@E$i0g0ix(l7$Dbvhf^B zE;}~ooI1b%$IZAI#p~;M0^p!%!$3NMATkzm7V^q>)V5V(l6zAzmSVY*9)a~ePspyz zeP5{is7bJgibu delta 241 zcmcb{a*c)e)W2Q(7#J8#7^K)4m?q0JS~9aUuuP6%)R`z_z{SPD%)rgVz|O!i(Z^uo ztSDPf21W*99tKthHbw@n;QZ2};03aIKy09ee3O4O%GwESKvQ%KRS^R}SY8B7iZX}+X)d4vj11xok_?;x>5C{~ diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$real_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$real_return.class index 01969016cf9a6d17a76c8d7ca9f6d5ed89b2741b..ec312e129185753711773fcb2077c6e5159c5566 100644 GIT binary patch delta 206 zcmcc2a+yWy)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+ka8BJVgAjMsjnwS$`lv+|+ zl*h=x4ju+p1~zsE$%(uc6Fqb$7c*+HF(?8J zW0|~>QC)#?BhU^e1}-4U#=ywHz$wJQ4P^6x*g%aulYcPE+A(cFQzU|_h=Ct0F9arq S8Tf!S7tjD^1~CR+22KFRa2@~v delta 245 zcmcc2a+!tq)W2Q(7#J8#7^K)4m?q0IS}?OSuuKkR)R`z_z{SPD%)rgVz|O!i(Z_(v z+-I@^qv^y8N>-cUo zJf3-ZsYT8?iN(dK#q10clj|9EL>L*ki&7JF;)_yCN{jLs6oIBOPu|F=uE4bs=oBUf z9w5mE6lCBOV&Da`c|dHSZG4k|Fv{8qZ9r2bf~tstA1p5dCPf*OFoG#ynD Z13y?^2uuny@BwKqpaIMbVhp?toB;1AAk+W= delta 220 zcmaFL@{~p3)W2Q(7#J8#7^K)4m>3zXCoZ&RW@liToX)5-QO1Cai-DPen}>m&fn%bN z!NmFTT$~Jy48lANtPE@u|H%n4GVplj<)s!m=Oh*vrxvp_NKBr{s3XP5AXrqIlNz6t zlb@U&UzA!>T9n722-L|u`7oop0@p^MjZ6$YK#~n8$iO?5ffvZ;0kMH5^G)VrlC=}s ffTn0Vsv-t{u)GME6lD+t(p*3T7#YMFBpEmXRi`34 diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$rule_item_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$rule_item_return.class index 7c9da51fefdbef6f76856c3d9b03fb854c42f460..3a551effdfeae4d773cc63e0b790d918052e77dc 100644 GIT binary patch delta 212 zcmaFF@`y$1)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_8%^A7ATLlT9n7gz~h;hms;eUlUQ7wI`Ki`WN$_}ULFQ^1`ZwuRt7e92FZ!MwiA7I7&Rvf zXtFUV0*z#ue1K71fpH_yCME_hAj!tS$iTq+j)5D<<^i#RI(a6uGs)U9Z9r4>0aXzL YKUiJ}ObRpb0ckFv0n7|y47?1S0LH%|6aWAK delta 230 zcmaFF@`y#?)W2Q(7#J8#7^K)4m>3zXCQoG4oOn`@nVo@Uatfo)L>U7vE(T@>ZXO19 z29Ak7223_S5GBT3oD7T%!aNMD3~Uqs$O$nr@Ob9sr4~8oBo-H^7PB)*OzvaUkz`~L zC@RfKjn6De&5bWgEh#O^V^9QYWS)G0QC)#+BhYRp1|A^E1{7rAeaFBHWb=U7K!f=v lvop!s32i`A^Z`{713y?^1WbxDhyiIXpaF~w;tY}uoB-bwC7S>M diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$rule_name_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$rule_name_return.class index 83b787c966f183fe0947a3a23dc71a157d9ecdcd..de40aa68edbc55a98e2ec19d0e25511e0fe6723f 100644 GIT binary patch delta 212 zcmaFF@`y$1)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_8%^A7ATLlT9n7gz~h;hms;eUlUQ7wI`Ki`WN$_}ULFQ^1`ZwuRt7e92FZ!MwiA7I7&Rvf zXtFUV0*z#ue1K71fpH_yCME_hAj!tS$iN_A#lQ_@^MKeuojjA-nPlylHlQi8K~==S Y50)1Klfn#qK$;6^05gLa11|$70A=AHqyPW_ delta 230 zcmaFF@`y#?)W2Q(7#J8#7^K)4m>3zXCQoG4oOn`@nVo@Uatfo)L>U7vE(T@>ZXO19 z29Ak7223_S5GBT3oD7T%!aNMD3~Uqs$O$nr@Ob9sr4~8oBo-H^7PB)*OzvaUkz`~L zC@RfKjn7NWO^q)~Eh#O^V^9QYWS)G0QC)#+BhYRp1|A^E1{7ovuwvi^vUxykpuv2T l*_mYRgf^flvO!hEzz>!e0h6K(VnCV;XaFOFID;euCjfxQBr5;_ diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$rule_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$rule_return.class index 6e48ac38638e16cf0d3c7f6831da22f90f92ac1e..4d6f4e17606e743a825d662c5dd8fb05a444add7 100644 GIT binary patch delta 206 zcmcc2a+yWy)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+ka8BJVgAjMr&nv)t|lv+|+ zl*h=x4ju+p1~zsE$%(uc6Fqb$7c*+HF(?8J zW0|~>QC)#?BhU^e1}-4U#=ywHz<-&68_4DXv4I+SCjVfRwPV_VrsyiFA_ji2ybzca SX5a(TTtEYu8N?WP88`tpKOdq1 delta 245 zcmcc2a+!tq)W2Q(7#J8#7^K)4m?q0IS}?OSuuKkR)R`z_z{SPD%)rgVz|O!i(Z_(v z+-I@^qv^y8N>-cUo zJf3-ZsYT8?iN(dK#q10clj|9EL>L*ki%N4+4ju+p1~zsE$%(uc6Fqb$7c*+HF(?8J zW0|~>QC)#?BhU^e1}-4U#=r<9)-iAc**qXNP$SReAB?hgOdHS?Z9rATzz>!e0+YfF Rd_bBDXaF;V7y~Z@Cjc5DA3gv8 delta 245 zcmcc2a+!tq)W2Q(7#J8#7^K)4m?q0IS}?OSuuKkR)R`z_z{SPD%)rgVz|O!i(Z_(v z+-I@^qv^y8N>-cUo zJf3-ZsYT8?iN(dK#q10clj|9EL>L*ki!;-6T9n7gz~h;hms;eUlUQ7wI`Ki`WN$_}ULFQ^1`ZwuRt7e92FZ!MwiA7I7&Rvf zXtFUV0*z#ue1K71fpH_yCME_hAj!tS2qfMya0A&qAU04Z&t!HcSv#f;Xo^0dDq`RV X%L{=?VFo@R%>^`onL&(!mw^)i%atJ$ delta 230 zcmaFF@`y#?)W2Q(7#J8#7^K)4m>3zXCQoG4oOn`@nVo@Uatfo)L>U7vE(T@>ZXO19 z29Ak7223_S5GBT3oD7T%!aNMD3~Uqs$O$nr@Ob9sr4~8oBo-H^7PB)*OzvaUkz`~L zD9+4F&q*!G&x!e0+YfFd_bBDXaF;V7y~Z@CjiNQAOZjY delta 220 zcmaFL@{~p3)W2Q(7#J8#7^K)4m>3zXCoZ&RW@liToX)5-QO1Cai-DPen}>m&fn%bN z!NmFTT$~Jy48lANtPE@u|H%n4GVplj<)s!m=Oh*vrxvp_NKBr{s3XP5AXuE4m!6Ya zlAl)`UzA!>T9n722-L|u`7oop0@p^MjZ6$YK#~n8$iS|^zzbyafY?Bj`6hEQ$=V5R fKvSfIs)&IfEH45kMH$3^G#AhSMh0;PNd`^;DPbXK diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$sub_conclusion_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$sub_conclusion_return.class index c128361a4f6d9a5995971c21dd9b344c3c71604e..2bdab37da7cc204cc1615c051d6ed146d66bac52 100644 GIT binary patch delta 258 zcmey!@{vXA)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+mw7){(^FnKehm@p#)k7r(9 zYLRnJVsUY5F(ZSc&qM+H$(oEx+Kdcb!TF^{$*FFcIjM{cd~V4(0f|M$sYQBOiDijA z4D1XXJPfQ1Z0rn@6M3B`2I(+rP885&V^9QI#4`Cjqk1*tMxgyn3|v5xje(JYLFga@ zH;~N(Vgq&ZFz^FuMg{=}K_JNqWa|TIu$@B?W^1_1^^Ajt`2>jP=9oYocw fp$$L*WX*@MXl7y%0jm;a5ChU&VC~`zk_?;xXqp^7 diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$subcondition_bare_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$subcondition_bare_return.class index 7db2d7002ca1fc579ea8e6ecaf806b74d5b59e4e..14a6908075da0e0f53b05f23ca0bd88b93bf3d02 100644 GIT binary patch delta 229 zcmeyx@{2|4)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+mw8%^A8pd(RSnv|TMmy%hM znV%P*lvtD+UzA!>T9n7gz~h;hms;eUlUQ7wTFl7c;xkdeX|g_}(&T7HIbI$Hb_Na} z237_(b_U6bysi^Nbr>}#3TU!1C<5(ZnS6s$U4d~U&}t?IE+EOqz{tQLc!7Z%$mRjD pfjW66%QMN^F>OFobO}`v13y?^2uuny@BwKqpaIMbVhp?toB$NWCBpy! delta 212 zcmeyx@{5J{)W2Q(7#J8#7^K)4m?oPux-zpfuuQID)R`z_z{SPD%)rgVz|O!i(Z_(v z#b>e=qtnD!N?e=_j10m&46F=nlX)2BL>U=)JoEBWi=1;3i;Gi>*%>4l88m@vH78a{ zvoRKQ9_=RVGUU=)JoEBWi=1;3i;Gi>*%>4l88m@vH78cd zurVkC6*Eu1&8S|@wGn6&69W&BWCIE^2pKZ)0@*wuHqbCW27VyT$RNNV2qZayY<(aN kmebn8AhZD}fUMaVi)JPU5wI#z1~DMb1=cRkAj!Z909zFtaR2}S diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$subcondition_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$subcondition_return.class index aee5366af2225e5147ac9277aa5c4082b86e10cd..8407aec6f7635614286afe7f203bae984bb8dc89 100644 GIT binary patch delta 223 zcmaFO@|s2J)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+lF8BN?~pe|fonv|TMmy%hM znV%P5lv+|+l*h=xWl2KiOaU;-DCI&7b$;QCQz#tgUzzt;cfY?BdJd*{O jWbK$Xpeag3Rm8v#mKOq(!VG*snhR(EGlLidF9Rn4`HmvJ delta 249 zcmaFO@|uPB)W2Q(7#J8#7^K)4m?rBoIxw>{uuRTn)R`z_z{SPD%)rgVz|O!i(Z^uo z!bDq621W*99tKthHbw@n;QZ2}q@B-O9AU4oqzR3bivUWln&=e)2Dq`RV%Zq?XQ3f#}%>^`okwKh6 Hl7SNd1$`;k diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$then_clause_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$then_clause_return.class index 1c1cc46c49699106d01116d78e1adb741f56eacf..05b65b3229d382aed7d6e7ccaa08f8a4f8639477 100644 GIT binary patch delta 222 zcmaFC@`6R`)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+lF8cp14pe9t3k(w8uoRe5u zoEl%0T2fk+$H>6rnU|MZ4ju+p1~zsE z$%(x76a952H!^CmF(?8JXPJDAQC)#?BhXGJ1}-4U#=ywHAh42w8_4DXv4I+SCi61M i+A(cFQ?wdY5d%M1UIa~qKphYo_TqxMb0^i#l@+`>!e0h6K(VnCV;XaFOFID;euCjg&xAprmY diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$trape_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$trape_return.class index debd474cb5881c335316599524154cce4f1f8b77..7c2343fe4d93ec69b6ccd660cd8d65ecf918a182 100644 GIT binary patch delta 237 zcmcb{a*ajm)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+ka8% zT9n7gz~h;hms;eUlUQ7wI`K}d9wP%+aDHh~a;jTqPAVe& z13Lo;4+AR$8#{v}BZJw*hh`H!br>}#KGbAmPz2h=GIP12ywZ{>> diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$trian_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$trian_return.class index 29ce455aa9e47b87141408c10fe866a6ae7dcc3f..39a60921186c27f739d5961089a2c8a28d3c7f36 100644 GIT binary patch delta 237 zcmZ9G%?d$59L3L{>kikTe1D`^NlCJ>v{A}VSxb{9kk@`&Z(Ak4R5RgClw7WqN8kg`ld9(m z-Ncw8mbE!h xtwMYALI93Y8w9X3q9*fCHp6`Lq;fZ~`-3jO5E9=$`PCHS#vQXDh%91=yaBwsDi;6% delta 241 zcmcb{a*c)e)W2Q(7#J8#7^K)4m?q0JS~9aUuuP6%)R`z_z{SPD%)rgVz|O!i(Z^uo ztSDPf21W*99tKthHbw@n;QZ2}6rnU|MZ%EhCkkk? zF(?8JWSP8+QC)#?BhVfu1}-4U#=r<!e V0+YfFd_bBDXaF;V7y~Z@CjjaYAGH7g delta 219 zcmcb^a)(9W)W2Q(7#J8#7^K)4m>3x>CeE{9W@liT9LK0LQO1Cai-DPen}>m&fn%bN z!NfT+T$~Jy48lANtPE@uf5?e4GVplj<)s!m=Oh*vrxvp_NH8*JPMoJH&d9)5mRJ;@ zlA0D@lv+|+l*gb5)W|$}7o)lY*G8a)Obk3gk_{-xz;vB~7s%!Tv4IBjO=e`0wG-Na ersyWBA_ji2ya<>SWe@|>TtEXD8N?YR88`u>2_Z=U diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$var_input_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$var_input_return.class index 301b8020f61cfc25864e60c36ba211ac27aed99d..67338fc8da1aeed2648150d5fbf04c799de1aba4 100644 GIT binary patch delta 212 zcmaFF@`y$1)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+l_8%^A7ATLmsSQMX`S5R6K zUzA!>T9n7gz~h;hms;eUlUQ7wI`Ki`WN$_}ULFQ^1`ZwuRt7e92FZ!MwiA7I7&Rvf zXtFUV0*z#ue1K71fpH_yCME_hAj!tS2xRIoa0A&qAU04Z&t!HcSv#f;Xo~bu6*2IG X<%PhcFasZu<^meP%pk_V%fJZ$Y-t~i delta 230 zcmaFF@`y#?)W2Q(7#J8#7^K)4m>3zXCQoG4oOn`@nVo@Uatfo)L>U7vE(T@>ZXO19 z29Ak7223_S5GBT3oD7T%!aNMD3~Uqs$O$nr@Ob9sr4~8oBo-H^7PB)*OzvaUkz`~L zC`&Ag&&(?*Er~BmEh#O^V^9QYWS)G0QC)#+BhYRp1|A^E1{7pq(qZ5QvUxykpuv2T l*_mYRgf^fl(nD3mzz>!e0h6K(VnCV;XaFOFID;euCjfzOBohDt diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$var_output_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$var_output_return.class index a169a57bcc8d498da31e06b8e685920532a82ece..794c7246c611e9fddf718b363f636c9ad8e47f56 100644 GIT binary patch delta 213 zcmaFL@{~pD)W2Q(7#J9g7^JuuSQtb&8JHPF*%`#y86+lF7){(_pdeV5SQMXMT2fG2 z5?_>BQd*S9$iU;7mzP@PoRe5woI3Gg(qvyoIbI$Hb_Na}237_(b_U6bymk})bQm=! z3TU!1C<4u7nS7X0U4d~U&?+VdE+EOqzzAg4GjIdhJRmkuC(mRqCRsbC4QPrQQ57-p YgXM+5q%Z>?kmdp!z|0`Vz{|i100M^~$p8QV delta 220 zcmaFL@{~p3)W2Q(7#J8#7^K)4m>3zXCoZ&RW@liToX)5-QO1Cai-DPen}>m&fn%bN z!NmFTT$~Jy48lANtPE@u|H%n4GVplj<)s!m=Oh*vrxvp_NKBr{s3XP5AXt`I6rW#O zQczkFUzA!>T9n722-L|u`7oop0@p^MjZ6$YK#~n8$iP(3zzbyafY?Bj`6hEQ$=V5R fKvUF+s)&IfEH45kMH$3^G#AhSMh0;PNd`^;Ufv=v diff --git a/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$with_return.class b/bin/net/sourceforge/jFuzzyLogic/fcl/FclParser$with_return.class index 50c72d963073c9d13a016bafb6fa41f95481951e..5eb5253fcd243170db2bea2f9a409afd77d7daa0 100644 GIT binary patch delta 206 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≫VOQSZ4gfa>aX;m- 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 literal 85757 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 diff --git a/bin/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionFuncion$1.class b/bin/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionFuncion$1.class index 1587319fd25ae94e38047731aab11339cea8b400..699ee303d5e6e0733cfcb9eddd0019f50c95235e 100644 GIT binary patch delta 35 rcmZ3^y_|bP3JYsL11H18$(bxpj8iACVF_TIHTf@#1>^k5W~_w($I%O1 delta 35 rcmZ3^y_|bP3JYro11Ce*Yfw~W7=GS!mc78)T_Bbv2!c@%iA!u?va34?Vp6g|ph;P_>XFtK$aNQ+rirw1 zntn8meU76)`q8g0(@Z7If-y^JiG`(fp$k^zCC#+5i(L$?_nak$;Ya7pe3$b*-}621 z^S<91ckQl79=Z0$5P%A@m>?0VMYFZ~^`=Ip#=1GsxoM3*6!32ds@n)Dg$q}0@pt>n zBH=)=tVIob2$q&Wd#67f38@6{-1Q~9FK1_lB0;t6KNgSIlZXr)RuIFGcupx0CzKMy zQ9_M&s;IUal7{h~0ux3Ebz+$*N8Fg0Bqroc@vQac>pmhRw1!mGorDT}qF@Z4iZQFp z__=~FFfOdN4Ejq6In9hK1cPO%*P^Zep{@TZ7Tf0;uPXQ(lfrLLqidqup2J3qz4lxaNsJ*`#O!%A zB_`}`WEEA(I~NwgfD$MuMGDH0!+jBlT#j2&3peWFfe%Zt4qkCKc|X zp%Bdsyc1Pu!E&^s0jv34gZpt80$7W!?8T$F8@q51o@R=DxEIgkKD>nW=wnn2ejLFD zjAA3Zx(TPC;u1FF3feJ+2gr;7rCeSIszfJM7odyk@enm*E3HF_RBWRT zgy~^KXa~CKDQu@bc%)ZKvyt_2NZ7%_?L-!y5ZR8UJuVQxfVrp-nNb{ijmHw^ack7S zKZ*G~R^k}sqkw0GxA6|6-qf*2VB!82$U4R{h~c)Pe!M%E=$TnWmKh@X7~U6q9Oaf5 zVP-Fq@v=DXaOQo00cJBJ5yyEXv$MLMNhE8h9K#7=Oka?FfHn5&wCSvdW0Z52FKvS`N5FbnM@#oJ7iwq7!3^%wFbJkToi{<$?#FqwKLc~eZpML>+ CFEXhB delta 1244 zcmaKsZBSHY6vuzh?h1F8%d(KNyhShpZoG(WFq5c^D3}bopkPT^w9!VZum~;22Pd+b zW@@HBI8V*wN9#*X&Ge!JD1%0(rIwM|i)Nu_?`m0DW@w$eFbva&?uUENndkrf&w2j; z^W1IaC;gto*Z1rN%9SG?n_|hfOIi9RSArh5r@ztIVCsy-JeRX6+#U%=dwW89QDUj% zZN<_Vu%x^)7o)sm63+oet*(yGo}$Rm%02&v4-~VSdqSbg1j_l)WQ>n=joTmhvB_~h z(OcYU>NEYE+n@2J$ycmU#J7i{fnaCIMGL1*&Tv+raaS~+Q`jnVT%-|DBt*NKqCMeA z`|`F9gYOm2Ml&N3xJbsH02Su0^lS~QO@-4(q85Jz! zHtJYFfJ)Z0NH-;KSJgW&B#*29dI7G)M}q(x1+tnN*072u*3!&<@(yzc-Q39**71aB z_6&FNJa@B0s9xqCc5yEwv~obuV+1+D{UT}`=Xrq3gt*3o%Aj2(^N>m>tn%2PO4z6> z=uk@v=u~w?)M~oadN!#L-Kvuw)yKnXD^c|nz3N%|c6QHptHejK(JzO4j7+xbr{^rL zycIi22Fy9kXiMQB`(KyD#?A7Mi!D4!p2X%Ph`l_O-3 zGKI3D_ZSkifr~>D*+rrl?*tyJ>_HCek<__2z9O|=jWMK3Z3I7A$BK?<<(;SA*Ymxp z#!(xA;@uq60dK0uO5UV$JDI~&wWNHiquvGigJQ;R>2VM97#80~Sjb*6WS>a-7M+qm z!hU_sTa@s*cxxBbN=|4at-?GhDikD2Q(wr;*QMpELwaLcY5%Dq#s^uN^7R09g}cZY z;2VhsSoL3>j?U02cUq@!Ss|28IaBqN(B4?L-wEgc(jA|qOOf5+o#y*N6e~)f+yCSA z{_`n6OGCZ^E=f~EGzx2y-7op?R^;#}N#uKNm@6%@!dGQu<^U4{9^{{WLT-7L>AUO22O^8$=h1d_s&Jy=y4>n7*176JeW01UkV delta 39 ucmcc5eV=>7L>AUC22O^E$=B2a>{*Jy=y4lP2e}76JhNVhlb2 diff --git a/bin/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionGenericSingleton.class b/bin/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionGenericSingleton.class index 68416c915a85405f7ffab825dbf52dd0bd68ff4f..190031e5143f720d1941d7ab1079767e190fc0c5 100644 GIT binary patch delta 1800 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 MhBfpd{$-BkU%vqRhX4Qo delta 1384 zcmZ8hTXR!Y6#jOSHYX>SriXNBXt1X>p}CX>sxS&|F$iL9bY!CKFpifXHMGR4ZCYEj zL~21SEead!U0S?Us)7|KFm?ugbJQ7Ue9-^kBQL(7=y!6Vv6IPOdw+YaZ+&Z>bdkZ~)5E<2mf)^Xw?M^+aa19Yb>I~=30PCTnTL|k5}UxJ6|V}o`;#NdXgWENiY79H zeFG^6j^VgW*tTpqAz;?G=_=M^je?T`BB)?Sz|^cOc!M@Xds<$!)n{h~?6$sV^q@Yf zx3v>~M?lp>w!z-a@ZbQ?@6mm`s^A0SCC3ipA5os8kRB##@EOo2 zlujs`cl=DCl84ZCm83)a1-vq@hMZqeAjNLRR}Nf|6Y7ILG_Z6tn`z>|0+n0=Yu>6- z*k=N@u%Heae9&3sX55AtW9~yEx)4AD8<0ZN<;(VaMIb_wjc}s{&4_Z{gkju)(|k@6 zTkt*ae!<o@+W7b+*{RV+rw1%!-GyaTh*{Og>Le-P);Sp-|$d6 z4x&%~TGc8Zmcp%@`*BG6-B)YUmzLq$w~Vd(w1F$w)|A8Z+K{~N_I5tbQl3CPp5$0O zg`G%Zmi8R>V-ZgyMD8$i0zcA5XpP-49%H5*IDtp0z)Xf8Fd`GxQS*x!mB*?B&0`C2 zg}+5zjioi1!`KqT%m{MT@??GNV?Vq&1V7U9kLm{dI4Mm;b)=+8YfT@yilY>&y_Q2P zhpsDlJ#KDaKvyJR!xXPb@Ab9ju*s-pnr=qETfnJ8Tn_ObpW%7Ua^O7Fh~XITnKX$4 zIREcA5$#Pmr`39g_}DVIowapigk8+=H_BIHO#Y^=6=&q1nqNriT2q@n8_yGV6r{XW zlwvMPdAlg(7VvIKO01_4@_sR7z2(5_pfac|%)-iNOX;$!N-yQ}t+0K#x*O+8z>3d& z0rHlGeO!V{s)}LdKA+~K-xJ6lfr2bt{2at^lzp1OI6nhUOo$pxu1t+sSDYF}Xjs7K zoSMU!%TJ97F5zIOjrlPq*a_23j9al)h#NRV#|voUs`6@)F2?&8*B0|b(6-#dL5>tB zWU5T{m)!qv7V^L;`IpDPcZwV*DSH|nv=3k=FHa2c P$S^bmxnH& diff --git a/bin/net/sourceforge/jFuzzyLogic/membership/functions/MffFunction.class b/bin/net/sourceforge/jFuzzyLogic/membership/functions/MffFunction.class index f7d5e3f15beb81f30271648e88e83891e29f14d0..e41b628fe797d362a97595f328ebf2a611850c74 100644 GIT binary patch delta 1443 zcmcJP>r<3v7{-6k?y~Q)tO=UvZbA|a?g0jYs8NuE>yp~41tLKyy~2X)th*bm%%BpO z+K~?QcA_&@Qdx$F7LysLzSvCD7yAqP?&ta#-S6%?F*eh;W@nz~-uu3;=eh3dx##_3 z-Opu(zx;Lm2Jj$@8Wu&9p{w=A@3w+V4~OjARt!et1N-&isD3CG8Br8@ec>bes9tj{ z6^+$&MpBK6{Lbi5Tu&VvjwqV%t~VJ)_CRfOqsA#=|3lrOj~o`dlS$T^%NZAEd0t`F z2L=>tj9JUQo?a(iyy)U3URG#Bk<`Aiq}XGNV^@8K}EIKXNvE0qIk!} zNybf~@41-aeT7|ww#8x!w|AK%!9*+;=}$!y@kU>-!ZxZ8i)*WwA##n2Z`Q&7gd#9~ ztGeDgs>?~m;Y7b4yW_Um+CI~EMeD!$8DBS>zB&~JsYGXLI2s=cCX)`nP~c>auQa|? z6lOe+>G7eOEXKvxTre)$8@%5tl-G%s?_A8YY1ujL{V@lZ6_%)*P3wT214p3>{PV;W}8LKK; zW1C$%7nm0nHde`6hfCHcaL_9npQN0p@Nh}FXI3tu{+ zl>23OFvbUbD6?2jr+D(QbQ+uxPd^c}?0hN^mlU(GS&5n?6UM$Ie7lCyWOkLT=U|Do zcTyVGT(W9O#NGw8EXhMza%6Fr&*Y($X*9QGY^)el&Vq)|=NEaP$DihKn)o%&FHpJa zn>67x)nV(_Ia<;BWZZUo_GZE>S(a&?HDg_A<}r`TILE0V zArqC9fq900i4&wUHf<0roX*))A%=cW+Su*#IOf!5i^!cf#+{!3U*(vnJT59vh{}_q ja$HoN5S5evt+F(u(!zo?Vc{A-$ZmddrsS)1z196UEErAz delta 598 zcmcJLOHWf#6otRj0&Q=bOT}pHm6wWuMQB4L!~|#w6eQM1BmprY=2{d`ERAU#mTE*5zly-VaVADZ{PF`@0X}Zu{XO$#t++dxX zeCM`0ON*-Fj{X_w*L!BD;pN5`&i92Kh8)tL82?CR(QAjKLv7OC{DJsyxh5xsx3P-r z9o}lQFjR1Cozu02)~(}lA-A<5iMlD0T8c+%kL1=Xzq-pM`ULbIDVay<=cK6R;zhzM zrA&GS_j%8vUJP2^33b(lVpi{(*8it`Ae1S2e?TZ73gsg?4G87%zbVZ>luH8dV)+PN C%7T#q diff --git a/bin/net/sourceforge/jFuzzyLogic/optimization/ErrorFunction.class b/bin/net/sourceforge/jFuzzyLogic/optimization/ErrorFunction.class index 316eda3a7cedc117e4f296d42a9431624b5b7839..b2b762ff319cf7e489efc36c73dff46cd6b5b83e 100644 GIT binary patch delta 175 zcmZ3?yqH=0)W2Q(7#J9g7=*YOm>Kxl83foF1Q{9FY%=pQOY9gKm^C!R7#Ucc^HWkM z)|_DFVPIikoycoh#K<6!l~|UjpOcuEuJ50em6}|_qR7AmGy?>f7=U^hSb-!PkY@~} z8G$sb)^-NQjbLeZAjt((#=yV}RLIA`0c7z&6ftlDWf)i(8MuKW3_vknAj!nQ2LNDu B6^;M^ delta 164 zcmXAhJrcoS7=)iU-c3ig8%>k diff --git a/bin/net/sourceforge/jFuzzyLogic/optimization/OptimizationGradient.class b/bin/net/sourceforge/jFuzzyLogic/optimization/OptimizationGradient.class index 1ae54bb1c42e34a13eaba1198a8a62f61d10cfe6..4c4e878a08ed30bfda428a3e2c14ba4a71425b35 100644 GIT binary patch literal 4832 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 diff --git a/bin/net/sourceforge/jFuzzyLogic/optimization/OptimizationPartialDerivate.class b/bin/net/sourceforge/jFuzzyLogic/optimization/OptimizationPartialDerivate.class index 0bc1cad2cdc17e37d881e32642f3edfe6f05feb2..67e937ad5bc9c458ef28d237a82241fd9264c6fa 100644 GIT binary patch literal 4816 zcmc&$Yjj*y75+{plY8&vHf__SozhZn0b!D+B+ybwQYvYaz?3AdO(;;na5K3{rk%_U zGj}SjywoaI6d$Ni9tx<$H&AGbfPnY}1yQ63;`4{UU9ROnpnm(@nPk#-WmWz-Yt1?P z>~r?x?8kTROYc4PEP(Uyj~F`fv8oMw-}v`E&pdLeg-!Ul44;r;pA4Uj;ZwNHz^7xd zuwRDH$Z&hrbN`|S{^ZbSW%yhSci{6DzJMzP_8#*ZkY(uh8F_XJD|mEpgHdsaw%`b&y9M`JG%>e_wMQON7Je1Tp{B% zZ{x5r{vNDH@4XzMPBs&`j2UR*-=d#wOV;vS; zX{&{2^_Ifg_Y*kck2jG|XZ)-}Oe@;%W(thpy#ByV?do+WbQKer2`j~Fn1Lp?LLw=y zN41{{)tMr4(MxhQnDJs-v1Zxn60YcFB;#cXgglxL+<;wDPkmukWZdj%bAOOaXGfXb z`Q>tKIO#Rrp0kgc>r?bVV?-n&j>Y;lMs%m8J)Jok>m1Q$V*r=i=t8%RZAjYamthds z8TgrvpW_z_=gkE?v)W~AsXA@^62B604lm**8`t8)Hm=4s27YbhH+b2=D>ifeqlbdyhy?lx=ztVA>usYft8^6QvWq6HkU}S-7bjs1l%WX-6eplNjpu*kND z5d(j<@i+Y4#-$>DX350adB+{fJAv;zd3nK{M5*S*c*I%HQ8n1uB2o)20a#}`^K!(r zbWI6aL&r0LJ2-83t0e0~GHe#{#nylyxS3f=&x?P(vb!>7_4&DRhi|E)A5$lh^9UYU zC*>CMUV~WBXPlW=)H&{qjmwJ4__EG;nm@t89yxeQ%qmltn7*1ewqmRLi_tt)9VFe z{xH9BPVlZW`J?ih9n=3?hIV?Xfc+oiZdVDY*xJO#NL~ag6P*n^6xN-zN4i`}Z#)ai z+fBgZSCvBZ|MX~x3k%BHbx)pOX7tK0%sho@zj-SGEFg?|?l`Ye;&}Kv z9{7sgPr>E9=5Z1;+h*X0P^nOtIQ}3Ngh8L}5Q}R<+{+OB>rdnm0n}ib4f%P7M={I> z)6mB^mvPUh_i|z?Sk}u=gxWLS)y#yc*A2!fMGy#6*NK(<9`5A#^gJj5UQ$Y`m~*9o zho0HbdSQoq5h#IUwJx;@wqZS`dmr zPb)(44WS;Fv|ZdA#1J_taw;&)KT(rA^hiBG59g78r11$D%cfvH538+mY2_4Rtx=h( zTaBfaaU&j0O~F2Zs!6N}*Q0t}6OYzm-mcc@B&up!qw#3XT?ep?%I5RGUS15vvxl(}apn%f+i7;myK`wlR)Cf_H5|9pktRO<0B1tcP=$|8t4c zYZ%k>8JTq$Lo2RF8}3CrUc&|*`D>Wj9jL}APg@eN=^Py4`J|5X5u~|WK^re(Cw4Jc zb$9_8@}ji&G{#98Je@6Sxt`WM@~X*^yczFdl>t8zSyHj$9aKc#!FiDjsCk0k=xkNI zN%{HA+D($JDL5B3UiAc4R$g}qD%C-dMj=m##ya)+

gQ)lJf_oG*AC&YFlwDMM&l?G91OHLX| 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 diff --git a/bin/net/sourceforge/jFuzzyLogic/optimization/ParameterRuleWeight.class b/bin/net/sourceforge/jFuzzyLogic/optimization/ParameterRuleWeight.class index df7b8c97576c9feb29be159baf45ae4286404bf5..13edad05686d9d524fe21f90a3961a831cef7e1a 100644 GIT binary patch delta 613 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 ORrJ!+?|HfkKl}sf%!$MR diff --git a/bin/net/sourceforge/jFuzzyLogic/plot/JDialogFis.class b/bin/net/sourceforge/jFuzzyLogic/plot/JDialogFis.class index 5bb56701ae443f7a09d38a1b6182e1dbf798dd4f..beebccf468e7601dcc814d557eafacd4639147ab 100644 GIT binary patch literal 1929 zcmah~Yg5}s6g>+z0wEqTghzoE+B7vXi5mJ2N!nscV`_q16Q`uo*RU=8`kVrTV|P@`Vj)zBiofNf${Qz{j>ed z3XUDOX>C-Lbw!}>j^jGvJ%MZavMWO?@Y;S|?sY>sOk?kzf3O5i?3d#h9Jk>epG`?%;4!`v zxZ3TKCTidbzE?y)X!y~=|f++818UkWPxgSadjxXModyUDko!#FnXcH_wrRU|lep1cKC@hmm1t@`=|JA1bXlqe`g>t z8=dC3ay+?aY2%P^eT%0$GU(-V+B}8$9X%cNZkmOq7s&80+d<#2eA$C*Tyt~Yb;24guX6Z4<_}3$R zGxksMjRc<<>H-p9?RX0rEATFEB}^8dg732C3uwP^6PM8!85bgGBX&rjg}TMGC|&*{ zsrsH*Oo}k@68etW!C>zxjN2Kto6dAF#Lckz5+gf>Q;hxw%~aJ~p(VF-im?vHm8W9Q zUF~4PWXR;XoF@Mvfmvk9K1S(gS=Ky-TcT*olCStFYsV|xwCFVzr?!m|Z0s|SW AqyPW_ literal 1896 zcmah}YgZFj6x|o{fH(qz@~B{;^${j$D$<8WZ6!z>43ajO7Hc0vatVWBhLxEVc^KiP*@Ce&pqetbN1PD-v0a7-vE|SPohsD<7hwYxvgeZ@3_sn z&hD+Yj*eay-MU@P9yDA(yS8Fm4Y$5(dr8C;#`dh=tQT4D(01zY?i5Bm-K1MZH$B^R zo)lIT)SANCyz6+r<@gn=(b93^%8ycrA6SlVD4Z{zNLLbTP9bsEc5MH?!sT@Fv;tQP z<=lKlA(nS*I)#3W7%*^7p+7xeNns2Zk~q)m1SD%6`q@p_Z9KPq1LK%bI9J#Hir%qW z4Zm~2iqi8zO}*|pNi}8Q16*WJ3@TTfT03R?NGpu@2CUfo+7SwJgP6gGNnBDGjnJc8 z1GAVT3x{^i-z8NA@&4GrWw9o9wO!x!Q&6~S;2P5GPw3$B|Jf)Mgpc8(?dZp?{cYXc zw6+_paaiE))PwGimnk*!7N8v)Ryq4V; zMeC*83aGtn;2x;3A;MFozIK8txree!;Jz4eeKK&kp1nOFtFeCK|zf z6edpWg=lah7lw7@G7;jwrxwYRDhC^F)fVXwcQ@D#kpt$~Qa|@lA3x|g5J6-t=Dmb>CX@#i%(dJ0H!;D&loRx3;{GV(=#V9hJswv^q67%r69i<`bYVV zPJZT)Rm1%9#`VHjg_~IHAZ7Vq@h)z@!mZ!=(g$fnI02odbR%@=q*k(!Xc1oiA*k&1 zk{NH~(>J)iWww#)KgO4LV)8Z>Yh#%&-7>ilk)(s5alX2@HI>mdzKY0u(Cx~bdPUqY;}WVO07#_JrND1h=x)`L#ac< w7^5w0vj@cq*E&7jCj&xO!pyMPZY8O}dXxDV1ElfLD?&;H$`LX(qx-P)AIyoL{{R30 diff --git a/bin/net/sourceforge/jFuzzyLogic/plot/JFuzzyChartImpl.class b/bin/net/sourceforge/jFuzzyLogic/plot/JFuzzyChartImpl.class index ed5e6f6a2bf2fd65b781c81af65a51608ab1cb0f..23ee4a7295e3ad73b23c00b26ad79aefccd8cc24 100644 GIT binary patch delta 2766 zcmZWr33OED75?tby!U2#vnB)YWg~ks5D2soJA-8nLcm0ULX3zygdv6oP?7@OPQ)Uh z=UC|Z;Ru035t~585|Ww_C=|4~6m0EcX$7oRRuQna+S&%w`@czOZRebM|DFHc|8C#C z-#@EoU7FeM^Jb`oK%%j!eo4G3F=uK0ip289gbUm7eGS{iM(;@b4(t>!c?+CwRA85m zXT(HrIHLm3>i8kn5`1-urh#*n^-DFhiL2ho=vKJofgkC3PHH(>Yi_*ZYY8{j<9QuF z#(siQ-&hr|A~=f6Bll`JAWD5hQaX9RU$Y%A=uprl;=ZEnb{x`i7(XT0;|mwEQgL~C zWUd>nII81kI41V^zM#IS<0brDyyLs8`DGoi;8lWaz;mN?6q#4-Y_R%V!(wzmZ_)#gPiR{icrJ<1|}XA+x$i+OCMO?FRf& z$6Gl4WrBN2V#xw7=R@@myRjH&<^H*3w&hOzi9oBI_%rKO-qLg7JzUUmUR?D@>=$uK z3=Wj3S8!Fs`(kz=$NmAXiIsuQ!YjC;<3n5{1Z$Tk7`fTC@usH4^1B zIdSp~?ut7<|9Y&4Y~;|$P8ceV1cxd*DWr;dp`p%Ra_ZzFbUqc@Lz#nRIaf2#l&e#o z1lnESSg~|b{nGlTMCaJlN#tpz2@=_3Zfq0l!<}?a+&*YU+Ouvf$1eHUA|GenxI*{p zG!NH0PYpVwG#A5(6u>shG0tA*7}kZSJJ3?5uy|~;!)UGP#-5my_x46z zhU*~qwP5C9wAX|>y77~k$MhJkRCF8aSL=LT=#f7Swa(u!4y=Y+J0K>N1GSd6)AV%V z2pc~xrf1$>*j{6LrB$D)ci}|LZ~BjxDN=qd8j#B=OBVYwjqIK^AuA|Ln@1d0Hop?*GjrW+k54_wCPg4CJnfA##a}8=gq?>*tVET+e7tXM*Sduk(!4cEjgRz8`zWJFgNaq|L4ZR(D$8>h! zU5CSd5SL?m8;t+ozaGY-Iws+uPJw$ed9a|B!wj3R#@s_xlRov{tD){hq zWa3*W#A=k_F^tA{Fdl1Ag~w5YwTNRK&&qmy6HoBl4J>WszWpAyV-t?yX&%olJa=1h z8ZCI6>F5S_;A8A0!VU`I88We(GSEt+u!p{cy)*&)s0z>1T*leZbX2}l4)?7j!79H@}@<_){ZuCrBDtXBV6@@kr`PrZo zB{qeEyyxP&Or{W}u&ebP)+Xe!v>lHkmr~i~G2DlI6tL@)m`P#Q^KoUS(;ylQKi6g) z8EhqhkC4q(*@;jy7iA;r@DOw^%@dTyQ24kwjn-j5S7#`tbMXRH*MB6)RVhfCp)Ksz zGDGJ%8y~9KN-xGFC9cj0%A_m~rkD$H1A#t9&!vGhR1kmc8d^mlCmd;IDX1Ys!v+oQ z8VzCEK)8?NbpMZbRgN*j(uRgnKp)Bx_`FKe)I5HzVKG}1n{o=MRUFF6NJ$<?6l*pl#9C1R-%Pkt-v&K(` z$MDuhJz;;?&9f07XB{wai7&=ZuWGK1)+!iRa)KVMN>b(e)c(p{9;SqNQVSN zoXSf}3h(EYsL5i8jQkOWJ*L{v5N}%fJ7oS!GJj5gv??AUr|8Zf6On!EU`>NBzF9mGr3hNlYPbz9nr+R&94p3fK{2(9 zaRmlHs|&Ixw3InYUI8OTUtv&bPLv6s=0-I`=?7I~P`4t5cdP&Vy(D}Ivgj_zE9zO} zBg1XzwNZE27k2FGyI`f~lIi)9>G?Q4L52BKf>7j;(IBMqh^3Li^I~$}r(rauBSu3| zPT817IhakksNpMa5w9z$0FO~IHc^BrYM5ADIA*FGeg{(V6wT)Z6{KMu-OrN7JwD%p z(uHYkK@PARvr%QirZczXSTpG3;gYajEF8_nNH0p`XIW9+tT%3zkc?+Dj%CBjue;w E8?xMdrT_o{ delta 2816 zcmZWrd3aRS75|-iGw;pvW=)37%SN`z0)#~&Is?jEu^t-;j;2Mm^|b_hX=T}MZd7BF ziOu-mJM~NDoySdVm3Q1ti>l|%ZkpHBl8`r^FtJT|y&10Uc+$WQ!ay-m&lj~`Q+ocj_pu;%JP7e2%p z1E(3GRq0`I)*saVfsa-ND)h7X#K1qrs6f8%i(!^IdFJi%=`bAta@U@s9%+oI88?h=lHakURa0u|tsb5?_q<%@u zkn!`I=PxwLMw<9EnB#JgVUSK3AhrbuI81VqOH_siI8)>?$s{egIJBMgOgFNzEIBfL z9CI^HDbzVv}5+kV}snXX!SRZpXRgk$!JETF1eOG{9D6 zzfr5O5A4R;y;!#nUY0iQ#g;Z0Ed9C*?G+BGk_Q^YjurD``hIlO?ZK|NlXaajSHz_* zPTY@VUFdgvuqW=ZJP}tqejm|)*y!uV0r_V{Z}j(xYA;f{hAX<>(+%ph)ADrVARGUK zsK^;LI$39VrB$D0cH_mk-||0G;gIr?SU_$^mE0GbRuO84W%(ij%O4I6V~=8YPKNWK zU8VS{IF?h;$_Dw`ozkY?VvkL2xX$t&L~}e~1-kKCg+r?dN-KUV5Ds?Zjo$4oHnu!S z;b7RYCG}xDuDycI+E_rj&9eOLmR)z_U3oS{kw8Rmhy}tSdF2DkX>qy-#e&?l+EbzT zEoT@0ZntZD@p0U2M}!l;FZ3<_XK_CpLf%|xlJdB6%D_+;*5$wQ9bYc~b zL!bw%xfRynWB&R%){=%t$%Qrw^InYgRL;X^C^l0S9;feOD}5i^XeQce4tBKC0z64e z@f6*QowSno$Iw9=v5U5%lXhS??Lrql&HKwdT28Q$9_*(}IA9ClSz87U+M;;Qc0FFO zjl*Gh016;W@)IV!;2)NzU@Etcl!{RT8*H}m6d@R~gU@Ig)c5+7yv!zpj zg3uASc_>6_O!+Z32c@&l#kh>8F!f_s>p8sDC}gRV(J7z|c6l7rQG_VF?!iQg@HrnN zGl4A1grBjwk+RrIfOO*E`^W5S)?xe8Jz)?Oa1xEPx`I| z*=@AX%uaTz%+LkS#)oMz8J7`#QU(T79_4c|r3}QE2z>*KNK0|WT?WWNHPH-K80gS| z6t{cein>p0AZQ@lz{3WT1{G+GVmO5W-2Z=08gRn=_6JdupB?OA2W;kc1H%l=VN2qk z{3vyZ&H34B>Kkww=?2zZMu~xo;%I(uR$&eE`bbO;n4>X0Vpp@m6VZ9Z2xmdLnXDTm z8&S@Z7sc3ulGX#u{S@&;ybUo=*dKOttI2s|Irq@$xPOpp5I;AL*4sFNoHn=yS%JMY z)(UhoI2zo%PC$s)SGdZ@xmqU>#_L?mH*hoFL=E0%c;CScyvu#jgV{KV1vrHzc#pfK z^%PU#eQe@l@5UMI$48Qj_$5~Y{Oa{_ktInJMv)~+6PuDGD>Zhwiz=BMc6PgisuTgI zp;7U`$!_ZviCpY_x+1EZL%3D(z=H)5)F{q+(b7i~KL^vFLgL=Sp#`#br1e#=99~r< zSyoo|R#qG<9HjSxDr`lAiw{`(K8z%+OPx?S+9i&TUK|})aQsY6Ey^wXg5mm#--Pqb zvI`i3i?|M7^B6hLa9-x#OK}ds0MI*{&OW65jgrC$&+-yS-R5=)Y%SDq_i%n61 zUn(liOoB-R6s9l~hKjnMj9PN&hG-tOi#wuOMg07DB8GZ=(gt?ZH2$3uP4n@<_m=!LWjjuNwA7>*@M~kXFaPU;{@%)gDo=G9@yfp5hbPVS~7AFgp z+{8Cg7AAAg)p4iJ=6wnG=KWNF)l`U$6cx7=kNA!pBX*?Y7u;Pz&M^}!=nj?)RAPpz zr;A5yoyyzI1Ep4#&g3bTue#aCBUqO1Nbzt=3M$FuHM^v6(rXp=L5IPdrytZ@Ni5E< zj^2(8%P}yl^P{6y_2%dl*2DHKsWYm84we1QM} diff --git a/bin/net/sourceforge/jFuzzyLogic/plot/PanelPaintGraph.class b/bin/net/sourceforge/jFuzzyLogic/plot/PanelPaintGraph.class index d5a309e1f8e8f3d359b47555bbf2cf814d5f6541..e48da016b2faa8000bff982cad6b561d47d60267 100644 GIT binary patch delta 654 zcmZ8d-D(p-7(Fwa?smsb(5TV0Y!h|-N#@FJJR z%dk)28z^W)6~rqqda1%EgFle7h_V17M|teNs?Bk4YBJ?l0NwkqHfxRY`A1Hl=^`uY;caYm=8QC7dexR?a-{CCmU{w3HjJ}U-E$8>N&69+R{Qfj% zjNxEtIKV7#1%uLKqQc|pVH!6{)@j)PC7}#DN5AENQm}`j_CX2~CGA9F4k2X}#Vu4Y G5BD!W{Zo4Y delta 663 zcmZ9KKX21u5XPUg6T3Dhlr$wx8lWW&b)16J68=+`MnI7&F%>Zyu#%uCpgPb>3=vbs z7lipD*75G;qs=Ca4d8*XK;6 z1lec7t6N|m}-Unhn=VWcG9q^N@WL2s${WrFYL71eH$g5SJ-8N={9*)w@p;ZRyO=#x9{KG z30|~2PolM^jT$bPSP>NCRVk(&T!bIz_4W9jl;S<9#3Nas6*!x{UbwT-4WcNFOxzF@ z;x|$l2#n_Qmyf$47HLN3_!^2x!(e14(G)WriSH@q931DFVRVOijZfPf;e=QFgzSez zpW~THNHgrn!NM$W;M9?t&padcDe8bQ!5j)>sGr0@+WUy?d#W@NkhlS5isMj1!I;Cj zF+Xm8O`@8>Rn0$9{)*D0OvXFFnSCDT_D85}sZ#9++?4}(^qXQsF5XJz2MWD#)IPE3 zqK;L<=lRh!T%wrX+-5;-!uW3sc9LD9*UCQ|FeZ2-*{e`>Mb$N2#WiBo LUs1w!+=TTPiJemm diff --git a/bin/net/sourceforge/jFuzzyLogic/plot/PlotWindow.class b/bin/net/sourceforge/jFuzzyLogic/plot/PlotWindow.class index d2e2c343d9fc1a7d84e274f58ee2f1fc58bb0da2..e81ea3073f2407a00cc83586bfc0e157e7a99389 100644 GIT binary patch delta 665 zcmXX?OK%cU6#nkq8HTyNP@uKNLB*mdkC~#S)oKwRtq(N1aM1)8CRk}Qwo(&_8WZEn zA3$#6!uT7EmIRC>#;yJcmo8noHl925EY9nm`+eUzf5dNb|L4E2-vBJ(jtyUcVNtt^ zz!{v?*^)p4RU69!Hdbt$bEtV?5UM*=a1nu_aXK%HG&)>R`Q34A1F|+m3gJ9N|UcRMX=iPAt?(pO=^VdPNP7QqA1e* qWYa1|Z8J#|1578`-vLCDc>_#o3KlLI5BEqQLdTThIm`5B!21sie^~ke delta 662 zcmXw$O-~a+7{~uJyJhJxlomuPrAX20Zo6w03R+u11z)O>crcsP+lnPw#X`~sPsXD+ zBbiSkO7YMA{FwUkWVZyoGb>7th5c^0=VJ4R2o8*%A&445Hoa_+dMIw%ep8 z`>ErrW%f=87+BKuWwm9bY33ER&$9_ZZ@H?&*GS1$0h?QOd<)lU;1|I`PzqjmN}J)U zW~&|UwFD}t>EasGRGequB1dt9_GV%h zF^rIBk;gHLxZVocalMo1rj5{TP%eQ9s!WnsrCXn=l!-1#S7*?YQ zmptl&hfBl~Bv-;^lIHr4ozUOV>rAT3Yx0!=$_=-V)h%y;O5+GqN0{!T+QVAG>*4l) msUK#hqNNJMR@^15KKV#gKRh3aa*~|EJ=~{}80r+~c<>L~-&!~T diff --git a/bin/net/sourceforge/jFuzzyLogic/rule/LinguisticTerm.class b/bin/net/sourceforge/jFuzzyLogic/rule/LinguisticTerm.class index 2b9efcb835d835e1f2e9d23ab4b7e61d95077884..864792885461d68e2a1334200582bfbcf65f580a 100644 GIT binary patch delta 109 zcmdlXu|r~mEC;VJ0}F!)11Ezh10RFfWG#+xMybh79BzzqlTUKkFe*)EH&#U9MHfnh-bFPECNnV5 zI29$4h1Dh)EjNy=)n-bi1=B2oy6m=_i0zWjJYv+M^-EC-30sQQJChn3smvn(-e`5aWLy3&t3}@DSVnAuidf-D8Ni(W_$g zng1ET$T&V>pKfwuR|b&cATsR37%w2li+IkwMz8pa2f z`4YqyO!F1G5x@>SWQA1(kwB7j9FS1hWU{(uJRy1 NYpd%!zsd|}*8r%3_>nB$B_F8Xo2LJ0jSI^h*s-MKT>NMuwJZ7h+ZWf5ho$N|I55sPZ3 z15si0V>#H5=!{*fQJb+)p|K>Apk=ga(<0i}cSjIc=X<~NJrCdE{E72#oTEL}+@85o zJzmvX1qDBVr7UkBo8X;;b>rCSpsyu`?2b3MM&yt@6fAdmH|TJ{@)}-;53Q0Ejv6J) z_dH=KLpdC@eD#LU;m{mxebWlI$>gYX++MoXoqj;v`}agVj>EUEqh`esvsAq+5qO=U zmdT=Z6}cn}6%|pvK4e}xhc0%YkEf921q|~d((J@*#*ml%ktgw$UDzy-YlhE#B0{j` z^kacpPJ-Bk5l*2A9@Jux(|iXnBG}KIcop^{$~?~sJB-R=r8pyeh0KeiOeF6`BB(Be z+E}iChXS6BTl8+*R^3p%th?=fs#mJGQ~~|dHdVi*tHor7O?6$;4M`O`7H%$0VhwL$ z1GO%MkE;Qc^1g0}w5vz(^Km8-sb%9+DTh$Q6b|zlj_^57^Cix61oEjE;~26`V_N$2 ze1%0$WPa`Pdcu=}O^H2+wajCitR3VB?BOiVa1K437d(#y3wXf=eCH?n`I#mcd4OMZ QUGxXP=|m);w>Gu>2ZW`dKL7v# diff --git a/bin/net/sourceforge/jFuzzyLogic/rule/Variable.class b/bin/net/sourceforge/jFuzzyLogic/rule/Variable.class index b26626f3914083098ad4c4ee77c892def4ecdf94..cc9714705ea87d2dd688fae67e8f46768ebbe4d2 100644 GIT binary patch literal 10217 zcmeHNd3;pYb^fll8AeYmS^%+_VU;u^F*1w6l8{*>EU+XN5o|DC2I&b69?ht;DBw1A zsbi-}oTW)yFG(DyjZ4~+#CFjDritARTBlAIJ6+PIbrz>voH%XM*r^lcJNLae^JX*> z*!7=*AM@_qckg%4Irlruy~A@qdHRb0HYn4B5{0IinF=N2>BOKp98VlGL&tZf@4owF zZ~RzfFqB9~&CtPcA`(6tS@cBM?a->0x>jVXA#_YUmp-P5n2x)iE*#AC@+IF>pXj;76u z&L=MY@Ue+kKA>O>nZx09)aqB59}TC>WU9*?rk0W6h&iMuC{(6nk#RGTH2cCQ+}|QG zh4OI$RVa&vNBOAk&B;EHNC!8GV3y*Q! ztbxd}SU8nV5a^bvBRZyH_s(Pyy+gfuOSgA&nM$f{YnV{jI3tE@Xeeix1W{&>+k3B# zM4k2*llY4AISgudDc2QGlT%vOijGJulIm2bYjh2;E!%XEcHa>nGJPn;N(0NVN};r| z>7WN|6c*)nVt+c8ij11wCkD;2R3skrqETU~vvfn!FPrBd496N${-dTpmX1b!SdD-{ z`e#9**+3oUd$3kvo`!YroDVHnDWk46umB4y?s<(q#6Qxt(ZF07d0p2Vs43{$VxYR9 zYny>u7y_}wz)~#qvDIy0r>Iz-Fq3AAyyE7X{pr!8X5xT2kI*kZ7>+uM*_~ynkqGxE zIO9g=xih!7Y9JLJyo%>!|TwO3)_tht(Y30LkgaHr_*q3)u$54|{Q;0Ok%@ugkl zQ#ck+jhG1sil!J3GepdCqQFV*UR}b#xWn_ z_&E<4wO#zOB7lJeNZj&BvOmmNUe?&vbXe9-8<+=!vP6f*IgK$pGRn~X4m(O$-1DmC zfEAN=Lw5IF27VFu5G5J8o1Vfjq3v|az%S!o1#d($O)5@x=Q{+^POdW$``asVAKv4^ z{Z4+$du!lV@LtIR<_U5qpJFyIgvReT@Bo;3>bNU?rZ{eLBr>)$9UGLeq_Blc&t%Ba z?3~cl>2#D2;a5HQu)_6k8N|RxB*fGe8g*x!Re&t;YX*KD$4GLj;8?sb67%6fJnX?k ze31(iec{xIfk*H$+Iv)I%f_y*rY?c`gn>t=z=Tf-%wq;VWlag65TpN=fluRcQh6kt z?AP|?<{hT7(;AZxNy{Zs8ooMbpqx?L{~so0ARLawSO{2k4%s*_j~xSMioV)e*w-=R zlKHW=v)zNwPsu9;_Th6_DYkmb!0+KqCC(z_!30Ihr63M7a1Q4cDj15lMd^w4cHq+d z+!2pPS#XhD?b>AYXX-G=m8vZb=I1AllVhfxJnW)FgK_AaQ;aK-C9E4?GEWq4RPh2%7>wswct+-{3$Mx)m(*jsT+6t#Nff7 zDJ;l&hb6)GbR;@tCcJo#B};$YpG*&q_;U%w&#*Mw=5O%fG6M4Pyn!#{FJ-^S#>^PA zZ;N~NtX9)3)9%GzvntkbFBo`HQiL}Zck;PcR$K(yanf%Z_!eGP@Z~~~ zm9n}Rn?{FeW~yNyC_Itmu9&VeypiOdbV@gO<=N0lJ6GXw1^n#P4E>IQSMXiZM4wN% zbqn+0U2&ljui}&k-*--A1#yG+&av@;9A5_FiIhp=Rp%l0@_a*|?4Hv3Ry6S7e`)Ys znA?^}gip!}KKuZ$Nm>5-41w;T5C4ZBd+-Kj&tc?LP8#?LCZ!ahCS1p6i&k8#AqR_+ zFk@+*D^O--pq4$w`rnG8GK?MH zjzy8HoVAZmj8Uq}P_uD{47kfYsk2F3%{A0KNxGFo`h=y~$c(FM3{@-KEe#({der

^W(D`wA}`*aI4kHL%3?)-u|>AJlkzIB zLrOU>M`!|h)kX!sZu;Ztls`V~Psq;Su$G-x*~I+iRhtOX(Cl|m+x)jOohhD%zpUC6 zmgMs|FE_S(RRLSgQ7_ zZgHfYS5Dn_KJ}^|PWE#}ui8yU&Facsp-3-@_JUXOjJ(7*%i3svjvYgO?X7JTe-E<- zA@9aN~l%%+KfJvcMa%1 zPv@=x-&_E2MIh&{@G1cE9gcBiMxk?8i|ts>$Xv?541X=^NST}(Ud|Wqy&3v>?po5Rj z32Y6h32YB!(Dfv-N^v7U*HRy#5oKuNom7AqT0yKpGrzTE+Q3<~1~b^pe+O^2qnl*Knbc4376SoJZ^t zR0RSJw@n}=20x3`=L?qZC+t4%|A0%eYwV@HwBtAzwQR}N-atKlvskU>cyhMC} z(3|ygv)SsGUSFQU``SG9 zo(w)HA0MUQztJPDk2jsiCwI%(-&A;H^7+$POsoyIUThuN-E$hA*?a^VgkMc$SB_2F z=?%ak^5FHuNbbM>bE#%>k}@$FM}s9;P*>#GyAoP zz7Z7WmTBhB*J6)zgHBL{lXR;Sbe*4facq5dql0wnr@5(%7(_&o5?myXY`vE*cmaRF zmMBzmFD|egU@xxlMLffvM;)}ni{wscD@HZ0fnngypCqF=&eSpF0gDxwFY(+)AujtTZV5Mzkv8h)atHnb% zRQOx`9Svqt;qRxIq_xl_A1SKUKj5pjR`0g8Y7J2Gf6UkCpB;T(a_K|uw`TB-!YJ_| zW6MMIorhg&wPw|7wbiO%#Qrw9Zv`l=R)dF!QzhqOTcZ1IiPpV2JCo~$rhb&B{v=KP zm`kR0S((;lO}%CsQ}cq_mdVXJ?LThfe7dNKd3%_hoa1{(A>Th!bTV%+i%i~JIQdM` z$vle{nY^`d@)JcT{~I2+CwKBGo>s|y7||K3G?$euf17YYRN96WzA^>KJ@~&D$GRlh zZVJ}ZGh^`*JWKok(6rxV%U2~l$>2XP;Cl*%^nb>MT4hV9@L%}vEZF~OutCZ!1xwvU z{NRuccn&}84W7r3^oF}#_ytxCFY-sSuV`?qx~Q|k=g3dTN-XDuN2^CDP$uULi$UpS6*e5 z;Y`|EFiA(Nct*{+zHDKcARIfds%tU(!ADWY>Z9_asylQ}E$C&+Pz$rTUkF~p+F(X4 zzDhAT+}T+xzwBl`1iZu~@O8T4w^*#b%v|wpwDZ}8@35MAg^BgMOrqaoN_~}a@%#8F z`#z4>=(MlnDg21x_jP;;Kh~!1Arehyo7%u;J0}I1aICs#Cx5+IqL$LgcVfNWH^x{h zMQs`JoN=-_vT+uMqQEMrU&Y~)$b=}MF5&^V)tvN$lx-KT> zl4&rl1CrzJL?F)>=~Y_c9EdvI=)pqmml54R4Z3wyQR>>_+UsK0t^G=3t(pc)j(TFr zb;YqZ7s}N@tj1}u$6x7)5C-<0}W*4=7&B8LmC~7F`ZH#)u;`uC)gt;QjNNf zpE53^HrJ?j>r03JvV~t7*kT2BUfm$n+nU=BeH>Cj{@&lrU))<+L||r=$7Z^kKJ#L-H<=ls_EA|(R^QD9{vH&X(k>QILKy=as+V_ z!*j0GwSvJ5>RK#R8*o5v#JJkT13??ks&;&p&u^+N+L+ea@@3nY3-P=Kr0ciqgNDRd8e)lq4wK|3N3{S=F|kqH0* literal 9381 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 diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleAccumulationMethod/RuleAccumulationMethod.class b/bin/net/sourceforge/jFuzzyLogic/ruleAccumulationMethod/RuleAccumulationMethod.class index a54d62600223ff9832dbce07514f2c497b1b5485..f86a7e84a2bd4b53fd9fe2cf1b8c64fb29d43dfb 100644 GIT binary patch literal 1399 zcmb_bYflqF6g>lNw=65v@~8^P)@NHDD=0pAB?vY#R5TzYd@{>+T9#~Qo9(Vqew8L# z5=r#CKgxJ#`ve+4`C(^v?wmPu?mc&Y|M~F~z#`UFByc~D2Ll+!Lj@TX5xLIFIj2%^ zM*htzn2Tdxg@H#Z7O<#7#bX6e6f7}BgjwMX$-;^G(KH-Wl#M;#vqgD@A+~A@+h1qs z&twk>y6F}PI$W>?-w7&5+s?9xt0d-5SkoZDqF@lrr~s z!X!pB*zWWSHw^G*KxOcR%oM@-=gn|fdNUnEU0E>5$=>JOLK8({ignk+)=)F$T^PED8R$2p&8@LHX$Vl3k z^ki+5(x6#h7tMV`{}=jckj27ari&!nAffneOw%a!tP{GA=2&j#f)q83&LWDrkYT)m zYBCT$%uZgcw}osFMhZ!tBXW3#XfjrZlB*+5Qyl}Br7d(xOSPq?+jQGh2T7MchkDqe s9Bfc(bzEz(o?+-0fx2^E>LO0JiSM+DI|U`J_yudLC9EOIkh_Ym=y=w;Ktn2pYYekHqQHx;;003=O_XLr!-)g0zVT57eqOmVR*DLTKg)!P}t@@*mVVKJ0L7nWnWuPAe3cF+AF7DCI*p&(w z1%~NXGA=2rrCd}LSpzu?Fr?0eGW4D;N%MLr9MxqSrWl4A+P6X>-7OSP6_1y>kkkR?s58x?&rQd(t5s9S13c6)%h1zciaXE1Bg~Nsa(q?Al8SSdM<5A) zjHeo&P^&ZuqAdf@R24nyye)j;QroDT(J=|L=^Cij8T9SwZLPbi#fDqIoEeoMIYD-} z(aU7?QH#>3(VDuQ#!mWMMk3nl%AY{br;Q)z{zh;DJv4SlM~9Kb2y~3%24O}Vjx>6q z-ev}UgfexZHA;)-C|&+Ly1&-RIwCOJMA9CU5PlPbG%7tSlsZ9kM}G306g@(xsD|l? zp+AnQF;IL|ok~1Z7qUX~m5|IShWFB=Cm7EkW8xUMk8%H^uGuDCnYylgo$D3xE3UCq xOzuT|(=nfQjQN=I1Pi|@BDOBBcD{*qtj@YvXKh$T!Y)c$Xgb`mYAH&w{109gGkO33 diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleAccumulationMethod/RuleAccumulationMethodBoundedSum.class b/bin/net/sourceforge/jFuzzyLogic/ruleAccumulationMethod/RuleAccumulationMethodBoundedSum.class index c380737a6eb508e4da35cec29381258644bd00ee..b0eb0a52806e67df63e009e5698df52ffabd4e06 100644 GIT binary patch delta 394 zcmZ9G%Syvg6h+rf(j-mOhw)h-HC4g3AO*pRRY40v2gQN3^Y}n3whpXL`wgWte?lFI z;y@gA;D`7b;z=wba=GX3!`XM8Jv4`A<>Tx14OnNz!D7ZH8^>hUVUBs51&f@;qQcy2 zbz0pWgye#FLe>z2Ib43b5^bg-E+aWTOIO}z>-j)qe8A!N4jk^QIIG-qe`Ck zg#IY4MnY;z%!tj9&cT&~+{jK+rif0H8KL%NMT{QU>DA)#3&y<|en4jQ$%_Df1hq#1 maWjS&&27d-h506!96{IQ4HxQO?BO3S`zMe7o5z}pY}4Ny{V1~l delta 420 zcmYk0%}&Bl5QWdBrM)J@)I^(@kVrHkurErm#@49l*7yj7oiCv- zjK+ma7Vdo=)4rXxm=k^>!JQ zwNi^gbuLdk1{5R&;?Ouu(%Lt-egX_hffUjt1g_s>Es>L zPgIXM+Lb)AB*2zX9sy__^H`8`jzy|Me@j@7pzD-Fe~M*4k9ktc{qv*z`B{-$g08=tZA|eg$sc z9N;;u&?F)w%0W!VpoAd_!wjCeTp?FpU=SnGO$Jw@n9f+AwtdOA0t~)#alL$$D`c1V z@^(oaX;)E)dRjg-PgRT{E@4zfH$n^{+Y&;J3{tvyyqnJ$D#kFbVgkB-C0qnmOhPBY z#YAGmm@$%zsaeavX6>w6A9`Kjz&tVId9#p>C(ZJ{T@t2O{v1z~N(}O^6*}jq@ABsY z<9;YM5SoWT72u2AgT*xA4&p6A0h;|L2G4_3tJMWGqKObgGeSS)B@%N}&l8S5z;#{a zaqKXH;A{h;)2XugtOc#k+=Di%M5^1NQ{;A*f9&W_aBtt^%%e#a$gv8%lr)7x1-=_v mB!iAD_uk?hs@l|RHalvf!z9l4L{0rqHU3b=8nx3o(De;plSrii delta 620 zcmZ9I&2G~`6otQuQ`@mkO5KJuKvNeAO#*ES1Q4`Eij0sd5vd4Kes+dNB`8fQ6cD?v zVTI)f0T!ePBsQ?(9e4uX0dehw5V5&B_ssd3nQxh&naLl&KYs;kTs253!q*MmAg$O8 z-)wFu^z~M!)w`k4O66@u+VAc(Ei^I?6X+(koa_a!GANEXWSJCAC)jH$+-OzJgpb0a zMV^AetRnj?co|gNL1(wx2zpN)Y;xhR`%>sB^3j%-zhiPrVeE8YJZ?8Vi+L8~qBDwI z>GnVO-QM$7XLqfBR0Ok^0asVvchn ziPSkMNE19qaTw_*I~2Y!|Il4H0Rje*b9$*k@6%#?Lxbqo8Rz8Jx zA&QG`3qF*1W(?}$oH@7o{(ovt&CSoRj|qTXY&fv6U}G^46IBOGShlfZVbww{8CO!q zp3(_BO>5fTHiwNogAw1}MH~U@7S=e{;W6;TPA3fZgOh&PYbS1~GjtQL`zWtPbk5)( zUy6Itx)SlA)gRql#Dg|N@o&}>qalMHi3illiAClB9ZX76cBngmMio$KzJWD;?G^f% zS`7utMLMPx3~)MjDT9La<r1>0`rU^ np)>H+o})~a^f-&TjJrdx)YSdl3q6hhylQ4j?SDO0l@$ delta 400 zcmYk0yG{a85Qe|Ai@VEm073DBw*^TQ5<`QH5fej&30fHJH)<3kPzc73XCM?lhFTbn zg)ND-&tsfjh_N^`^Us<2<{w*QEB^KK@d;EY*chXMYFaiCMSa+=R}|KMtJCToD9r8R znIcl_UR=7EL^U&54l(IAMadp! zi>S%H)g0%)v~dK+9hwC1*NxQHnKSPmfn52Rc@~NUwuSR_J8+(aiV;Oz>tDJ3SH5Um FjUS8(Bm@8e delta 320 zcmYk0F;2rk5Jlgv!+K+H3^)*Q2(Yw~Xb_@6qJUJXj4W{gsOX4Na0x2QT}}Z7LZaXR z+=FW%W^IIM{>-2G|Ie(<$_zfg-#>s;4r6q)P?d@4DdzS4y!IoX5Ycz6VJxY_ES3*< z<+6`r;K*2SGCir!zJ`{GBDx7ij4qoxWkG zdGd;T5vth`%vwuAkCX(*rp#O?Cub;3vBh?XYMylQ7(5{u*#@m|{q|Q2mJvJc-m)uQ gc%@)07+yJ+8oW`y_bjD*p^Gd2osRxa@3*RhABXB2zW@LL diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleAccumulationMethod/RuleAccumulationMethodSum.class b/bin/net/sourceforge/jFuzzyLogic/ruleAccumulationMethod/RuleAccumulationMethodSum.class index 50966d9931ba389d41ea3a8718f9479a133c4b1e..65e1bec01b18ee23c38957943829ead54a1cfdba 100644 GIT binary patch delta 344 zcmY+8y-or_6ot?146_Tn2&{_oBPw5Hs8!-J@WF|qIg zd{xjVK{A*t`2# z9mATVL38nKy5;F-E1_%1E=HqiaaLSSCyS0be&A4?l{Zr39i*|Qa{_gc4PQxydHRBT z))>%|HmZ}9kcQY=yyRbjFepFq0_>Y(g_s2zL7_N?m(x&49 ib=&HEwjFk*KHHJ1f3x}Clgd9oL4R57ZIZnLi6_4x z!Gl&ve1H$|86JFq*fXkn9`@Pm?7h}r``kINo!jr!Rl*7)7Kkbslrbb@m_eG&z=^4d(vy&^I!mYNnzAHhb?aq1!!%cgSa*lMb9WbO!4#k%3i(^CfJ&kBum z)4JAifLVShHWQkIKpEhQR=}c~@C5OZpa6}c2clIX3WxOWQk71<@T1+XO9)UVQr-c*D!Ej3r@x|Mrvgcn%TS_a tIO)<<3T3z+{^#u4LTzcfSu2YgujATJdL31)QG@n`t{<)HMp*y= delta 609 zcmZ9I&rTCj6vlsdrp!!dZYzwITE%uik+y`Lh(<$#yD9{0YD-KtamCst z&TE*cF&3kV58%#c@I8oUrnNL~PQLHl@6WyWeey#x_3QBaPhgSjHb%H?+_!8Jij}Zt ztW*`&t!BH~T~?UI(uN{Y?`&()yalS{%Uy#wG@@ce1@Z`uHbHh7csSOhsBsqGo=~w^vPK|iY Kq4#RsaP2Q6GEIH} diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleActivationMethod/RuleActivationMethodProduct.class b/bin/net/sourceforge/jFuzzyLogic/ruleActivationMethod/RuleActivationMethodProduct.class index ff77b1f92e94f93ed00fad5957c4b56af37d2e88..4d377bc0899cfaa4a51cb6986261c654cd75339b 100644 GIT binary patch delta 348 zcmYk0yGjF56h+sacaj+&qwx`6qm3pYh=qkO&{)|-L~JdLMG%chto??;4^aydEc^g} zz*hVWi@`l(kTiFneeOQ%oXpMKjgRc@9av|fjK^faR0)^qfSS*Y&#b}Q?p$|zy9Rru zerj-<-S$QL^ZD>?)|Nti0)u~Z+il;S_d@2FH&phTC&^}Vblf`FN~2bKc9?$E?pYMr z(=M>l41wN~+zys1s5D+Njo5m@ewMW;>m5>9UpR#Fkt$RbacLxHlo{@$_LXzhbC&Cu zkJ3Mem*=k-DTb2*nB($cMb#fIfDW;${I)U1`@mIczRZrDC&>Vh>cB1b|1H%bHSr5> CBO(6) delta 357 zcmYjL%Syvg6r7Wrm^8VmHP-hlx)BRf1aYBs;bSF2McqqKDLxvdRJVRZ$$$7*h~UBx z@CW>x;M}yRn>nwUIg>lN6Mp3%p8(de;KIsIrKw!l*^}(|mZ}XO3MCB(LmmQwd)K)= zzd!4iAP6_*FMe!q=7!uUDaN&w&C5AvqAyReOjcd*1 z`ajeJ+e8vwxbrW#@HeHFXReEtG7xvj}DlVLW?7;`@7 zH7T24uzuc}x=)m0L35Eyn#(jaS+4jj`ZVL$O{3J0lA_qzdD3~l+1^;$-CcdrUhiz~ zw9P}e?gbPm#^07C$aBj4R2B1EP3VBDECpPnYTi1N=DjmL?sGk0nHxSg18z~ZFKhAW z16NUx^VRrO&P2{~O_4d8rO0o!UbY(Bt@cLa@zbqm>mBpU2@8tcaeZaGwYO&$-C{Qt z%8of%Tgh4?MxwODqEGB;$?o7t1S3%&6&0LMxF02T7#BN+D|SMjoA6Ke(Cm2O9TI$HQgiyl;G@R%JC zN=ert!LDW3vy-QWO73-~$qp?akXq~G71BNYXdhQxkIett=1*uV54D{e@*c@0EG|4C kyLN=s7TIH@N03najDD3SyYyUgZsbQgzFjyZhl951zcuSo!~g&Q delta 682 zcmZ9IJ5L)?5QWdZYkQZ=+BkmjFyIF`30{oNn*f5wQbZaksHmciWm&eIH42+ZROS~T zp_?LqAzdO7TLKCCbSbF#FHz?15@TrY&Wz4{bIyJh=OX<3@6`=}Rc!0v(&l@bj)45m zOBe4J!vY$HP3SNTgylE3Du%!?Vj_sp#pyjsr{o`&3K>WLR5fE_ z7I}HcH%qF0W#To)7!0?4=zeNAb%yx=vT}U<_OnxU8*N92CBuALGf~hO?>g9tE&05tpv4mw=)N&hwLaggpBZH5kO3OYuF|nbJM(Z`VVmoc8QMFt9 z_Q#q)0a@8(g-#$xxitC@3;`96su0x_oZcbocEG6uhOHii6*GS!@{?MQD7_JHb(~fw zAdtcfnwh>FF~orYLjp;fGK^yE0a>Q6LI$nN4kACO@@eWYkQtx^eG1LT>4I-)m(-ke zA#47L7vW83DMa2QjQXkvf{LZ$smrOplidylP)8Hjm^_M2_mHtJ5$Ph=#mnc$<_3%< t`o`w^usu4USm|pNjy&GH;&rjm#fp#Y;ms{69^+RCxdZ diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodAndBoundedDif.class b/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodAndBoundedDif.class index f92ce45325362669d435be5ec20a15b6414a0f2e..ff6cda8db94313b1e9114e941f4ace5247ebd315 100644 GIT binary patch literal 1126 zcmb_bU2oGc6g_UzrAP zdd^^kLNV;N+EZgRcalIb%=RKF_J@NLksk4rm?ATqk&M(!s@ZBEGcTpH(N5;PKGiNfft>USj*3yWGJ^hukA6^xKzRyfspDc0~?QQ(7s9zRT{~# z>&J8(WYZac$K9CA(9Ji9wzBERg*5vxyOVCD1+Pu=e5|J@n$3ZYnu9r9C2P109JJ83 z&~fk(iww@zzSn%#-1c_6T`G1km75>yg5lLvNEuAY2PC{P$));#=k~bjlhy%$j}?0A zRr)0unLswss!Z6y6^hge-KJR&^9$G~n(1NDcP5L@p`=|aGG7qVxwXzEN}Y!B4d!Qp zrR+c*2Ce5|Vu8vmqCv>X({YXBns|ZYdC@mipiD8lzTWm{!|y16B$PAdrI#{>X2xn4 z43v-SxRJ5ixJfI6)=Rimus)_)H)u3ww31P}<&lPrg04c^|7lyLY&~i}VZFUX<-0Bxce7+i3+#? literal 1142 zcmb`GT~E|N6o%i~?ibzeF02bGiY$t-UDQV7m7)nyt0W5-KuEkC+M!$0ohD`0D1XYY z7>p+V0DqM6wA-+o<&IsN_T$1ea+@t}kp!=4n%I*kUgD~_Ys7uJb0 zI6M2$jr_p1;z203A}NKdf=KQN)r&l9?~3Gx^fse`^n_;z$0g($UQNW8p?MVp!|U!u z{GT(F*WECXfqKcHwar6@{8r=%9Sju%2FeV@_4NA`rD_HWC^FQ$ffT!g{*j0e_)#br z8r{g{;USNMB+inWFBHRe+nf-s4h@wuW(k!`F9Eu4;0A6IwB-Gi;)K8BR>-Aq?W;JD zKAkYHdci5f!DJvVT{XFv++l+-6xz0J+Bz1oR6>i2HDcM}s%PLX7Kpsh-&1Y5RKgXW zkm@l5voB?yP^6+EzvG6~1XRJ1S$428Oa^0P*KR#)ZQ9$8LooV&+R09kT*=CRJM~dw ziY2O}M!y8fliQ_P0cDivVVI(54LKTt%1^Mj=g_~R`kBHU>NFN<5m3c+ngI!B(8z?# z={F$%1=UYuis=hQF6pvN@q%0vze?vE*E)^nH_VN;s-=`oliVPaRsRtDZT~dfdYhT*rNyY2>$p)y(xFy%RvK(H=k1 O;y*yz1yCp5bnP#VdJ4b* diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodAndDrastic.class b/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodAndDrastic.class index c853e01456251691cd497fc44cda2f7c793d1ac2..10634b3cc9c6d900013c7e8a7f8c056b01e55a6e 100644 GIT binary patch delta 517 zcmYjN%SyvQ6g`u~X4<4$W2{=Mrj3s(bfddkMX_B7Dk37dthS3lsUYsfPbm2jABdnJ z>PB$qFSvK(2Z(2q7M#W0d+ywG&$;s>zhwF2_wgCPGD=A#Fq49WCs9zKDB+u!O)>RM z%n7*NE4TZ)69!`66fm~Vnyqj{xWz;@=mZz*0(xojNWj@SJ8iU&8s|adq}@7HSNJX7 zECE?PZAY!)i?-t1NFrrp2pKXPou-X>EC^Vedo{1()pob{R=eo~U7+60)Wc7azeIsv zB<%{M6q(roqXnClG*O;W9pe__no(eocOt50pee0h=NggfwU!>BEjju4tH3u; literal 1138 zcmb_a+iuf95It+>;>NiYlNM+Tq_mKv2rLj!P>`ycph`&)1Xbd3<1DF*yGG6iiT(%@ zKM^iMl|bSH_$b79W3^B!p7P-J?%6qK&dkowU*CQJxQ9j_2E$V+lsk&Xu`gal@ld$? zt?}XEyLL1Td^aA4Vmp#j_$r8GN2tAM;66VC+>!$?<|7sOd1M$K&qS1=dX@o(C+(T& zKVYyn{Viao@%0*<6W2m$PDZ1l>zKCD&ekd56 zcI5MLm&ZYJPC;`h6vIxVIU~0Pn6ND@kX0@RiJ=QcT*M_ZE%||VvCrRfH{^2Y_Ea3m zAyt@Bd%=j|*=$UlyfaDX{pn~hWE-B>^r&fED&dQPkm?Qt`y08-Q0gh}zwYoiX^U(X zO^vqvkY1Zw^-l#Bu9NOo*Q?#Hd7Ygub@R;gJg4Lxy_C!}2# z7V`8l%+cv43|ayEJJ`!36uzMJiH-&;wB{%XC}CbBAi_B~DREuj0h!MzeLTgOKV}%o zD5Z>tq?+j28%H?5;Z(n3@g!AQyR0IE1#-Hm1&Y&fEMb{w3@f;tO7$r&OPEuyy#Ih~ zbJEoR`lLJ|)YRsuic6G!nbcOaVohgpQbpq93a;ub4r;VBsb5qQ3@cCQHLRuiZqYxn VZaV9yYhC@rs(Ebn1_c|a{|0zn2vGn4 diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodAndHamacher.class b/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodAndHamacher.class index 16aedf9fe3978e88ee0f097004da09b10c6df1de..a2b1b965c9d25d59f6bd8c9bd0f61f7f06eb3e6e 100644 GIT binary patch delta 540 zcmYjNO-lk%6g_X=sMGk7nSGhnsAX0}5w%GR#Do?Vks-94O2n`cLfZBhlKCTj5J5qU zqD{~*3Hk#;bl&8`w|MuS`_4V*-uGjC8H*pkPcHygkn4jVQzi^p22u*74P*kCHkn!h z%m~EYYZ33f?zm@SKOmr&TBkL)DB@{Hst~ zMwhukq`1NPM`-gg`2hWvP+RsoB9H__&@oJx5eyJ15AqSiAR~W@?{sxP<-(P6F{ucQ zvp?zaEl(rSx|4tGQ9on= delta 535 zcmZ8dO-lk%6g_X=sN>8y>iF4crDbJGi=w3k5p6;uqJr9uI*S2QkXri#Y9m9?&**~? z3fi>mKlBIcCj`-*mwn*k-S_Uf_ndp~dsjY`*vsd`6M$8eLy#DDy(?+U(u$%{IXh`M zy?wjUb{Nchw`sQz?VjuB0vw$0WmRx!3Q{C)cUrzgMn@JC-m8@NEcVP5%z4XF!h2&Y zeH5wA$u)!O&!JZU3PN-k!jx4ZQ3SL{u%jW=J49|Ml@O&Eq$a>XOduda9Oj5v5;Z`+ zMdW&n5&vNvkPt0AqO4Ko3u=`i5*0IfkM!RxL)c6~Mw+Z) diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodAndMin.class b/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodAndMin.class index 95067eaa71f1e450695a4950a4d09982e9e0947a..55e5c6146543236d6a03f7943e794a35d01d56df 100644 GIT binary patch literal 1479 zcmb_cTT|0e5dKbE(l!kR3yLC0xF~4_D)kNp2dQ-!TOPz=#>bEzOPKbg6B1{{@i%!J z!I2q%fIrG{Pa7c8J~j_IyL)!O-TiixKYxGy22j9y5^2n<7>1ERRw_9acd-!1q6$SC zm*kmO>E>Pn%Tg&Ma6gU*(qzQ(kYUvI8+_9df?J;Lh${E?of^Z-ir`-U(D7Z1zjNF= z&mWZiqoWTMr*2#MUNQOCJ%CmjqIK>uY#G_UA;vbH8fO@)*n)5S%{}hEG4~o|QHr*( zy>-fIWOo@d6~{6gyQXW)>%b@G?c0Y8)&5koA!=1yP?vG5Lm|U}Q7UCi3@KB1+~PGZ zyk!RVzoo!1;yF8>Ym543t5xjMg%rG>Kz!>UtLGQ8^vdNFS%RS!}x)E~Ki~5CD(4U30Wql>26|$@PCso6mOsZ~d zm*}>-wN0eF>dT6D_+fa_7c_>LFq<@sOs_GfFBqCwzJYzAli?b@m9}*l5xF6O z=Nf6!HpAq+{7uAw`3DOkV#ojh literal 1521 zcmb`HYg5xe6o%hzOB>Q4SS|{R1Vu@>RqCA<5L@dowtNtW89s(&En(VCC#24Z<8Sgd zf+I8j0DqL@NgCT&@EaeplXJ4~yU#hhn_s_w`~+|xPg967ycFEa9y%@8|tTkx$`V~@M9jlDW&$W$ED zsP7oA?Z;syc<#U5P|FJ+FR{ed;F)R{UzDztuzvE1Pu*s|@nS zR*B@*%`Mtbc{{lNW!pc_Q~$r-OMb^OO%03F4}^67m7upIB&6tJ=%;8NF&csNDcJ4_ z`yIph!ss1XV&jxz3WfIP1#YAkiP; zjbA7ip(2p@06q#aYg-VcJjM_9&g{&YbIz`R{r>(Fz&5rDFi z&ht4y4;Zu&mkgbTy)Z<5FC21)<*qMye>yqf(F^w=piFMZ7ruN%GaL3kL!}#fZm{o0 zzS>S}bUF5q83v1Cvnz&uKR5~{7m~CZUScFew$WXQSNol(y-uHIJzK~?3{YmeD&GXUoVa)6&X^ z6sg)`^9-40Mf(c<6NQ<$p#+WAE6}k@W7bfi$V$p_p7IKKmGa5ZS5%j!T)A$0%kMv+ zP`AG!ds;fBoEGDmgbQ3Iit8~}HO4QeSk#FNxESM?afwzM)v8`rqU3t4N~znTNO9IG rIVCRPnux2;aMV)VJg)wgyAd-Wxj$gMJVX8qn36l|kMi(Z414_#cXbjs delta 565 zcmZ9IOG^S#7>3_7$8;QL%%+>!Z7jQ}iJRJVgQylkS%d|(8!yy^ju6%=aMv=DfmZzo zyAVM^KcK%7^b?}*9BtF$T)y}F-iP;`>)>6``22bM05FeC0E)M(to6T(T zSY0kw9M`F@GVs~tA%kzdRw`>?2-YDc0M@ZOg%WO6;GpiHVS;4`x65c&=+?_v5m-nE zvD`|Ol7WsA^-}7iBouhwQ&M}U$si5n+a&Ev@3=cSJNwW}`cdGGoALI>06h}0`cezL zXtgJXXm2H<6qxNrN^TEM4rTh4PsrJ79|*X;B=F+{KaET|@3Hk!bSm&_ zGN;*8;cl9QgFsVhIT)@{pxEkk+8u$aue1zgD3yL7ApXs)v#yhUokptP4PssecXaH( z_r2IxeQ#JGtg{isxvt87b|Kx!sBMm0_{D+l8>kwlP^n=Sb6kqA!W!=2E_pY%JB^2p z-MyU-33euO)fdbH&nAK>U@QNGO5Ok0f@Qv7hmTyKVl>h#(pFJpW}49wt@-RP5T9rT zX812<**O%?NF`*;iqZ z>;$RE*G15Zxn_9L>5hoD1`Blu(}WtxC`Lw$iT)Hf zp(2p@06q#aYa0=yJZ2xfGqW>i=A2#s`u+VUfNk8X!or$^Dw;OdwR6kC25#Hfv~b5E zziDBMVJS&tz9)s?fr_LUa5a`AhUb03m3J!BB;apl5_0dPm!6%y@5?X>yjeBg;S8Y1 z3`WQm!;4mXZiwcd9C3z)ekAyQIyvUaEB`pANM$Dyk$Or!TkRu;MqdVgeB>vQJ}z=h zHI7ahhVz-`Ala3v81d0Coe)g;znV-Qv(oQdmzLhMxh>{kp$b3Sc&aHLMQR*~|uP{H6TgnRR zFvwnliDhcDf(ChRo{mct*TBmZ&zttBL78Iq!d5%@hVlopbDX^KYF6LOFzuqAvT+$# zGE5s+$uh`Z#kB(SKJ9uuqfya3rs3A6#xV*wo0$J)wn5o?)qcQwa}N6pm}WLDg_i3E I#Y(vO2Vo8f*Z=?k literal 1133 zcmb`G-)_?|6vjU{ZIh+xI!ZTSFxCNMO$S6Eu3&Jnl_I2;i4`VsnWd)9l-g3}AhDO? zpU@CUJOB@cIB}zORFk;rMI4_Kf1iIoKKcFU$1ea6amPfC;g#UZJCaEp@OLsEaPP34 z93Ow^$Uzu*aT4(zDFhExC`Fg6q3nBm=OlOIZJCHZ@As0Ci9ExznbL9c>LNwh&V&F zBLhF$_v0{)v!pTLis41Woe`}K10@TK3^^I6JeM3?#uZ`~{zyX{`tN-&^2NaGsW=n^ zI$&N6!y|^?Y#7d7G?|;hxH}jMjaJKT*;vJzi8_^Pg3|TX(7_F?P>DyOpvw9}@qqWa zQ1=;F>z~X6ij*AVw}XgUfa*6f%g$xNWtiLDdsN@+?HiURTg_|A8uC~q(j{%+jF)2>S4qZj4J(;d zo6riBvnm^I@EzAbP5~@yeO-H6nVweTCdSwn)@f#t+ih%Qo_Fb;;u+P(^m$g#;25Vk IO}**nUkI@X-~a#s diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodOrDrastic.class b/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodOrDrastic.class index ac0612f5808c54cff93d5c87cdb122f7fff44039..a2902e4bf19f9fb51dceef58a2f30c954f656bc5 100644 GIT binary patch delta 509 zcmYjN%T5A85Ukl<*x`*Uf+Ff7K9Gb9M?@2&CxZ`+F?s|gkpv+jdd6QM`y)PLNYtqD z=*s#YnC|NCnyQ|G{E_*u-{&^~1!R5jV!;myTOzH%qD02TlAoz}{Q{_d=Ckb=Ub8$u83LAZe2WipI>t z7(kGf5K)Rz9peGwj!_`Y+v`@N(3Hw(a)U_C26BC9IZJROm)relUo1DZ5hO_Dj> zBhRSZ>6S;WF?2OtBRzJb+M|byl6vFKG8|VY@B;5yALb*3+U);Vgox%?(=h)BMkqC^ literal 1133 zcmb_a+iuf95Itk(;^taRTA(eEmO_#uus}RPK|&2dNJ)ztRKcU;EUAmTM$QI_{sNvNEbpYXUn6a9Mx zYtsvS>8l3>v)+eJQp_hdmKJb9;dx*zM4B zgFQF$<8uO<1EB~{>Wvw>&A~+8!UDkvqu9^60?y+CdzS8@HgVv-ah<@G1E;GZUkOT$8z zKf)ZJuEXFJ$bSR9I7aR>iXZuCpv-HAgMcFDH3BA_ft?W7^&OD6ck;MJrZy7CTX7J}%+1&SIm=JCpmxCBd+=jIQBIlJ5rpW9z29 SezMlpKdhQltJgT#KD28^vJ58nPkD=J zqKQAiA7wnVY%E3|nTI*o`Of*ynP0!Z{{*mw<`N3H>%u|JLERV|4(=7va7nEdai3u| znZ$fYNy#HElzh$gi5fDz>`AVJv6>_if2)!a4^F$2^YafqH4;%U?@e$p2k04tHR76K zx8*Mk(cV!*&QR?M$@eB_$2>U1=Vc%M+{z1MPYmtCc=cX99y4=F~k01 zy6Gn!A;+2vNlc5;bc_u7R=e%D8A_qlJmNzx^%Dm6uV;(mS`Bm}KX_X2?CuQ? z>7ok#h3xvWG(%@0hzzz2&xoq`|6H&^U)Z5v&fpr7q~%GLP$o}>taXy+*k8atkz`n= zyO4TUkTWyMGM|%Wa!Z>R$ZdMoH`t%a%%u;OVUfNH8`r4FbzC9Kl%RBYxJr^1N3m(q zSJYCTd~VZ^s!ji0q&|{0MVgjgOA+cRs+%EDJ|W*oQC-|5%_994)-u#bBuz!j%Nr)M naJ89+tPIYb}WO-OtPJt$e;2n zhC~y8fIrH3cDezr#H(KH?97?-zVpnP^YhoY9{?VsmPLxtRl;~fJ&FSHMn?nT9koX% zC+|CYAOkNNgnlhvEF0**Y7HJA;s^H=B(n*UVQ&1fnmLc}SqYBae9B=rLG32>EfjGXD_gutq3$ zcb`;STRXiy9{41;XZy1)<65u&zyBV@mRRBPINar|jo*xC8RU@Vk1)%tdr0vJ;u*Wfe);uNTwX6% zzGCtGs5whnK^hB8x@Zjw<8&>nI_s5o`YEOhcIY;+J>Vu;td$M8bWbxkp`=F~VtU&XTdE5EtT-Pgu;gBWSqvMq0w zV(Pgq2DRdtMq|rxE%9?`lkj$|J%&nmvRQYl#y%C9G}|3y=+R51T!|rL*d8}|joaP= z1N)yTG7NamrsrCAeXZ3h`*zTLng+FL*LZIf8irjjv<*l;b7EXJ8w{ysvk?|5Zw3=8 zTcZ52P7??+oEMr3ERXK(cd53T<5T}M1&dfx zu#8EDrXG@!DrdC|TrrpasJYzpU0c&5rrN4@hKkzb2wKneqe$=?0))pV35VQ=_VnK0Sppzna~KG;z@i1`$8wf6?#hn+mD#oj?i+2 zkg(0)zl%<`9sKbs2O@4LJ{Rf zQr-%v_-*jwfDU1bi_3tx~4FF+N&uFB%aJMvXoBWcQDbbXmfiB-5@T8 GoBseWpxb^--raNdoV)k-*Y6)c0o=i(1Y!&?Ebe9wY|kKtEQ20yc*Bjmc9C_v}h$^PJ>{Q`Qd?h%-Fx3LnGJd3Q5BD|LlG#~`g3 zHPbTPH3mV|wi)7iyTX%TNXd{PF^DU{elMji$moH{&|fkw{?e=Oa_5!4TjLDrl5Oa< zZQU{bI7|vv?lL@AwJxbmLO@EwFhk6Cd_9+BT*fGAw)A=+Vqbr&XKK1t&1|`jX;sN! z+}$$|7)ssI5WFz4CX8l3F!ZQ}f>uak5>p8%RHL?rvhME5xQ216ZCyX4lIoVr4PN1v zyTrf>|75ZZgRb4woo_UXo)xqk^#B#HO&S_YKqLR1=_j69t8hoc97(L$9=(N60tw8 zoXKUi-uH^bUC*%;HF8v0Q`%8hS&u|Z%5o&iYB}XY(pUXZ#mVy;EFK*YXVA-&QG OosK|-7IZCevHk~=+-LXz diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodOrNilpotent.class b/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodOrNilpotent.class index e091ea1e4ab1af16734101b1eb0832ff87aaf2e2..651a5c631744553b079e389ad879422f7d4dd499 100644 GIT binary patch delta 559 zcmYjN%Su8~6kYos^FF+qncCZ~+Cwb~qERo1a1dlgFKT!*Da8~bqM7su$^8&}5J5qM zhRynjhW$dc&oQDiIA^cL-fORQTIRJm`~Lm>3Sbs_6FM9VCXxnH5~MARVcfukj!BDg zQb&dm^=>HIdRzCZw51b#tBvEbw?fgBf3Z@pTr3krCc96FtT#$-ZQnhwxJR|}uDrZ2 zs(VdsFF-IBOEuN*eQI+#8x{gK!ssDrjdL4WR!4tHMf2;Q*+h%mA{{pe+0D#w`Tt=^aD zZ+5l2+e`{IZLtb4$cBd0pu;?Pb!Sjkedt$WVGM93xL3|nh{++9L1xJ_k`6`0FQasv ob)q=`3<=gByjYU?bCi(^;r20@>M z3*Mpp2o-_E1MpCYv12u*s>Dq$yxtw}Is47*`1hY5zX06FY8nc|mM5gO?~empy!L~E zuy&i{gM;@if8f|wFm}bd?|H(Oj__tl4z$66&H)*EgR-|PGI--hNe9$VrLuR#Po=&oIf>AwYT%pYhZvO>F;Sj?B diff --git a/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodOrProbOr.class b/bin/net/sourceforge/jFuzzyLogic/ruleConnectionMethod/RuleConnectionMethodOrProbOr.class index 42cd21fe731b1ec1bc27653de6cfbb7aecfe60d6..a13656b10f8a2dd19ee5c83811db3f02a10518f9 100644 GIT binary patch delta 499 zcmYjNTT23A5IwWIuAjQ*rA^Z;HM^MLLp_!S5xs<#bc5c?k`PQu>e=5Q->>K)=|Tua z^&SNMkbXln-)fhA_-4+`nK@_nSzL?!+t=d@fCbEYU}C}xfuul6fwaJ+8yPRBNjIhl zwhU=@=d~zLshlMkYt54?AyBL}s+*T*m1=AEs8Z*OS*SH?7b^rkJGU>(6qTRU^$|qj zxbAf1l{TNT;DOgd06~J*Y+0Db48gOty_j0v*()s(O7fi6<+~<2ha2*P;%%hai(tD1 zubSq}#nA_gD}F`^j_Nb+KsOu-L;RXfH3&_K4VcS}6xWyQLCb~p2N<^uHD_Q5I_EYF zjIc-qAx11=D?Y*)=E#48o2)9kdaV7Y5_iZcXMq@S!JZ?CI(h=5oavm$5LffOE6-7R u(Zeofy6>THI{Blm+JkihW4~u)mEePv+@3rs~5pA;SANT41;7R zP;t7>f>y*e!_$^GBia%ylpQQF5ER2GYRo0REW(JT)KMf%8>RyUEO5h#BJdv%1; zXH-7YGKU2k3v>vmV9`WCf-|UQ!Zou8*q>1OFr`>LQRLE|$rKOBHT5g6AK~nJwe|(e zzf;W{${K7e5$Uoqa3{yHf{P?$xP;4@Rfo{>6myzh*!12+@23D(jJ|F>olH-saRsZ! i(?OkP7R?*Dnt9%$e~M>SuT9@)^$#5D1n0U*dgCWcEc~Sa diff --git a/bin/net/sourceforge/jFuzzyLogic/test/performance/PerformanceChart.class b/bin/net/sourceforge/jFuzzyLogic/test/performance/PerformanceChart.class index 6d0dd52879cef1937c2cafa0e40b5cf076697ea6..81ca2370d20015a0439b8d50f544c37605704cfd 100644 GIT binary patch delta 1448 zcmZ8hTX$1M6#gb>PEK+SB8tk3?XoFYb(N>CrSH7D{0Tnzpley(lS)~Ompyy-xA*LCe{<&i>bmbr z{j&JO&j2cM+k^-E?AVBifu~JqOPgm@Bx<0?gn|88coxqo^SprGnX5JLuz8hDvEOio_rjq?C+YHS2dti`a2TqJo@F$Ej1 z1FCvN#YUBPOqt`#yrN>SnmB>i47_gOjq!u$Sz5<38AGM?*(>Eg*4(YC`xSw!xF&EN7X?1Y z4S_F|cT<@!mH7&{416u{4ZdZllVhxId`}L`lLNLq*=sG7F?*n1^OQ#zT%Pbl>McV9 zM`Ob=qQ667D>BIFNTNRwP9#SdcrtM!&Onvz@`|O<&5+fXnKlyZA6){11jqXN7<5lC zSRRoct%8-x3%pd0@hbTfFOt9WsZ|fojvXHfv<&qR4a@KJeEFyDlV0m)dCJ<5&0u;$ z?d_rcp%9%CG`u!CvN_z;vP(`Fo-MR#>uzoBq;B1<)RQ-d_q8%OlJSvnVlbYJB$5dl zg8)yD8pTH%tdrF?hwQM`^$r24N(01sJx_?l5I)wB~td z!Myo1uz2U7MQ6chpnLr@uuf%aD`mEspV~@(@lrmj@Hp+LGIKu5c&ej?ylvP{t2+NT z=&;fn((316ME$d{)o^W_o}>Hj!p?95WiDQD#+Retg=xV&veFP~WS`bqf%kh@dh2if zd!HQL#nVWwP-Hm0U7(Pjp(10UkpYH&wJyNL7RShA5lH zW=X13V=oYOtJC3JsYaN_D$e;GI6M5)cr1<8{xotrH>I(rhP(JZXpL&lysjuuIrF=+X0a}f0++5ol2Awql(mdoAHj6dg?R{ zcg7)tB^k#$jnXA3jWVDA4mK#=HLyxqBHCgPq}@(Gfi~>SNV~8s?E>0KP=+;_!jsrV n(zxmAhS5O>cyJA!*iF(Z9an%Y;+}y$2D%J%Q_WKpwP5dmnso^~ delta 1506 zcmZ8gTT@$A6#n+P^TIz*XTk9(s39UE|ePYyiXM9lqgfl)kgRXthGWOw|vo7CW>s#Mm=V#|n&Y~aJ zzWp9RBfi!kF|_attff?g!ca64pN`k3;$tW4`-VmmCo;1uGaegc6dJIjh(Y$%M6Fz`v`>+{`##2)XlfK!!(ZHkFMSgsEm_hXggX`@cGq49u3`#nAb{*a$25UCZf>u6n zY2bgdK8YoHP&&YWm%Or$2%k|rE*-rL)`Q8>gvU3UuCd|(1~l{wb>eynFVhND15e^0 z|HIO#+YrUm8lK`lZ7YRiILy1X1-BJPaZJNA|IHgeld10-PmNC+IF3PX)ywTR3}INq z2_fXX)kTLBc$Qb{wKkDCWgv+W-lx|QFoiJ@R(JyE(%qUO9jog z%(Mg%i7Yp^($_twQ3Y0pPJoYYRsia^hT50t5n2ikj7aiD!?euL%6+);s zIk%engzr%fqYdq(3lK(!Nm)V=our;jdNrYoJOzdH>xC$$5(=h{0^f#iI+=Z(LUu@N za4-#C<|elXPf&)2Wobf-8(Ag7WsZH0{epN7eTt&o#-aUz9FF7>59D#Om&SdrNpUK7 zF)@eBPGtoXO{!B>mXVG*rWD0czq7<-$8>*8ah&P5FX8z-UUaHi^*%sW0H!wpmizMO zMgIIoUe4h{9v7)o4sV!-n#0?sVaegW^;90SwSn9CP;7>5s@;hqvi;zDjOMslhjnRJ z?@7CgPiS;TE3|-5@flr<7dP=a=Ba>>-q&!Qq}@$F&lmWTq!l_AfUV)Kh9M0p4L9iY JR}__S>mR9p3-JH| diff --git a/bin/net/sourceforge/jFuzzyLogic/test/performance/PerformanceTester.class b/bin/net/sourceforge/jFuzzyLogic/test/performance/PerformanceTester.class index 6265268e2721e71ca7e004057ebabee5874b52a4..3a0dc8a3c8d398591c30fbb8429dc14cce14c3f3 100644 GIT binary patch literal 4461 zcmc(i>vI#=8OEO@>vAm1mk8S+gN;eJ$bb<6>L!l4IyNzpZHOF*LrGc7i@hMN6lp~; zy`+~kwCN?im!>UEFKK$AX@O#=c-pU>$xJhyd}=3O+Dt!WrcE>b2RePu?n?5?PEw{b zEezVT&-Ke-1&KL{ixMA__^`xBBt9zfWC$OV__)L;Bt99!Q(<%<6JRXCjUX)SYHD;VnC75!RarYNv#g~2$K zr57!M14&c262)Apkk-%S3Nw1*>~QJg#kpi|#z-fWPa>}uXvu13T2CCUwkK%Q3!HR# z=t5f0TSm?-hVUbS;DBKo);@u{xIJfU*5E9{`UO2*vh?v>iY``hR5RxU0#&nyJevs!@(-G6%nElKF08h|4O?U8l~MBJ236iRBV z0(q@eBPy?g&F&?bjF{YxLMd4F-W^QU=l)cbmc~ zd-sP81ycKx2{}8wLvhLk{db&1@F0>Qycofc@e_eN59u?8*}WuKw_;5%bXRsIgr7$6 zGhB_}G?D@vhRo^yckLjsy0)Yam5j`^UWi~H_DAq@yhNYGv0N%Kk>amH>!DIcFYY*# z&P4DF{F3Xhnn_c|DzMHrjB43w%`|E|3#_d%dpkSUqz&})z8!Yoiq+e-%QmLU$S?2R zxy->kKuc{>Sc~agHfvZ}-6U3_G;7PSSd8_Cc_vfRS?2-+x3%3h`EZrOQi0>TsF^n7IS8Ie0O(2ZCj6m>RJTXaf6IcXy>#Uqc>HW(al^0zrszf&D}2+ zm6KjBvXV-Hjm+kM5M&-#$=^FpW~VzFflco^Ue&KXVX2ZPg&qV2+A0R`9RH7gus$=7@s<;r&$53s{Jb`r^hih$D=9B3oTco zdz*9U8o9(#UfUKgZ(Ymsq;-bz%0w`)oHD%C+u}=3Yxl}m2YFD-=XG;hpm!yQWqsT; zjRB>VbA}OUjrS~bq(^&vWVx(jhTN+~;NBI2uJFMyGU5g(Sw<$2G>Yn`3Te~R_iGk! zhfVG%RqH#%oi>X3jK;%e$v#ZXGJ{-ypqSD1JU?&jl-YOIL_tgI*uYP;z5G~X^{SJc ztsq+ma1cHm;+w{&kI&9Uh{*-`lGjle_0J=)Z2>{m4zYcW4n7R>w;k%^Px5a)S`a}i zny?PdxZk$f17Qfmwoe-l;{gU9;hUe&BmBpkjK3;yf=|I`VCw>8H9*i7@304qI1U)) zFlqv0<<7ppa23s5)Z!xQIqUFsG|VFsZRF29nv!0%*-=NmYKxhKMyr zTO#Uk6Po$P>=daIHhk5Vj9)$Djm3stqH@tUIB7_YkJ=h4aSZ6jOl z*pAhtV+|$|=8H6CvM>$8?nm{MlNFQ;suPeNCZcD7Dw4) zk%&1QW2+96VhRtj8?z>#M2KU{rT*iHm!u@>;_dep@(%ctr>H2>G z|Nj38@Uf=oJs#2vBpDbW=X*)|KJM*)l5l{eA0+9ANctd2A0ju0NyGzqjc4ZTJTu=Q zpKoJK_%JToaa3%@F|iLRF@y<`#KR(m6XG-;5k)fkG#(Yt;iPy8r^HQ?q)ujs^7#to z&sQjarb4+@q5M>Z^5F{Qi3;UwDwK-~<$rf6e-&@Kl)r|*x|F}p6*!c?jo-PHpJvZ8 z<^0@rC}$RYtSz8%{mZ!bMaVIdeBU+u4)C+A`dNb2D`<+YI@L7GY?>u>#$ISQeIzYu zYISNTcgd=y(O=LH?BzQg!i=A;v*jA&`J!$kUXRg%8)#6cld!`%7gB(41~nhf{u{*L BSV8~* literal 4528 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 r-d<#j)W3~Gl) diff --git a/bin/net/sourceforge/jFuzzyLogic/testCases/TestCaseJfuzzy.class b/bin/net/sourceforge/jFuzzyLogic/testCases/TestCaseJfuzzy.class index 5c96fdecc35734f8c9c42ea644f46ea4a9aecd8e..2e80ca6fbf71d1744714b9fe3e0c81ed4d624c3f 100644 GIT binary patch delta 2215 zcmcIlTXd9H8Qpu5xiX{)6Us;kB#?#-$xLWLXh7RQX$zF3G=^Y8zhZ!9<-&OLZ_dpCg5ykdui7;QqfL7OZ7>R@}a)cIwHCI9~9OL=wHL_s_p zi`Rr(7los-rpUvyBJrkRC>jYZY6-_2{0T8EP?@2`DqC+%3N$QkabTl^Nutlpw#ZTy z3XgNnbD@r}yP3jNBBwDN|5vIe(&k{A$SSHRav@R2?QZV)4^n8kgS$kkA16{Bcf0vU zhT~A7V5p@dY^&DdGCy0j^w~5wnrN) zn>*Sf@yZFYSU5T??&eV*BV3^jjL(R6gf*#bt}mz}OG8nj+)QAhnVy|$2 zN3q3NZ*~{&u|6l}#^mau6B&L{6E`6rFG<78+MidnAFoROk8l@$jOlnyyR#Wf&?RL_ zEXNk@ObSn8tIDR)iEVfhI~3ii|6MqMZXCuNIE@~h#U5P7UVMT#jlX17-XV25tkoWo z#G@FDW2W{NzqwpellLoSPAc=RGN+U|t;|>Q&MNwmqURJnujqwdzOA$-?~*cCl=+h~ zA1m|c-ptdb-TqINxvI=R;GqQtw4#`H`02vu*#}k3!QITmD#h2*V^$3Bat?%*gV0Z= z9$OZ4mI##!4L9qB0zxB&ZZ)3>-7YjvXuO%>d!%rp&?LBd4{~`g268fnatbPVAI5T; zx#(M4_@Edw#h4|=Y%%7DF;|TFV$_S_Gd&|33YUo0AXbxD5wV)ZdPuBRvD$iBt>qJ( z9bzq0@8xD|dC-{iRIfa^cXVMxMGBpI>_GP%54*NvPeqDbQh3|Lttspk z*wzbnUIX0%DI7~N|E8(=?5VQmb8nShMfdqqT&m|=UTg0l!MDBk%qWF9|8uXLjHbpk z=650IyU)U&y$RV_X&zGZjKCXZ66}${Xhz_g8w&hC>q}f0xaPkI+^n-Z3;p!J6oq*i7Lv<#bK zca_a+OY_$oP>^|kxB(uoO*5~*{bx3!?3#%`l8L>xUe}(NYyVx~w=!-TQ89vPigI^^+mpq!Tdny$Qk(fA#USYjNv&< r-!t`rLAe@xV69LL|ElRNI{5YEHx;Dm8!{5ZI~ju`%r>c z;6)!E!Pj^kxABD7;E`o0l2VjKu2_8+IL&kUm}hZ@@ju0r_>7x5%T4q%bC1sN^Uh>m+;yMM z-*o~W{;ZT1Rwq$N4)l8~|R4b`AQXx{?N$r@Y-gmAxbdu`k>^U9cmGfSmMHiC`$6%dXFCBx~qDzx-YYdwQvGDB^$R9(z-YkV, Com public static boolean debug = FIS.debug; - FIS fis; // Which FIS does this FunctionBlock belong to? - String name; // Function block name - HashMap ruleBlocks; // Several RuleBlocks indexed by name - HashMap variablesByName; // Every variable is here (key: VariableName) + FIS fis; // Which FIS does this FunctionBlock belong to? + String name; // Function block name + HashMap ruleBlocks; // Several RuleBlocks indexed by name + HashMap variablesByName; // Every variable is here (key: VariableName) public FunctionBlock(FIS fis) { this.fis = fis; @@ -70,7 +70,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Create a defuzzifier based on defuziffier's name and a variable + * Create a defuzzifier based on defuziffier's name and a variable */ protected Defuzzifier createDefuzzifier(String defuzzificationMethodType, Variable variable) { Defuzzifier defuzzifier; @@ -86,9 +86,12 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Evaluate fuzzy rules in this function block + * Evaluate fuzzy rules in this function block */ public void evaluate() { + // reset(true); // Reset variables + reset(); // Reset variables + // First: Reset defuzzifiers, variables, etc. for (RuleBlock ruleBlock : this) ruleBlock.reset(); @@ -103,7 +106,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Builds rule set based on FCL tree (parsed from an FCL file) + * Builds rule set based on FCL tree (parsed from an FCL file) * @param tree : Tree to use * @return : RuleSet's name (or "" if no name) */ @@ -145,7 +148,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for "Defuzzify" item + * Parse a tree for "Defuzzify" item * @param tree : Tree to parse * @return Variable (old or created) */ @@ -178,10 +181,10 @@ public class FunctionBlock extends FclObject implements Iterable, Com LinguisticTerm linguisticTerm = fclTreeFuzzifyTerm(child, variable); variable.add(linguisticTerm); } else if (leaveName.equalsIgnoreCase("ACCU")) // Accumulation method - throw new RuntimeException("Accumulation method (ACCU) must be defined at RULE_BLOCK"); + throw new RuntimeException("Accumulation method (ACCU) must be defined at RULE_BLOCK"); // ruleAccumulationMethodType = child.getChild(0).getText(); else if (leaveName.equalsIgnoreCase("METHOD")) // Defuzzification method - defuzzificationMethodType = child.getChild(0).getText(); + defuzzificationMethodType = child.getChild(0).getText(); else if (leaveName.equalsIgnoreCase("DEFAULT")) { // Default value String defaultValueStr = child.getChild(0).getText(); @@ -205,7 +208,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for "Fuzzify" item + * Parse a tree for "Fuzzify" item * @param tree : Tree to parse * @return Variable (old or created) */ @@ -239,7 +242,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for "Term" item + * Parse a tree for "Term" item * @param tree : Tree to parse * @return A new LinguisticTerm */ @@ -301,7 +304,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for trapetzoidal membership function + * Parse a tree for trapetzoidal membership function * @param tree : Tree to parse * @return A new membership function */ @@ -311,7 +314,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for gaussian membership function + * Parse a tree for gaussian membership function * @param tree : Tree to parse * @return A new membership function */ @@ -325,7 +328,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for gaussian2 membership function + * Parse a tree for gaussian2 membership function * @param tree : Tree to parse * @return A new membership function */ @@ -341,7 +344,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for generilized bell membership function + * Parse a tree for generilized bell membership function * @param tree : Tree to parse * @return A new membership function */ @@ -356,7 +359,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for piece-wice linear membership function + * Parse a tree for piece-wice linear membership function * @param tree : Tree to parse * @return A new membership function */ @@ -384,7 +387,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for sigmoidal membership function + * Parse a tree for sigmoidal membership function * @param tree : Tree to parse * @return A new membership function */ @@ -397,7 +400,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for piece-wice linear membership function item + * Parse a tree for piece-wice linear membership function item * @param tree : Tree to parse * @return A new membership function */ @@ -409,7 +412,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for singletons membership function + * Parse a tree for singletons membership function * @param tree : Tree to parse * @return A new membership function */ @@ -431,7 +434,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for singletons membership function series of points + * Parse a tree for singletons membership function series of points * @param tree : Tree to parse * @param numberOfPoints : Number of points in this function * @return A new membership function @@ -460,7 +463,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for trapetzoidal membership function + * Parse a tree for trapetzoidal membership function * @param tree : Tree to parse * @return A new membership function */ @@ -475,7 +478,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for triangular membership function + * Parse a tree for triangular membership function * @param tree : Tree to parse * @return A new membership function */ @@ -489,7 +492,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Parse a tree for "Variable" item (either input or output variables) + * Parse a tree for "Variable" item (either input or output variables) * @param tree */ private void fclTreeVariables(Tree tree) { @@ -520,7 +523,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com } /** - * Get a RuleBlock + * Get a RuleBlock * @param ruleBlockName : Rule block's name (can be null to retrieve first available one) * @return Fuzzy rule block (or null if not found) */ @@ -550,12 +553,20 @@ public class FunctionBlock extends FclObject implements Iterable, Com return ruleBlocks.values().iterator(); } + // /** + // * Reset all variables + // */ + // public void reset(boolean useDefault) { + // for (Variable var : variables()) + // var.reset(useDefault); + // } + /** - * Reset all variables + * Reset all variables */ - public void reset(boolean useDefault) { + public void reset() { for (Variable var : variables()) - var.reset(useDefault); + var.reset(); } public List ruleBlocksSorted() { @@ -619,13 +630,13 @@ public class FunctionBlock extends FclObject implements Iterable, Com membershipMethods.append("// Membership functions \n"); methodsDecl.append( // "\tpublic:\n" // - + "\t" + className + "();\n" // - + "\tvoid calc();\n" // - + "\tvoid print();\n" // - + "\n\tprivate:\n" // - + "\tvoid defuzzify();\n" // - + "\tvoid fuzzify();\n" // - + "\tvoid reset();\n" // + + "\t" + className + "();\n" // + + "\tvoid calc();\n" // + + "\tvoid print();\n" // + + "\n\tprivate:\n" // + + "\tvoid defuzzify();\n" // + + "\tvoid fuzzify();\n" // + + "\tvoid reset();\n" // ); printMethod.append("// Print \nvoid " + className + "::print() {\n\tprintf(\"Function block " + name + ":\\n\");\n"); resetMethod.append("// Reset output\nvoid " + className + "::reset() {\n"); @@ -726,7 +737,7 @@ public class FunctionBlock extends FclObject implements Iterable, Com + membershipMethods + "\n" // + printMethod + "\n" // + resetMethod + "\n" // - ; // + ; // } @Override diff --git a/src/net/sourceforge/jFuzzyLogic/JFuzzyLogic.java b/src/net/sourceforge/jFuzzyLogic/JFuzzyLogic.java index 4fc6687..766d430 100644 --- a/src/net/sourceforge/jFuzzyLogic/JFuzzyLogic.java +++ b/src/net/sourceforge/jFuzzyLogic/JFuzzyLogic.java @@ -19,9 +19,9 @@ public class JFuzzyLogic { // Version info public static final String SOFTWARE_NAME = "JFuzzyLogic"; - public static final String REVISION = "j"; - public static final String BUILD = "2013-12-13"; - public static final String VERSION_MAJOR = "3.2"; + public static final String REVISION = ""; + public static final String BUILD = "2015-04-09"; + public static final String VERSION_MAJOR = "3.3"; public static final String VERSION_SHORT = VERSION_MAJOR + REVISION; public static final String VERSION_NO_NAME = VERSION_SHORT + " (build " + BUILD + "), by " + Pcingola.BY; public static final String VERSION = SOFTWARE_NAME + " " + VERSION_NO_NAME; @@ -130,8 +130,6 @@ public class JFuzzyLogic { /** * Load FIS form an FCL file - * @param fclFileName - * @return */ FIS load(String fclFileName) { try { diff --git a/src/net/sourceforge/jFuzzyLogic/defuzzifier/Defuzzifier.java b/src/net/sourceforge/jFuzzyLogic/defuzzifier/Defuzzifier.java index 3833a62..71f81e4 100644 --- a/src/net/sourceforge/jFuzzyLogic/defuzzifier/Defuzzifier.java +++ b/src/net/sourceforge/jFuzzyLogic/defuzzifier/Defuzzifier.java @@ -18,9 +18,9 @@ public abstract class Defuzzifier extends FclObject { this.variable = variable; } - /** - * Deffuzification function - * Note: Has to return Double.NaN if no rule inferred this variable + /** + * Deffuzification function + * Note: Has to return Double.NaN if no rule inferred this variable */ public abstract double defuzzify(); @@ -36,12 +36,24 @@ public abstract class Defuzzifier extends FclObject { return str; } + protected abstract void init(); + public boolean isDiscrete() { return discrete; } - /** Reset defuzzifier values, this method is invoked on every RuleSet.evaluate() */ - public abstract void reset(); + /** + * Do we need to re-initialize? + * E.g. Defuzzified depends on an input variable that changed value + */ + public abstract boolean needsInit(); + + /** + * Reset defuzzifier values, this method is invoked on every RuleSet.evaluate() + */ + public void reset() { + if (needsInit()) init(); + } public void setDiscrete(boolean discrete) { this.discrete = discrete; diff --git a/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierCenterOfGravityFunctions.java b/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierCenterOfGravityFunctions.java index 19372cd..bd41172 100644 --- a/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierCenterOfGravityFunctions.java +++ b/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierCenterOfGravityFunctions.java @@ -1,12 +1,10 @@ package net.sourceforge.jFuzzyLogic.defuzzifier; -import java.util.HashMap; - import net.sourceforge.jFuzzyLogic.rule.Variable; /** * Center of gravity for functions defuzzyfier - * + * * @author pcingola@users.sourceforge.net */ public class DefuzzifierCenterOfGravityFunctions extends DefuzzifierDiscrete { @@ -19,23 +17,17 @@ public class DefuzzifierCenterOfGravityFunctions extends DefuzzifierDiscrete { @Override public double defuzzify() { double x, y, sum = 0, sumWeight = 0; - for( Double xD : this ) { + for (Double xD : this) { y = getDiscreteValue(xD); x = xD; sumWeight += x * y; sum += y; } - if( sum != 0 ) return sumWeight / sum; + if (sum != 0) return sumWeight / sum; return Double.NaN; } - /** Reset values */ - @Override - public void reset() { - discreteValues = new HashMap(); - } - @Override public String toStringFcl() { return "METHOD : COGF;"; diff --git a/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierContinuous.java b/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierContinuous.java index 9711bb3..3f2ad64 100644 --- a/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierContinuous.java +++ b/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierContinuous.java @@ -11,19 +11,21 @@ public abstract class DefuzzifierContinuous extends Defuzzifier { /** Default number of points for 'values[]' */ public static int DEFAULT_NUMBER_OF_POINTS = 1000; - protected double max; // Where function ends + protected double max; // Where function ends protected double min; // Where function begins - /** + + /** * Step size between each element in 'values[]' - * stepSize = (max - min) / values.length + * stepSize = (max - min) / values.length */ protected double stepSize; - /** + + /** * Funcion values: A generic continuous function * y = f(x) - * where x : [min, max] + * where x : [min, max] * Values are stored in 'values[]' array. - * Array's index is calculated as: + * Array's index is calculated as: * index = (x - min) / (max - min) * (values.length) */ protected double values[]; @@ -31,8 +33,7 @@ public abstract class DefuzzifierContinuous extends Defuzzifier { public DefuzzifierContinuous(Variable variable) { super(variable); discrete = false; - variable.estimateUniverse(); - init(variable.getUniverseMin(), variable.getUniverseMax(), DEFAULT_NUMBER_OF_POINTS); + init(); } public void addValue(int index, double value) { @@ -89,22 +90,28 @@ public abstract class DefuzzifierContinuous extends Defuzzifier { /** * Initialize - * @param min : Minimum - * @param max : Maximum - * @param numberOfPoints */ - private void init(double min, double max, int numberOfPoints) { - values = new double[numberOfPoints]; + @Override + protected void init() { + variable.estimateUniverse(); + double umin = variable.getUniverseMin(); + double umax = variable.getUniverseMax(); + int numberOfPoints = DEFAULT_NUMBER_OF_POINTS; + + if (values == null || values.length != numberOfPoints) values = new double[numberOfPoints]; // Go on only if min & max are set - if (Double.isNaN(min) || Double.isNaN(max)) return; + if (Double.isNaN(umin) || Double.isNaN(umax)) { + min = max = Double.NaN; + return; + } // Check parameters - if (min > max) throw new RuntimeException("Parameter max is out of range (should satisfy: min < max). min: " + min + "\tmax: " + max); + if (umin > umax) throw new RuntimeException("Parameter max is out of range (should satisfy: min < max). min: " + umin + "\tmax: " + umax); // Initialize - this.min = min; - this.max = max; + min = umin; + max = umax; stepSize = (max - min) / numberOfPoints; reset(); } @@ -114,9 +121,19 @@ public abstract class DefuzzifierContinuous extends Defuzzifier { return discrete; } + /** + * Do we need to re-initialize? + */ + @Override + public boolean needsInit() { + return Double.isNaN(max) || Double.isNaN(min); + } + /** Reset values (in 'values[] array) */ @Override public void reset() { + super.reset(); + if (values != null) { for (int i = 0; i < values.length; i++) values[i] = 0; diff --git a/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierDiscrete.java b/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierDiscrete.java index 485cb5e..0c81796 100644 --- a/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierDiscrete.java +++ b/src/net/sourceforge/jFuzzyLogic/defuzzifier/DefuzzifierDiscrete.java @@ -11,8 +11,8 @@ import net.sourceforge.jFuzzyLogic.rule.Variable; */ public abstract class DefuzzifierDiscrete extends Defuzzifier implements Iterable { - /** - * Funcion values: A generic discrete function + /** + * Funcion values: A generic discrete function * x = [x_1, x_2, .... , x_n] * y = [y_1, y_2, .... , y_n] * y_i = f[x_i] @@ -23,7 +23,7 @@ public abstract class DefuzzifierDiscrete extends Defuzzifier implements Iterabl public DefuzzifierDiscrete(Variable variable) { super(variable); discrete = true; - discreteValues = new HashMap(); + init(); } /** Deffuzification function */ @@ -37,16 +37,32 @@ public abstract class DefuzzifierDiscrete extends Defuzzifier implements Iterabl return y; } + @Override + protected void init() { + discreteValues = new HashMap(); + } + /** Get an iterator (on discreteValues' keys) */ @Override public Iterator iterator() { return discreteValues.keySet().iterator(); } + /** + * Do we need to re-initialize? + */ + @Override + public boolean needsInit() { + return false; + } + /** Reset values */ @Override public void reset() { - if (discreteValues != null) { // Set all values to 0 + super.reset(); + + if (discreteValues != null) { + // Set all values to 0 for (Double key : this) discreteValues.put(key, 0.0); } diff --git a/src/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/qualifyDemo/ParameterOptimizationDemo.java b/src/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/qualifyDemo/ParameterOptimizationDemo.java index 6daf90d..8a5884b 100644 --- a/src/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/qualifyDemo/ParameterOptimizationDemo.java +++ b/src/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/qualifyDemo/ParameterOptimizationDemo.java @@ -64,7 +64,8 @@ public class ParameterOptimizationDemo { Gpr.toFile("fcl/qualify_optimized.fcl", functionBlock.toString()); // Show - functionBlock.reset(false); + // functionBlock.reset(false); + functionBlock.reset(); JFuzzyChart.get().chart(functionBlock); System.out.println("ParameterOptimizationDemo: End"); diff --git a/src/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/robotDemo/ParameterOptimizationRobot.java b/src/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/robotDemo/ParameterOptimizationRobot.java index df94369..50f0e40 100644 --- a/src/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/robotDemo/ParameterOptimizationRobot.java +++ b/src/net/sourceforge/jFuzzyLogic/demo/parameterOptimization/robotDemo/ParameterOptimizationRobot.java @@ -68,7 +68,8 @@ public class ParameterOptimizationRobot { Gpr.toFile("fcl/robot_optimized.fcl", functionBlock.toString()); // Show - functionBlock.reset(false); + // functionBlock.reset(false); + functionBlock.reset(); JFuzzyChart.get().chart(functionBlock); System.out.println("ParameterOptimizationDemo: End"); diff --git a/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunction.java b/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunction.java index 819ce5f..651fee1 100644 --- a/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunction.java +++ b/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunction.java @@ -1,7 +1,11 @@ package net.sourceforge.jFuzzyLogic.membership; +import java.util.HashSet; +import java.util.Set; + import net.sourceforge.jFuzzyLogic.FIS; import net.sourceforge.jFuzzyLogic.fcl.FclObject; +import net.sourceforge.jFuzzyLogic.rule.Variable; /** * Base membership function @@ -13,12 +17,9 @@ public abstract class MembershipFunction extends FclObject { public static boolean debug = FIS.debug; boolean discrete; - /** Function's parameters */ - Value parameters[]; - /** Universe max (range max) */ - double universeMax; - /** Universe min (range min) */ - double universeMin; + Value parameters[]; // Function's parameters + double universeMax; // Universe max (range max) + double universeMin; // Universe min (range min) /** Default Constructor */ MembershipFunction() { @@ -30,6 +31,25 @@ public abstract class MembershipFunction extends FclObject { /** Try to guess the universe (if not set) */ public abstract void estimateUniverse(); + public void estimateUniverseForce() { + universeMin = universeMax = Double.NaN; + estimateUniverse(); + } + + /** + * Find variables used by this function + */ + public Set findVariables() { + HashSet vars = new HashSet<>(); + + if (parameters != null) { + for (Value val : parameters) + if (val.getType() == Value.Type.VAR_REFERENCE && val.getVarRef() != null) vars.add(val.getVarRef()); + } + + return vars; + } + /** Short name */ public String getName() { String str = this.getClass().getName(); @@ -62,10 +82,10 @@ public abstract class MembershipFunction extends FclObject { return discrete; } - /** + /** * Get membership function's value. * @param in : Variable's 'x' value - * Note: Output mu be in range [0,1] + * Note: Output mu be in range [0,1] */ public abstract double membership(double in); diff --git a/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionFuncion.java b/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionFuncion.java index 4121d65..1852508 100644 --- a/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionFuncion.java +++ b/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionFuncion.java @@ -1,6 +1,7 @@ package net.sourceforge.jFuzzyLogic.membership; import java.util.Iterator; +import java.util.Set; import net.sourceforge.jFuzzyLogic.FunctionBlock; import net.sourceforge.jFuzzyLogic.Gpr; @@ -20,12 +21,13 @@ import net.sourceforge.jFuzzyLogic.membership.functions.MffSubstract; import net.sourceforge.jFuzzyLogic.membership.functions.MffSum; import net.sourceforge.jFuzzyLogic.membership.functions.MffTan; import net.sourceforge.jFuzzyLogic.membership.functions.MffTimes; +import net.sourceforge.jFuzzyLogic.rule.Variable; import org.antlr.runtime.tree.Tree; /** * Membership function that is a (simple) mathematical funcion (the result is a singleton) - * + * * @author pcingola@users.sourceforge.net */ public class MembershipFunctionFuncion extends MembershipFunctionDiscrete { @@ -128,6 +130,11 @@ public class MembershipFunctionFuncion extends MembershipFunctionDiscrete { universeMin = universeMax = val; } + @Override + public Set findVariables() { + return function.findVariables(); + } + /** * @see net.sourceforge.jFuzzyLogic.membership.MembershipFunctionDiscrete#iterator() */ @@ -173,8 +180,8 @@ public class MembershipFunctionFuncion extends MembershipFunctionDiscrete { } /** - * Parse each term (from tree) creating appropriate functions. - * + * Parse each term (from tree) creating appropriate functions. + * * @param ruleBlock Fuzzy Set for this function * @param tree : AST (tree) to parse * @return An array of objects (terms[]) diff --git a/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionGenericSingleton.java b/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionGenericSingleton.java index b52a29b..fdf3762 100644 --- a/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionGenericSingleton.java +++ b/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionGenericSingleton.java @@ -1,6 +1,10 @@ package net.sourceforge.jFuzzyLogic.membership; +import java.util.HashSet; import java.util.Iterator; +import java.util.Set; + +import net.sourceforge.jFuzzyLogic.rule.Variable; /** * Generic singleton membership function: Allows 'n' singletons (generic discrete membership function) @@ -14,7 +18,7 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre Value y[]; /** - * Constructor for generin (N-values) + * Constructor for generin (N-values) * @param x : x[] values array * @param y : y[] values array */ @@ -22,10 +26,10 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre discrete = true; // Check parameters - if( x == null ) throw new RuntimeException("Parameter x[] can't be null"); - if( y == null ) throw new RuntimeException("Parameter x[] can't be null"); - if( x.length > y.length ) throw new RuntimeException("Array size differ"); - if( x.length < 1 ) throw new RuntimeException("Array size is 0"); + if (x == null) throw new RuntimeException("Parameter x[] can't be null"); + if (y == null) throw new RuntimeException("Parameter x[] can't be null"); + if (x.length > y.length) throw new RuntimeException("Array size differ"); + if (x.length < 1) throw new RuntimeException("Array size is 0"); // Initialize this.x = x; @@ -33,22 +37,22 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre // Check parameters StringBuffer errors = new StringBuffer(); - if( !checkParamters(errors) ) throw new RuntimeException(errors.toString()); + if (!checkParamters(errors)) throw new RuntimeException(errors.toString()); } @Override public boolean checkParamters(StringBuffer errors) { boolean ok = true; - if( x.length > 1 ) for( int i = 0; i < x.length; i++ ) { - if( (i > 0) && (x[i - 1].getValue() > x[i].getValue()) ) { + if (x.length > 1) for (int i = 0; i < x.length; i++) { + if ((i > 0) && (x[i - 1].getValue() > x[i].getValue())) { ok = false; - if( errors != null ) errors.append("Array not sorted: x[" + (i - 1) + "] = " + x[i - 1] + " , x[" + i + "] = " + x[i] + "\n"); + if (errors != null) errors.append("Array not sorted: x[" + (i - 1) + "] = " + x[i - 1] + " , x[" + i + "] = " + x[i] + "\n"); } - if( (y[i].getValue() < 0) || (y[i].getValue() > 1) ) { + if ((y[i].getValue() < 0) || (y[i].getValue() > 1)) { ok = false; - if( errors != null ) errors.append("Membership funcion out of range: y[" + i + "] = " + y[i] + " (should be in range [0,1]\n"); + if (errors != null) errors.append("Membership funcion out of range: y[" + i + "] = " + y[i] + " (should be in range [0,1]\n"); } } @@ -58,16 +62,36 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre @Override public void estimateUniverse() { // Are universeMin and universeMax already set? => nothing to do - if( (!Double.isNaN(universeMin)) && (!Double.isNaN(universeMax)) ) return; + if ((!Double.isNaN(universeMin)) && (!Double.isNaN(universeMax))) return; universeMin = x[0].getValue(); universeMax = x[x.length - 1].getValue(); } + /** + * Find variables used by this function + */ + @Override + public Set findVariables() { + HashSet vars = new HashSet<>(); + + if (x != null) { + for (Value val : x) + if (val.getType() == Value.Type.VAR_REFERENCE && val.getVarRef() != null) vars.add(val.getVarRef()); + } + + if (y != null) { + for (Value val : y) + if (val.getType() == Value.Type.VAR_REFERENCE && val.getVarRef() != null) vars.add(val.getVarRef()); + } + + return vars; + } + /** Need to override this method (we store parameters differently in this function) */ @Override public double getParameter(int i) { int j = i / 2; - if( (i % 2) == 0 ) return x[j].getValue(); + if ((i % 2) == 0) return x[j].getValue(); return y[j].getValue(); } @@ -87,15 +111,19 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre int i = 0; + @Override public boolean hasNext() { return (i < x.length); } + @Override public Double next() { return x[i].getValue(); } - public void remove() {} + @Override + public void remove() { + } }; } @@ -105,10 +133,10 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre @Override public double membership(double in) { int i, len = x.length; - if( in <= x[0].getValue() ) return y[0].getValue(); - if( in > x[len - 1].getValue() ) return y[len - 1].getValue(); - for( i = 1; i < len; i++ ) - if( in == x[i].getValue() ) return y[i].getValue(); + if (in <= x[0].getValue()) return y[0].getValue(); + if (in > x[len - 1].getValue()) return y[len - 1].getValue(); + for (i = 1; i < len; i++) + if (in == x[i].getValue()) return y[i].getValue(); return 0; } @@ -117,7 +145,7 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre */ @Override public double membership(int index) { - if( (index < 0) || (index > x.length) ) return 0; + if ((index < 0) || (index > x.length)) return 0; return y[index].getValue(); } @@ -125,7 +153,7 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre @Override public void setParameter(int i, double value) { int j = i / 2; - if( (i % 2) == 0 ) x[j].setValue(value); + if ((i % 2) == 0) x[j].setValue(value); else y[j].setValue(value); } @@ -143,9 +171,9 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre @Override public String toString() { StringBuffer str = new StringBuffer(getName() + " : "); - for( int i = 0; i < x.length; i++ ) { + for (int i = 0; i < x.length; i++) { str.append("[" + x[i] + ", " + y[i] + "] "); - if( i < (x.length - 1) ) str.append(", "); + if (i < (x.length - 1)) str.append(", "); } str.append(";"); return str.toString(); @@ -155,7 +183,7 @@ public class MembershipFunctionGenericSingleton extends MembershipFunctionDiscre @Override public String toStringFcl() { String str = "SINGLETONS "; - for( int i = 0; i < x.length; i++ ) + for (int i = 0; i < x.length; i++) str += "(" + x[i] + ", " + y[i] + ") "; return str; } diff --git a/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionPieceWiseLinear.java b/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionPieceWiseLinear.java index ffca52c..a65f38c 100644 --- a/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionPieceWiseLinear.java +++ b/src/net/sourceforge/jFuzzyLogic/membership/MembershipFunctionPieceWiseLinear.java @@ -1,5 +1,10 @@ package net.sourceforge.jFuzzyLogic.membership; +import java.util.HashSet; +import java.util.Set; + +import net.sourceforge.jFuzzyLogic.rule.Variable; + /** * Piece-wise linear membership function * @author pcingola@users.sourceforge.net @@ -12,7 +17,7 @@ public class MembershipFunctionPieceWiseLinear extends MembershipFunctionContinu Value y[]; /** - * Default constructor + * Default constructor * @param x [] : x points array * @param y [] : y points array * A piecewise linear function is defined by 'n' points: @@ -65,6 +70,26 @@ public class MembershipFunctionPieceWiseLinear extends MembershipFunctionContinu universeMax = x[x.length - 1].getValue(); } + /** + * Find variables used by this function + */ + @Override + public Set findVariables() { + HashSet vars = new HashSet<>(); + + if (x != null) { + for (Value val : x) + if (val.getType() == Value.Type.VAR_REFERENCE && val.getVarRef() != null) vars.add(val.getVarRef()); + } + + if (y != null) { + for (Value val : y) + if (val.getType() == Value.Type.VAR_REFERENCE && val.getVarRef() != null) vars.add(val.getVarRef()); + } + + return vars; + } + /** Need to override this method (we store parameters differently in this function) */ @Override public double getParameter(int i) { @@ -85,7 +110,7 @@ public class MembershipFunctionPieceWiseLinear extends MembershipFunctionContinu * membership(x) = y[0] if x <= x[0] * membership(x) = y[n] if x >= x[n] (where n = x.length) * membership(x) = y[i - 1] + (y[i] - y[i - 1]) / (in - x[i]) if x[i-1] < x <= x[i] - * + * * @see net.sourceforge.jFuzzyLogic.membership.MembershipFunction#membership(double) */ @Override diff --git a/src/net/sourceforge/jFuzzyLogic/membership/Value.java b/src/net/sourceforge/jFuzzyLogic/membership/Value.java index 3f2f46e..12af9da 100644 --- a/src/net/sourceforge/jFuzzyLogic/membership/Value.java +++ b/src/net/sourceforge/jFuzzyLogic/membership/Value.java @@ -10,7 +10,7 @@ import org.antlr.runtime.tree.Tree; /** * A value can be either REAL, INT, BOOL or a reference to variable - * + * * @author pcingola@users.sourceforge.net */ public class Value extends FclObject { @@ -22,18 +22,10 @@ public class Value extends FclObject { public static final Value ONE = new Value(1.0); public static final Value ZERO = new Value(0.0); - //------------------------------------------------------------------------- - // Variables - //------------------------------------------------------------------------- - Type type; double valReal; Variable varRef; - //------------------------------------------------------------------------- - // Methods - //------------------------------------------------------------------------- - public Value() { type = Type.REAL; valReal = 0.0; @@ -44,19 +36,15 @@ public class Value extends FclObject { this.valReal = valReal; } - /** - * Default constructor - * @param name : Value - */ public Value(Tree tree, FunctionBlock fb) { - if( tree.getType() == FclLexer.VALUE_REAL ) { + if (tree.getType() == FclLexer.VALUE_REAL) { type = Type.REAL; valReal = Gpr.parseDouble(tree.getChild(0)); - } else if( tree.getType() == FclLexer.VALUE_ID ) { + } else if (tree.getType() == FclLexer.VALUE_ID) { type = Type.VAR_REFERENCE; String varName = tree.getChild(0).getText(); varRef = fb.getVariable(varName); - if( varRef == null ) throw new RuntimeException("Cannot find variable: '" + varName + "'"); + if (varRef == null) throw new RuntimeException("Cannot find variable: '" + varName + "'"); } else throw new RuntimeException("Unimplemented 'Value' for node type: " + tree.getType() + "\ttree: " + tree.toStringTree()); } @@ -70,25 +58,24 @@ public class Value extends FclObject { /** * Get value (not really a getter) - * @return */ public double getValue() { - if( type == null ) { + if (type == null) { Gpr.debug("WARNING: Value type not defined!"); return 0; } - switch(type) { - case REAL: - return valReal; - case VAR_REFERENCE: - if( varRef == null ) { - Gpr.debug("WARNING: Undefined variable reference!"); - return 0; - } - return varRef.getValue(); - default: - throw new RuntimeException("Value type '" + type + "' not implemented!"); + switch (type) { + case REAL: + return valReal; + case VAR_REFERENCE: + if (varRef == null) { + Gpr.debug("WARNING: Undefined variable reference!"); + return 0; + } + return varRef.getValue(); + default: + throw new RuntimeException("Value type '" + type + "' not implemented!"); } } @@ -106,18 +93,17 @@ public class Value extends FclObject { /** * Set value (not really a setter) - * @param valReal */ public void setValue(double valReal) { - switch(type) { - case REAL: - this.valReal = valReal; - return; - case VAR_REFERENCE: - varRef.setValue(valReal); - return; - default: - throw new RuntimeException("Value type '" + type + "' not implemented!"); + switch (type) { + case REAL: + this.valReal = valReal; + return; + case VAR_REFERENCE: + varRef.setValue(valReal); + return; + default: + throw new RuntimeException("Value type '" + type + "' not implemented!"); } } @@ -127,8 +113,8 @@ public class Value extends FclObject { @Override public String toStringFcl() { - if( type == Type.REAL ) return "" + getValue(); - if( type == Type.VAR_REFERENCE ) return varRef.toStringFcl(); + if (type == Type.REAL) return "" + getValue(); + if (type == Type.VAR_REFERENCE) return varRef.toStringFcl(); throw new RuntimeException("Unimplemented type '" + type + "'"); } } diff --git a/src/net/sourceforge/jFuzzyLogic/membership/functions/MffFunction.java b/src/net/sourceforge/jFuzzyLogic/membership/functions/MffFunction.java index c17679c..8460335 100644 --- a/src/net/sourceforge/jFuzzyLogic/membership/functions/MffFunction.java +++ b/src/net/sourceforge/jFuzzyLogic/membership/functions/MffFunction.java @@ -1,5 +1,8 @@ package net.sourceforge.jFuzzyLogic.membership.functions; +import java.util.HashSet; +import java.util.Set; + import net.sourceforge.jFuzzyLogic.FunctionBlock; import net.sourceforge.jFuzzyLogic.Gpr; import net.sourceforge.jFuzzyLogic.fcl.FclObject; @@ -9,10 +12,10 @@ import net.sourceforge.jFuzzyLogic.rule.Variable; /** * Membership function that is a (simple) mathematical function * (Mff stands for 'Membership Function type Function'). - * - * Implements a mathematical function that depends on variables (should - * be input variables only, to avoid some sort of 'race conditions'). - * + * + * Implements a mathematical function that depends on variables (should + * be input variables only, to avoid some sort of 'race conditions'). + * * @author pcingola@users.sourceforge.net */ public abstract class MffFunction extends FclObject { @@ -49,7 +52,7 @@ public abstract class MffFunction extends FclObject { } /** - * Evaluate this function + * Evaluate this function * @return double */ protected abstract double evaluateFunction(); @@ -61,7 +64,7 @@ public abstract class MffFunction extends FclObject { // Evaluate each term for (int i = 0; i < terms.length; i++) { if (terms[i] == null) // Null function => Nothing to do - values[i] = Double.NaN; + values[i] = Double.NaN; else if (terms[i] instanceof Variable) { // Variable's value Variable var = ((Variable) terms[i]); @@ -74,13 +77,33 @@ public abstract class MffFunction extends FclObject { // Function's value MffFunction mff = (MffFunction) terms[i]; // Get function mff.evaluateTerms(); // Evaluate function's terms (recurse into tree) - values[i] = mff.evaluateFunction(); // Evaluate function + values[i] = mff.evaluateFunction(); // Evaluate function if (debug) Gpr.debug("Evaluated: " + mff + " = " + values[i]); } if (debug) Gpr.debug("Term[" + i + "]: " + terms[i] + "\tClass:" + terms[i].getClass().getSimpleName() + "\tValue: " + values[i]); } } + public Set findVariables() { + HashSet vars = new HashSet<>(); + + if (terms != null) { + for (FclObject fco : terms) { + if (fco instanceof Variable) { + vars.add((Variable) fco); + } else if (fco instanceof Value) { + Value val = (Value) fco; + if (val.getType() == Value.Type.VAR_REFERENCE && val.getVarRef() != null) vars.add(val.getVarRef()); + } else if (fco instanceof MffFunction) { + vars.addAll(((MffFunction) fco).findVariables()); + } + } + } + + return vars; + + } + @Override public String toStringCpp() { if (terms == null) return ""; diff --git a/src/net/sourceforge/jFuzzyLogic/plot/JFuzzyChartImpl.java b/src/net/sourceforge/jFuzzyLogic/plot/JFuzzyChartImpl.java index 633d41e..8c91a85 100644 --- a/src/net/sourceforge/jFuzzyLogic/plot/JFuzzyChartImpl.java +++ b/src/net/sourceforge/jFuzzyLogic/plot/JFuzzyChartImpl.java @@ -116,7 +116,7 @@ public class JFuzzyChartImpl extends JFuzzyChart { boolean plotDefuzz = false; // Sanity check - if (Double.isNaN(var.getUniverseMin()) || Double.isInfinite(var.getUniverseMax())) var.estimateUniverse(); + var.estimateUniverse(); int numberOfPoints = PlotWindow.DEFAULT_CHART_NUMBER_OF_POINTS; double step = (var.getUniverseMax() - var.getUniverseMin()) / (numberOfPoints); @@ -143,12 +143,18 @@ public class JFuzzyChartImpl extends JFuzzyChart { Defuzzifier defuzzifier = var.getDefuzzifier(); if ((defuzzifier != null) && (defuzzifier instanceof DefuzzifierContinuous)) { DefuzzifierContinuous def = (DefuzzifierContinuous) defuzzifier; + + // Title String title = String.format("%s:%2.2f (%s)", var.getName(), var.getLatestDefuzzifiedValue(), defuzzifier.getName()); + + // Data points XYSeries series = new XYSeries(title); double values[] = def.getValues(); numberOfPoints = values.length; double xx = def.getMin(); step = (def.getMax() - def.getMin()) / (numberOfPoints); + + // Calculate values for (int i = 0; i < numberOfPoints; i++, xx += step) series.add(xx, values[i]); diff --git a/src/net/sourceforge/jFuzzyLogic/rule/LinguisticTerm.java b/src/net/sourceforge/jFuzzyLogic/rule/LinguisticTerm.java index a965819..00f87a5 100644 --- a/src/net/sourceforge/jFuzzyLogic/rule/LinguisticTerm.java +++ b/src/net/sourceforge/jFuzzyLogic/rule/LinguisticTerm.java @@ -12,6 +12,7 @@ public class LinguisticTerm extends FclObject implements Comparable, Comparable, CompileCpp { @@ -49,11 +49,11 @@ public class RuleBlock extends FclObject implements Iterable, Comparable rules; // All the rules + RuleAccumulationMethod ruleAccumulationMethod; // Rule accumulation method: How results of the rules are combined to obtain an overall result (e.g. MAX: maximum, BSUM: bounded sum, etc.) + RuleActivationMethod ruleActivationMethod; // Rule activation (implication) method: How the 'if' activates the 'then' (e.g. MIN: minimum, PROD: product) + ArrayList rules; // All the rules public static boolean isDebug() { return debug; @@ -87,7 +87,7 @@ public class RuleBlock extends FclObject implements Iterable, Comparable, Comparable, Comparable, Comparable, Iterable, CompileCpp { - double defaultValue; // Default value, when no change - double latestDefuzzifiedValue; // Latest defuzzified value - double universeMax; // Universe max (range max) - double universeMin; // Universe minimum (range minimum) - double value; // Variable's value - String name; // Variable name - HashMap linguisticTerms; // Terms for this variable - Defuzzifier defuzzifier; // Defuzzifier class + public static final double EPSILON = 1e-6; + + double defaultValue; // Default value, when no change + double latestDefuzzifiedValue; // Latest defuzzified value + double universeMax; // Universe max (range max) + double universeMin; // Universe minimum (range minimum) + double value; // Variable's value + String name; // Variable name + HashMap linguisticTerms; // Terms for this variable + Defuzzifier defuzzifier; // Defuzzifier class + HashMap variableValues; // Terms may use variables, we need to keep track of values to know when universe needs to be updated /** - * Default constructor + * Default constructor * @param name : Variable's name */ public Variable(String name) { @@ -39,41 +45,21 @@ public class Variable extends FclObject implements Comparable, Iterabl universeMin = Double.NaN; universeMax = Double.NaN; value = Double.NaN; - reset(true); // Reset values - } - /** - * Constructor - */ - public Variable(String name, double universeMin, double universeMax) { - if (name == null) throw new RuntimeException("Variable's name can't be null"); - if (universeMax < universeMin) throw new RuntimeException("Parameter error in variable \'" + name + "\' universeMax < universeMin"); - this.name = name; - linguisticTerms = new HashMap(); - this.universeMin = universeMin; - this.universeMax = universeMax; - value = Double.NaN; - reset(true); // Reset values + variableValues = null; + + // reset(true); // Reset values + reset(); // Reset values } /** * Adds a termName to this variable - * @param linguisticTerm : Linguistic term to add + * @param linguisticTerm : Linguistic term to add * @return this variable */ public Variable add(LinguisticTerm linguisticTerm) { linguisticTerms.put(linguisticTerm.getTermName(), linguisticTerm); - return this; - } - - /** - * Adds a termName to this variable - * @param termName : RuleTerm name - * @param membershipFunction : membershipFunction for this termName - * @return this variable - */ - public Variable add(String termName, MembershipFunction membershipFunction) { - this.add(new LinguisticTerm(termName, membershipFunction)); + variableValues = null; // Reset cache return this; } @@ -84,7 +70,7 @@ public class Variable extends FclObject implements Comparable, Iterabl return name.compareTo(var.getName()); } - /** + /** * Defuzzify this (output) variable * Set defuzzufied values to 'value' and 'latestDefuzzifiedValue' */ @@ -109,7 +95,7 @@ public class Variable extends FclObject implements Comparable, Iterabl if (linguisticTerms.size() > 0) { for (LinguisticTerm lt : this) { MembershipFunction membershipFunction = lt.getMembershipFunction(); - membershipFunction.estimateUniverse(); + membershipFunction.estimateUniverseForce(); umin = Math.min(membershipFunction.getUniverseMin(), umin); umax = Math.max(membershipFunction.getUniverseMax(), umax); @@ -120,9 +106,21 @@ public class Variable extends FclObject implements Comparable, Iterabl else umin = umax = 0; } - // Set parameters (if not set) - if (Double.isNaN(universeMin)) universeMin = umin; - if (Double.isNaN(universeMax)) universeMax = umax; + // Set parameters + universeMin = umin; + universeMax = umax; + } + + /** + * Find all variables used in linguistic terms + */ + protected Set findVariables() { + Set vars = new HashSet(); + + for (LinguisticTerm lt : this) + vars.addAll(lt.getMembershipFunction().findVariables()); + + return vars; } public double getDefaultValue() { @@ -193,6 +191,21 @@ public class Variable extends FclObject implements Comparable, Iterabl return linguisticTerms.values().iterator(); } + // /** Reset defuzzifier (if any) */ + // public void reset(boolean onlyDefuzzifier) { + // if (onlyDefuzzifier) { + // // Only reset variables that have a defuzzifier + // if (defuzzifier != null) { + // defuzzifier.reset(); + // // Set default value for output variables (if any default value was defined) + // if (!Double.isNaN(defaultValue)) value = defaultValue; + // latestDefuzzifiedValue = defaultValue; + // } + // } else { + // latestDefuzzifiedValue = value = defaultValue; + // } + // } + /** Get a 'linguisticTerms sorted by name */ public List linguisticTermsSorted() { ArrayList al = new ArrayList(linguisticTerms.values()); @@ -200,17 +213,58 @@ public class Variable extends FclObject implements Comparable, Iterabl return al; } - /** Reset defuzzifier (if any) */ - public void reset(boolean onlyDefuzzifier) { - if (onlyDefuzzifier) { - // Only reset variables that have a defuzzifier - if (defuzzifier != null) { - defuzzifier.reset(); - // Set default value for output variables (if any default value was defined) - if (!Double.isNaN(defaultValue)) value = defaultValue; - latestDefuzzifiedValue = defaultValue; + /** + * Do we need to estimate universe? + * (e.g. when a variable referred by a linguistic term changed) + */ + protected boolean needEstimateUniverse() { + //--- + // Find all dependent variables + //--- + if (variableValues == null) { + Set vars = findVariables(); + + // Add all variables + variableValues = new HashMap(); + for (Variable var : vars) + variableValues.put(var, var.getValue()); + } + + //--- + // Any dependent variables changed? + //--- + LinkedList change = null; + for (Variable var : variableValues.keySet()) { + double value = variableValues.get(var); + if (Math.abs(value - var.getValue()) > EPSILON) { + if (change == null) change = new LinkedList(); + change.add(var); } - } else value = Double.NaN; + } + + //--- + // Do we need to update any value? + //--- + if (change != null) { + for (Variable var : change) + variableValues.put(var, var.getValue()); + } + + return change != null; + } + + /** Reset defuzzifier (if any) */ + public void reset() { + if (needEstimateUniverse()) { + universeMin = universeMax = Double.NaN; // Force + estimateUniverse(); + } + + // Only reset variables that have a defuzzifier + if (defuzzifier != null) defuzzifier.reset(); + + // Set default value for output variables (if any default value was defined) + if (!Double.isNaN(defaultValue)) latestDefuzzifiedValue = value = defaultValue; } public void setDefaultValue(double defualtValue) { @@ -246,10 +300,6 @@ public class Variable extends FclObject implements Comparable, Iterabl this.value = value; } - /** - * Printable string - * @see java.lang.Object#toString() - */ @Override public String toString() { String str = name + " : \n"; diff --git a/src/net/sourceforge/jFuzzyLogic/testCases/TestCaseJfuzzy.java b/src/net/sourceforge/jFuzzyLogic/testCases/TestCaseJfuzzy.java index bd79cda..1626dfd 100644 --- a/src/net/sourceforge/jFuzzyLogic/testCases/TestCaseJfuzzy.java +++ b/src/net/sourceforge/jFuzzyLogic/testCases/TestCaseJfuzzy.java @@ -15,7 +15,9 @@ import net.sourceforge.jFuzzyLogic.FunctionBlock; import net.sourceforge.jFuzzyLogic.Gpr; import net.sourceforge.jFuzzyLogic.rule.Rule; import net.sourceforge.jFuzzyLogic.rule.RuleBlock; +import net.sourceforge.jFuzzyLogic.rule.Variable; +import org.junit.Assert; import org.junit.Test; /** @@ -77,7 +79,7 @@ public class TestCaseJfuzzy extends TestCase { FunctionBlock fb = fis.getFunctionBlock(null); for (int ind = 1; ind < mem.length; ind++) { - double value = int100ToDOuble(mem[ind][0]); + double value = int100ToDouble(mem[ind][0]); fb.setVariable("inVar", value); @@ -85,9 +87,9 @@ public class TestCaseJfuzzy extends TestCase { int good = doubleToInt100(fb.getVariable("inVar").getMembership("good")); int excellent = doubleToInt100(fb.getVariable("inVar").getMembership("excellent")); - if (poor != mem[ind][1]) fail("Membership function " + title + ", poor(" + value + ") should be " + int100ToDOuble(mem[ind][1]) + ", but it is " + int100ToDOuble(poor)); - if (good != mem[ind][2]) fail("Membership function " + title + ", good(" + value + ") should be " + int100ToDOuble(mem[ind][2]) + ", but it is " + int100ToDOuble(good)); - if (excellent != mem[ind][3]) fail("Membership function " + title + ", excellent(" + value + ") should be " + int100ToDOuble(mem[ind][3]) + ", but it is " + int100ToDOuble(excellent)); + if (poor != mem[ind][1]) fail("Membership function " + title + ", poor(" + value + ") should be " + int100ToDouble(mem[ind][1]) + ", but it is " + int100ToDouble(poor)); + if (good != mem[ind][2]) fail("Membership function " + title + ", good(" + value + ") should be " + int100ToDouble(mem[ind][2]) + ", but it is " + int100ToDouble(good)); + if (excellent != mem[ind][3]) fail("Membership function " + title + ", excellent(" + value + ") should be " + int100ToDouble(mem[ind][3]) + ", but it is " + int100ToDouble(excellent)); } } @@ -102,7 +104,7 @@ public class TestCaseJfuzzy extends TestCase { FunctionBlock fb = fis.getFunctionBlock(null); for (int ind = 1; ind < mem.length; ind++) { - double value = int100ToDOuble(mem[ind][0]); + double value = int100ToDouble(mem[ind][0]); fb.setVariable("inVar", value); @@ -110,9 +112,9 @@ public class TestCaseJfuzzy extends TestCase { int good = doubleToInt100(fb.getVariable("inVar").getMembership("good")); int excellent = doubleToInt100(fb.getVariable("inVar").getMembership("excellent")); - if (poor != mem[ind][1]) fail("Membership function " + title + ", poor(" + value + ") should be " + int100ToDOuble(mem[ind][1]) + ", but it is " + int100ToDOuble(poor)); - if (good != mem[ind][2]) fail("Membership function " + title + ", good(" + value + ") should be " + int100ToDOuble(mem[ind][2]) + ", but it is " + int100ToDOuble(good)); - if (excellent != mem[ind][3]) fail("Membership function " + title + ", excellent(" + value + ") should be " + int100ToDOuble(mem[ind][3]) + ", but it is " + int100ToDOuble(excellent)); + if (poor != mem[ind][1]) fail("Membership function " + title + ", poor(" + value + ") should be " + int100ToDouble(mem[ind][1]) + ", but it is " + int100ToDouble(poor)); + if (good != mem[ind][2]) fail("Membership function " + title + ", good(" + value + ") should be " + int100ToDouble(mem[ind][2]) + ", but it is " + int100ToDouble(good)); + if (excellent != mem[ind][3]) fail("Membership function " + title + ", excellent(" + value + ") should be " + int100ToDouble(mem[ind][3]) + ", but it is " + int100ToDouble(excellent)); } } @@ -123,7 +125,7 @@ public class TestCaseJfuzzy extends TestCase { return ((int) Math.round(d * 100)); } - double int100ToDOuble(int i) { + double int100ToDouble(int i) { return (i) / 100.0; } @@ -258,7 +260,7 @@ public class TestCaseJfuzzy extends TestCase { // Compare running the system vs. stored results for (int ind = 0; ind < mem.length; ind++) { // Get input variables from stores results - double inVar = int100ToDOuble(mem[ind][0]); + double inVar = int100ToDouble(mem[ind][0]); // Set variables and run the system fb.setVariable("inVar", inVar); @@ -268,7 +270,7 @@ public class TestCaseJfuzzy extends TestCase { double outVar = fb.getVariable("outVar").getLatestDefuzzifiedValue(); // Compare output variable to stored result - if (doubleToInt100(outVar) != mem[ind][4]) fail("Tipper output outVar(inVar=" + inVar + ") should be " + int100ToDOuble(mem[ind][4]) + ", but it is " + outVar); + if (doubleToInt100(outVar) != mem[ind][4]) fail("Output outVar(inVar=" + inVar + ") should be " + int100ToDouble(mem[ind][4]) + ", but it is " + outVar); } } @@ -413,6 +415,54 @@ public class TestCaseJfuzzy extends TestCase { checkMembershipFunction("Triangular", "./tests/junit_triang.fcl", "./tests/junit_triang.txt"); } + @Test + public void testMembershipWithVariables() { + Gpr.debug("Test"); + + // FCL.debug = true; + FIS fis = FIS.load("./tests/membershipWithVariables.fcl", true); + + Variable var = fis.getVariable("out"); + if (verbose) { + System.out.println(var); + System.out.println("Universe:\t[" + var.getUniverseMin() + " , " + var.getUniverseMax() + "]: " + var.getValue()); + } + + //--- + // Part 1 + //--- + double low = 1, mid = 2, high = 3; + fis.setVariable("low", low); + fis.setVariable("mid", mid); + fis.setVariable("high", high); + fis.evaluate(); + + if (verbose) { + System.out.println(var); + System.out.println("Universe:\t[" + var.getUniverseMin() + " , " + var.getUniverseMax() + "]: " + var.getValue()); + } + Assert.assertTrue(Math.abs(0.0 - var.getUniverseMin()) < EPSILON); + Assert.assertTrue(Math.abs(3.0 - var.getUniverseMax()) < EPSILON); + + //--- + // Part 2:Re-assign variables and make sure that the 'universe' is properly recalculated + //--- + low = 2; + mid = 4; + high = 6; + fis.setVariable("low", low); + fis.setVariable("mid", mid); + fis.setVariable("high", high); + fis.evaluate(); + + if (verbose) { + System.out.println(var); + System.out.println("Universe:\t[" + var.getUniverseMin() + " , " + var.getUniverseMax() + "]: " + var.getValue()); + } + Assert.assertTrue(Math.abs(0.0 - var.getUniverseMin()) < EPSILON); + Assert.assertTrue(Math.abs(6.0 - var.getUniverseMax()) < EPSILON); + } + /** * Test method a fuzzy system that showed NA values due to 'Triangle' membership function bug * Bug report and FCL code by Shashankrao Wankhede @@ -445,4 +495,5 @@ public class TestCaseJfuzzy extends TestCase { FIS fis = FIS.load("tests/noRules.fcl", true); if (verbose) System.out.println(fis); } + } diff --git a/src/net/sourceforge/jFuzzyLogic/testCases/TestCaseZzz.java b/src/net/sourceforge/jFuzzyLogic/testCases/TestCaseZzz.java new file mode 100644 index 0000000..37021c8 --- /dev/null +++ b/src/net/sourceforge/jFuzzyLogic/testCases/TestCaseZzz.java @@ -0,0 +1,109 @@ +/** + * + * JUnit test for jFuzzyLogic + * + * + * @author pcingola@users.sourceforge.net + */ +package net.sourceforge.jFuzzyLogic.testCases; + +import junit.framework.TestCase; +import net.sourceforge.jFuzzyLogic.FIS; +import net.sourceforge.jFuzzyLogic.Gpr; +import net.sourceforge.jFuzzyLogic.rule.Variable; + +import org.junit.Assert; +import org.junit.Test; + +/** + * Main testing class + * + * @author pcingola@users.sourceforge.net + * + */ +public class TestCaseZzz extends TestCase { + + static double EPSILON = 0.000001; // A small number + static boolean verbose = true; // Verbose? + + /** + * Read a table of numbers as an array of integers + */ + int[][] loadMembershipFile(String fileName) { + String file = Gpr.readFile(fileName); + String lines[] = file.split(System.getProperty("line.separator")); + int numCols = lines[0].split("\t").length; + int vals[][] = new int[lines.length - 1][numCols]; + + // Parse all lines + // Skip first line (title) + for (int lineNum = 1; lineNum < lines.length; lineNum++) { + String valStr[] = lines[lineNum].split("\t"); + // Parse each line + for (int col = 0; col < numCols; col++) + vals[lineNum - 1][col] = Integer.parseInt(valStr[col]); + } + + return vals; + } + + /** + * Round a double to an integer (time 100) + */ + int doubleToInt100(double d) { + return ((int) Math.round(d * 100)); + } + + double int100ToDouble(int i) { + return (i) / 100.0; + } + + @Test + public void testMembershipWithVariables() { + Gpr.debug("Test"); + + // FCL.debug = true; + FIS fis = FIS.load("./tests/membershipWithVariables.fcl", true); + + System.out.println(fis); + Variable var = fis.getVariable("out"); + if (verbose) { + System.out.println(var); + System.out.println("Universe:\t[" + var.getUniverseMin() + " , " + var.getUniverseMax() + "]: " + var.getValue()); + } + + //--- + // Part 1 + //--- + double low = 1, mid = 2, high = 3; + fis.setVariable("low", low); + fis.setVariable("mid", mid); + fis.setVariable("high", high); + fis.evaluate(); + + if (verbose) { + System.out.println(var); + System.out.println("Universe:\t[" + var.getUniverseMin() + " , " + var.getUniverseMax() + "]: " + var.getValue()); + } + Assert.assertTrue(Math.abs(0.0 - var.getUniverseMin()) < EPSILON); + Assert.assertTrue(Math.abs(3.0 - var.getUniverseMax()) < EPSILON); + + //--- + // Part 2:Re-assign variables and make sure that the 'universe' is properly recalculated + //--- + low = 2; + mid = 4; + high = 6; + fis.setVariable("low", low); + fis.setVariable("mid", mid); + fis.setVariable("high", high); + fis.evaluate(); + + if (verbose) { + System.out.println(var); + System.out.println("Universe:\t[" + var.getUniverseMin() + " , " + var.getUniverseMax() + "]: " + var.getValue()); + } + Assert.assertTrue(Math.abs(0.0 - var.getUniverseMin()) < EPSILON); + Assert.assertTrue(Math.abs(6.0 - var.getUniverseMax()) < EPSILON); + } +} diff --git a/tests/junit_functions.fcl b/tests/junit_functions.fcl index 76a2cb6..2f25bfb 100644 --- a/tests/junit_functions.fcl +++ b/tests/junit_functions.fcl @@ -23,6 +23,7 @@ FUZZIFY inVar END_FUZZIFY DEFUZZIFY outVar + DEFAULT = 0 TERM low := FUNCTION (inVar * 1.0); TERM mid := FUNCTION (inVar * 2.0) + 1; TERM high := FUNCTION (inVar * 3.0) + 5 * SIN(inVar); diff --git a/tests/membershipWithVariables.fcl b/tests/membershipWithVariables.fcl new file mode 100644 index 0000000..6ba3b8a --- /dev/null +++ b/tests/membershipWithVariables.fcl @@ -0,0 +1,25 @@ + +FUNCTION_BLOCK MembershipWithVariables + +VAR_INPUT + mid : REAL; + high : REAL; + low : REAL; +END_VAR + +VAR_OUTPUT + out : REAL; +END_VAR + +DEFUZZIFY out + METHOD : COG; + DEFAULT := 4; + + TERM low := (0, 0) (low, 1) (mid, 0) ; + TERM middle := (low, 0) (mid, 1) (high, 0); + TERM high := (mid, 0) (high, 1) ; + +END_DEFUZZIFY + +END_FUNCTION_BLOCK +