Example #1
0
 def set_in_variable(self, varname, domain):
     jfml_var = FuzzyVariableType(name=varname,
                                  domainLeft=domain[0],
                                  domainRight=domain[1])
     self.variables[varname] = jfml_var
     self.terms[varname] = {}
     return jfml_var
from py4jfml.rule.ClauseType import ClauseType
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.MamdaniRuleBaseType import MamdaniRuleBaseType
from py4jfml.term.FuzzyTerm import FuzzyTerm
from py4jfml.term.FuzzyTermType import FuzzyTermType

# FuzzyInference
iris = FuzzyInferenceSystem("iris - MAMDANI")

# KnowledgeBase
kb = KnowledgeBaseType()
iris.setKnowledgeBase(kb)

# FUZZY VARIABLE SepalLength
sl = FuzzyVariableType("SepalLength", 4.3, 7.9)

# FUZZY TERM low
sl_low = FuzzyTermType("low", FuzzyTerm.TYPE_trapezoidShape, [4.3, 4.3, 5.019, 6.048])
sl.addFuzzyTerm(sl_low)

# FUZZY TERM  medium
sl_medium = FuzzyTermType("medium", FuzzyTerm.TYPE_triangularShape, [5.019, 6.048, 7.05])
sl.addFuzzyTerm(sl_medium)

# FUZZY TERM high
sl_high = FuzzyTermType("high", FuzzyTerm.TYPE_trapezoidShape, [6.048, 7.05, 7.9, 7.9])
sl.addFuzzyTerm(sl_high)

# FUZZY TERM NOT(low)
sl_not_low = FuzzyTermType("NOT(low)", FuzzyTerm.TYPE_trapezoidShape, [4.3, 4.3, 5.019, 6.048])
Example #3
0
from py4jfml.rule.AntecedentType import AntecedentType
from py4jfml.rule.ClauseType import ClauseType
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.TsukamotoRuleBaseType import TsukamotoRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType
from py4jfml.term.TsukamotoTermType import TsukamotoTermType

tipper = FuzzyInferenceSystem("tipper - TSUKAMOTO")

#KNOWLEDGE BASE
kb = KnowledgeBaseType()
tipper.setKnowledgeBase(kb)

#FUZZY VARIABLE food
food = FuzzyVariableType(name="food", domainLeft=0.0, domainRight=10.0)

#FUZZY TERM rancid
rancid = FuzzyTermType(name="rancid",
                       type_java=FuzzyTermType.TYPE_triangularShape,
                       param=[0.0, 2.0, 5.5])
food.addFuzzyTerm(rancid)

#FUZZY TERM delicious
delicious = FuzzyTermType(name="delicious",
                          type_java=FuzzyTermType.TYPE_rightLinearShape,
                          param=[5.5, 10.0])
food.addFuzzyTerm(delicious)

kb.addVariable(food)
from py4jfml.rule.AntecedentType import AntecedentType
from py4jfml.rule.ClauseType import ClauseType
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.MamdaniRuleBaseType import MamdaniRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType

japaneseDietAssessment = FuzzyInferenceSystem(
    "japaneseDietAssessment - MAMDANI")

# KNOWLEDGE BASE
kb = KnowledgeBaseType()
japaneseDietAssessment.setKnowledgeBase(kb)

# FUZZY VARIABLE PCC(Percentage of Calories from Carbohydrate)
pcc = FuzzyVariableType("PCC", 0., 100.)

# FUZZY TERM low
pcc_low = FuzzyTermType("low", FuzzyTermType.TYPE_trapezoidShape,
                        [0., 0., 55., 60.])
pcc.addFuzzyTerm(pcc_low)

# FUZZY TERM medium
pcc_medium = FuzzyTermType("medium", FuzzyTermType.TYPE_trapezoidShape,
                           [55., 60., 65., 70.])
pcc.addFuzzyTerm(pcc_medium)

# FUZZY TERM high
pcc_high = FuzzyTermType("high", FuzzyTermType.TYPE_trapezoidShape,
                         [65., 70., 100., 100.])
pcc.addFuzzyTerm(pcc_high)
from py4jfml.rule.AntecedentType import AntecedentType
from py4jfml.rule.ClauseType import ClauseType
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.TsukamotoRuleBaseType import TsukamotoRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType
from py4jfml.term.TsukamotoTermType import TsukamotoTermType

tipper = FuzzyInferenceSystem("tipper - TSUKAMOTO")

