summaryrefslogtreecommitdiff
path: root/examples/mamdani/octave/investment_portfolio.java
diff options
context:
space:
mode:
authorJohannes Schauer <josch@debian.org>2015-07-07 11:12:00 +0200
committerJohannes Schauer <josch@debian.org>2015-07-07 11:12:00 +0200
commitd210b3addc8ffed7214afd8c7882e700fbcc38c5 (patch)
treeded15607f7f24f83d2d0d7c542265c0a97af577a /examples/mamdani/octave/investment_portfolio.java
fuzzylite (5.1+dfsg-1) unstable; urgency=medium
* new upstream version (Closes: #777858) * removed debian/patches/20140705-minor-improvements-on-building-script as upstream integrated it. Adjust build options in d/rules accordingly. * delete debian/patches/20140714-building-from-objects-just-once and debian/patches/20141027-fix-some-spelling as they have been applied upstream * install usr/lib/*/pkgconfig/fuzzylite.pc in fuzzylite-dev * SONAME bump from 5.0 to 5.1, so renaming libfuzzylite5.0 to libfuzzylite5.1 * add debian/patches/pkgconfig_installdir to install pkgconfig file in correct location # imported from the archive
Diffstat (limited to 'examples/mamdani/octave/investment_portfolio.java')
-rw-r--r--examples/mamdani/octave/investment_portfolio.java62
1 files changed, 62 insertions, 0 deletions
diff --git a/examples/mamdani/octave/investment_portfolio.java b/examples/mamdani/octave/investment_portfolio.java
new file mode 100644
index 0000000..09084f1
--- /dev/null
+++ b/examples/mamdani/octave/investment_portfolio.java
@@ -0,0 +1,62 @@
+import com.fuzzylite.*;
+import com.fuzzylite.defuzzifier.*;
+import com.fuzzylite.factory.*;
+import com.fuzzylite.hedge.*;
+import com.fuzzylite.imex.*;
+import com.fuzzylite.norm.*;
+import com.fuzzylite.norm.s.*;
+import com.fuzzylite.norm.t.*;
+import com.fuzzylite.rule.*;
+import com.fuzzylite.term.*;
+import com.fuzzylite.variable.*;
+
+public class investment_portfolio{
+public static void main(String[] args){
+Engine engine = new Engine();
+engine.setName("Investment-Portfolio");
+
+InputVariable inputVariable1 = new InputVariable();
+inputVariable1.setEnabled(true);
+inputVariable1.setName("Age");
+inputVariable1.setRange(20.000, 100.000);
+inputVariable1.addTerm(new ZShape("Young", 30.000, 90.000));
+inputVariable1.addTerm(new SShape("Old", 30.000, 90.000));
+engine.addInputVariable(inputVariable1);
+
+InputVariable inputVariable2 = new InputVariable();
+inputVariable2.setEnabled(true);
+inputVariable2.setName("RiskTolerance");
+inputVariable2.setRange(0.000, 10.000);
+inputVariable2.addTerm(new ZShape("Low", 2.000, 8.000));
+inputVariable2.addTerm(new SShape("High", 2.000, 8.000));
+engine.addInputVariable(inputVariable2);
+
+OutputVariable outputVariable = new OutputVariable();
+outputVariable.setEnabled(true);
+outputVariable.setName("PercentageInStocks");
+outputVariable.setRange(0.000, 100.000);
+outputVariable.fuzzyOutput().setAccumulation(new EinsteinSum());
+outputVariable.setDefuzzifier(new Centroid(200));
+outputVariable.setDefaultValue(Double.NaN);
+outputVariable.setLockPreviousOutputValue(false);
+outputVariable.setLockOutputValueInRange(false);
+outputVariable.addTerm(new Gaussian("AboutFifteen", 15.000, 10.000));
+outputVariable.addTerm(new Gaussian("AboutFifty", 50.000, 10.000));
+outputVariable.addTerm(new Gaussian("AboutEightyFive", 85.000, 10.000));
+engine.addOutputVariable(outputVariable);
+
+RuleBlock ruleBlock = new RuleBlock();
+ruleBlock.setEnabled(true);
+ruleBlock.setName("");
+ruleBlock.setConjunction(new EinsteinProduct());
+ruleBlock.setDisjunction(new EinsteinSum());
+ruleBlock.setActivation(new EinsteinProduct());
+ruleBlock.addRule(Rule.parse("if Age is Young or RiskTolerance is High then PercentageInStocks is AboutEightyFive", engine));
+ruleBlock.addRule(Rule.parse("if Age is Old or RiskTolerance is Low then PercentageInStocks is AboutFifteen", engine));
+ruleBlock.addRule(Rule.parse("if Age is not extremely Old and RiskTolerance is not extremely Low then PercentageInStocks is AboutFifty with 0.500", engine));
+ruleBlock.addRule(Rule.parse("if Age is not extremely Young and RiskTolerance is not extremely High then PercentageInStocks is AboutFifty with 0.500", engine));
+engine.addRuleBlock(ruleBlock);
+
+
+}
+}