home › Forums › # Technical Support › Feedback in QtFuzzyLite 6 › Reply To: Feedback in QtFuzzyLite 6
Hi Joerg,
thank you for your interesting questions.
It would be better if you provide an example of what you are trying to achieve.
For what I understand, it seems to me that you may want to use output variables as antecedents in the rules, although this does not refer to the next simulation step (t+1). Consider the example “SimpleDimmerInverse”, where the output of Power is computed and used in the same simulation step:
#File: /fuzzylite/examples/mamdani/SimpleDimmerInverse.fll
Engine: SimpleDimmerInverse
InputVariable: Ambient
enabled: true
range: 0.000 1.000
lock-range: false
term: DARK Triangle 0.000 0.250 0.500
term: MEDIUM Triangle 0.250 0.500 0.750
term: BRIGHT Triangle 0.500 0.750 1.000
OutputVariable: Power
enabled: true
range: 0.000 1.000
lock-range: false
aggregation: Maximum
defuzzifier: Centroid 200
default: nan
lock-previous: false
term: LOW Triangle 0.000 0.250 0.500
term: MEDIUM Triangle 0.250 0.500 0.750
term: HIGH Triangle 0.500 0.750 1.000
OutputVariable: InversePower
enabled: true
range: 0.000 1.000
lock-range: false
aggregation: Maximum
defuzzifier: Centroid 500
default: nan
lock-previous: false
term: LOW Cosine 0.200 0.500
term: MEDIUM Cosine 0.500 0.500
term: HIGH Cosine 0.800 0.500
RuleBlock:
enabled: true
conjunction: none
disjunction: none
implication: Minimum
activation: General
rule: if Ambient is DARK then Power is HIGH
rule: if Ambient is MEDIUM then Power is MEDIUM
rule: if Ambient is BRIGHT then Power is LOW
rule: if Power is LOW then InversePower is HIGH
rule: if Power is MEDIUM then InversePower is MEDIUM
rule: if Power is HIGH then InversePower is LOW
Alternatively, you could (1) create your own activation method, or (2) create your own way to process the engine. For (1), you could create an activation method that stores the output values at (t-1), computes the current outputs at (t), and changes the current outputs according to (t-1). For (2), you do not execute Engine::process()
, but instead create a method of your own to do the same as in (1). You can take a look at what Engine::process()
does for an idea. In cases (1) and (2), you will not be able to see the simulation in QtFuzzyLite, though.
If you provide a more specific example of what you are trying to achieve, there may be other solutions.
Cheers.