# KNOWLEDGE BASE
kb = KnowledgeBaseType()
tipper.setKnowledgeBase(kb)

# FUZZY VARIABLE food
food = FuzzyVariableType("food", 0., 10.)

# FUZZY TERM rancid
rancid = FuzzyTermType("rancid", FuzzyTermType.TYPE_triangularShape,
                       [0., 2., 5.5])
food.addFuzzyTerm(rancid)

# FUZZY TERM delicious
delicious = FuzzyTermType("delicious", FuzzyTermType.TYPE_rightLinearShape,
                          [5.5, 10.])
food.addFuzzyTerm(delicious)

kb.addVariable(food)

# FUZZY VARIABLE service
service = FuzzyVariableType("service", 0., 10.)
from py4jfml.knowledgebasevariable.FuzzyVariableType import FuzzyVariableType
from py4jfml.rule.AntecedentType import AntecedentType
from py4jfml.rule.ClauseType import ClauseType
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.MamdaniRuleBaseType import MamdaniRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType

invertedPendulum = FuzzyInferenceSystem(name="invertedPendulum - MAMDANI")

#KNOWLEDGE BASE
kb = KnowledgeBaseType()
invertedPendulum.setKnowledgeBase(value=kb)

#FUZZY VARIABLE Angle
ang = FuzzyVariableType(name="Angle", domainLeft=0.0, domainRight=255.0)

#FUZZY TERM VNEG
ang_vneg = FuzzyTermType(name="very negative", type_java=FuzzyTermType.TYPE_trapezoidShape, param=[0.0, 0.0, 48.0, 88.0])
ang.addFuzzyTerm(ft=ang_vneg)

#FUZZY TERM NEG
ang_neg = FuzzyTermType(name="negative", type_java=FuzzyTermType.TYPE_triangularShape, param=[48.0, 88.0, 128.0])
ang.addFuzzyTerm(ft=ang_neg)

#FUZZY TERM NEU
ang_neu = FuzzyTermType(name="zero",  type_java=FuzzyTermType.TYPE_triangularShape, param=[88.0, 128.0, 168.0])
ang.addFuzzyTerm(ft=ang_neu)

#FUZZY TERM POS
ang_pos = FuzzyTermType(name="positive", type_java=FuzzyTermType.TYPE_triangularShape, param=[128.0, 168.0, 208.0])
from py4jfml.operator.OrLogicalType import OrLogicalType
from py4jfml.rule.AntecedentType import AntecedentType
from py4jfml.rule.ClauseType import ClauseType
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.MamdaniRuleBaseType import MamdaniRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType

invertedPendulum = FuzzyInferenceSystem("invertedPendulum - MAMDANI")

# KNOWLEDGE BASE
kb = KnowledgeBaseType()
invertedPendulum.setKnowledgeBase(kb)

# FUZZY VARIABLE
ang = FuzzyVariableType("Angle", 0.0, 255.0)

# FUZZY TERM VNEG
ang_vneg = FuzzyTermType("very negative", FuzzyTermType.TYPE_trapezoidShape, [0.0, 0.0, 48.0, 88.0])
ang.addFuzzyTerm(ang_vneg)

#FUZZY TERM NEG
ang_neg = FuzzyTermType("negative", FuzzyTermType.TYPE_triangularShape,[48.0, 88.0, 128.0])
ang.addFuzzyTerm(ang_neg)

# FUZZY TERM NEU
ang_neu = FuzzyTermType("zero", FuzzyTermType.TYPE_triangularShape,[88.0, 128.0, 168.0])
ang.addFuzzyTerm(ang_neu)

#FUZZY TERM POS
ang_pos = FuzzyTermType("positive", FuzzyTermType.TYPE_triangularShape,[128.0, 168.0, 208.0])
from py4jfml.knowledgebasevariable.FuzzyVariableType import FuzzyVariableType
from py4jfml.rule.AntecedentType import AntecedentType
from py4jfml.rule.ClauseType import ClauseType
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.MamdaniRuleBaseType import MamdaniRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType

tipper = FuzzyInferenceSystem("tipper - MAMDANI")

# KNOWLEDGE BASE
kb = KnowledgeBaseType()
tipper.setKnowledgeBase(kb)

# FUZZY VARIABLE food
food = FuzzyVariableType("food", 0., 10.)

# FUZZY TERM rancid
rancid = FuzzyTermType("rancid", FuzzyTermType.TYPE_triangularShape,
                       [0., 2., 5.5])
food.addFuzzyTerm(rancid)

# FUZZY TERM delicious
delicious = FuzzyTermType("delicious", FuzzyTermType.TYPE_rightLinearShape,
                          [5.5, 10.])
food.addFuzzyTerm(delicious)

kb.addVariable(food)

# FUZZY VARIABLE service
service = FuzzyVariableType("service", 0., 10.)
from py4jfml.rule.TskConsequentType import TskConsequentType
from py4jfml.rule.TskFuzzyRuleType import TskFuzzyRuleType
from py4jfml.rulebase.TskRuleBaseType import TskRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType
from py4jfml.term.TskTermType import TskTermType
from py4jfml.term.TskTerm import TskTerm
from py4jfml.rulebase.FuzzySystemRuleBase import FuzzySystemRuleBase

invertedPendulum = FuzzyInferenceSystem("invertedPendulum - TSK")

#KNOWLEDGE BASE
kb = KnowledgeBaseType()
invertedPendulum.setKnowledgeBase(kb)

#FUZZY VARIABLE Angle
ang = FuzzyVariableType(name="Angle", domainLeft=0.0, domainRight=255.0)

#FUZZY TERM VNEG
ang_vneg = FuzzyTermType(name="very negative",
                         type_java=FuzzyTermType.TYPE_trapezoidShape,
                         param=[0.0, 0.0, 48.0, 88.0])
ang.addFuzzyTerm(ft=ang_vneg)

#FUZZY TERM NEG
ang_neg = FuzzyTermType(name="negative",
                        type_java=FuzzyTermType.TYPE_triangularShape,
                        param=[48.0, 88.0, 128.0])
ang.addFuzzyTerm(ft=ang_neg)

#FUZZY TERM NEU
ang_neu = FuzzyTermType(name="zero",
from py4jfml.rule.TskConsequentType import TskConsequentType
from py4jfml.rule.TskFuzzyRuleType import TskFuzzyRuleType
from py4jfml.rulebase.FuzzySystemRuleBase import FuzzySystemRuleBase
from py4jfml.rulebase.TskRuleBaseType import TskRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType
from py4jfml.term.TskTerm import TskTerm
from py4jfml.term.TskTermType import TskTermType

invertedPendulum = FuzzyInferenceSystem("invertedPendulum - TSK")

# KNOWLEDGE BASE
kb = KnowledgeBaseType()
invertedPendulum.setKnowledgeBase(kb)

# FUZZY VARIABLE Angle
ang = FuzzyVariableType("Angle", 0.0, 255.0)

# FUZZY TERM VNEG
ang_vneg = FuzzyTermType("very negative", FuzzyTermType.TYPE_trapezoidShape,
                         [0.0, 0.0, 48.0, 88.0])
ang.addFuzzyTerm(ang_vneg)

# FUZZY TERM NEG
ang_neg = FuzzyTermType("negative", FuzzyTermType.TYPE_triangularShape,
                        [48.0, 88.0, 128.0])
ang.addFuzzyTerm(ang_neg)

# FUZZY TERM NEU
ang_neu = FuzzyTermType("zero", FuzzyTermType.TYPE_triangularShape,
                        [88.0, 128.0, 168.0])
ang.addFuzzyTerm(ang_neu)
Example #11
0
from py4jfml.rulebase.AnYaRuleBaseType import AnYaRuleBaseType
from py4jfml.rulebase.FuzzySystemRuleBase import FuzzySystemRuleBase
from py4jfml.rulebase.MamdaniRuleBaseType import MamdaniRuleBaseType
from py4jfml.rulebase.TskRuleBaseType import TskRuleBaseType
from py4jfml.rulebase.TsukamotoRuleBaseType import TsukamotoRuleBaseType
from py4jfml.term.FuzzyTerm import FuzzyTerm
from py4jfml.term.FuzzyTermType import FuzzyTermType

#A FUZZY VARIABLE
from py4jfml.term.TskTerm import TskTerm
from py4jfml.term.TskTermType import TskTermType
from py4jfml.term.TsukamotoTermType import TsukamotoTermType

domainLeft = 0.0
domainRight = 255.
force = FuzzyVariableType("Force", domainLeft, domainRight)
force.setDefaultValue(0.0)
force.setAccumulation("MAX")
force.setType("output")
# FUZZY TERM VNEG
termName = "very negative"
force_vneg = FuzzyTermType(termName, FuzzyTermType.TYPE_trapezoidShape,
                           [0.0, 0.0, 48.0, 88.0])
# FUZZY TERM NEG
force_neg = FuzzyTermType("negative", FuzzyTermType.TYPE_triangularShape,
                          [48.0, 88.0, 128.0])
# FUZZY TERM NEU
force_neu = FuzzyTermType("zero", FuzzyTermType.TYPE_triangularShape,
                          [88.0, 128.0, 168.0])

defuzzCoA = DefuzzifierCenterOfArea(2., 4., [force_vneg])
kb.addVariable(var=cloudFood)

#CLOUD service
datumService = [6.0,5.7,7.0,4.6]
cloudService = AnYaDataCloudType(name="service", terms=datumService)

kb.addVariable(var=cloudService)

#CLOUD service
datumQuality = [8.0,7.7,10.0,8.6]
cloudQuality = AnYaDataCloudType(name="quality", terms=datumQuality)

kb.addVariable(var=cloudQuality)

#FUZZY VARIABLE tip
tip = FuzzyVariableType(name="tip", domainLeft=0.0, domainRight=20.0)
tip.setDefaultValue(0.0)
tip.setAccumulation("MAX")
tip.setDefuzzifierName("COG")
tip.setType("output")

#FUZZY TERM cheap
cheap = FuzzyTermType(name="cheap", type_java=FuzzyTermType.TYPE_triangularShape, param=[0.0, 5.0, 10.0])
tip.addFuzzyTerm(cheap)

#FUZZY TERM average
average = FuzzyTermType(name="average", type_java=FuzzyTermType.TYPE_triangularShape, param=[5.0, 10.0, 15.0])
tip.addFuzzyTerm(average)

#FUZZY TERM generous
generous = FuzzyTermType(name="generous", type_java=FuzzyTermType.TYPE_triangularShape, param=[10.0, 15.0, 20.0])
Example #13
0
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.MamdaniRuleBaseType import MamdaniRuleBaseType
from py4jfml.term.FuzzyTerm import FuzzyTerm
from py4jfml.term.FuzzyTermType import FuzzyTermType

gateway = JavaGateway()

iris = FuzzyInferenceSystem("iris - MAMDANI")

#KNOWLEDGEBASE
kb = KnowledgeBaseType()
iris.setKnowledgeBase(kb)

#FUZZY VARIABLE PetalWidth
pw = FuzzyVariableType(name="PetalWidth", domainLeft=0.1, domainRight=2.5)

#FUZZY TERM low
pw_lowLIN = FuzzyTermType(name="lowLIN",
                          type_java=FuzzyTerm.TYPE_leftLinearShape,
                          param=[0., 0.8])
pw.addFuzzyTerm(pw_lowLIN)

#lowGAU
pw_lowGAU = FuzzyTermType(name="lowGAU",
                          type_java=FuzzyTerm.TYPE_leftGaussianShape,
                          param=[0.5, 0.2])
pw.addFuzzyTerm(pw_lowGAU)
#lowPI
pw_lowPi = FuzzyTermType(name="lowPi",
                         type_java=FuzzyTerm.TYPE_piShape,
from py4jfml.knowledgebasevariable.FuzzyVariableType import FuzzyVariableType
from py4jfml.rule.AntecedentType import AntecedentType
from py4jfml.rule.ClauseType import ClauseType
from py4jfml.rule.ConsequentType import ConsequentType
from py4jfml.rule.FuzzyRuleType import FuzzyRuleType
from py4jfml.rulebase.MamdaniRuleBaseType import MamdaniRuleBaseType
from py4jfml.term.FuzzyTermType import FuzzyTermType

iris = FuzzyInferenceSystem("iris - MAMDANI")

#KNOWLEDGE BASE
kb = KnowledgeBaseType()
iris.setKnowledgeBase(kb)

#FUZZY VARIABLE PetalWidth
pw = FuzzyVariableType(name="PetalWidth", domainLeft=0.1, domainRight=2.5)

#FUZZY TERM low
pw_low = FuzzyTermType(name="low",
                       type_java=FuzzyTermType.TYPE_trapezoidShape,
                       param=[0.1, 0.1, 0.244, 1.087])
pw.addFuzzyTerm(pw_low)

#FUZZY TERM medium
pw_medium = FuzzyTermType(name="medium",
                          type_java=FuzzyTermType.TYPE_trapezoidShape,
                          param=[0.244, 1.087, 1.419, 1.906])
pw.addFuzzyTerm(pw_medium)

#FUZZY TERM high
pw_high = FuzzyTermType(name="high",