Code Monkey home page Code Monkey logo

Comments (5)

sguazt avatar sguazt commented on June 4, 2024

Hi Juan,

Well, I'm not an expert of fuzzy logic but I think here we have some theoretical issues.
For what I understand (e.g., see Scholarpedia, Wikipedia, and MATLAB),

  • an operator T is a t-norm iff:
T: [0, 1] x [0, 1] ->  [0, 1]  (boundary)
T(x,y) = T(y,x)                (commutativity)
T(x,T(y,z)) = T(T(x,y),z)      (associativity)
y <= z -> T(x,y) <= T(x,z)     (monotonicity)
T(x,1) = x                     (neutral element 1) 
  • an operator S is a t-conorm iff:
S: [0, 1] x [0, 1] ->  [0, 1]   (boundary)
S(x,y) = S(y,x)                 (commutativity)
S(x,S(y,z)) = S(S(x,y),z)       (associativity)
y <= z -> S(x,y) <= S(x,z)      (monotonicity)
S(x,0) = x                      (neutral element 0) 

Unfortunately, UnboundedSum cannot be a t-conorm operator since it violates some of the above properties, while UnboundedDifference (if defined as the difference between its operands) cannot be a t-norm operator since it violates all of such properties. For instance:

UnboundedSum(x,1) = x+1 > 1 for x >0 (violation of boundary)
UnboundedDifference(x,1) = x-1 != x for x != 2   (violation of neutrality)

Indeed, MATLAB allows sum to be only an aggregator operator.

Am I wrong?

Cheers,

Marco

References:

  1. http://www.scholarpedia.org/article/Triangular_norms_and_conorms
  2. https://en.wikipedia.org/wiki/T-norm
  3. https://it.mathworks.com/help/fuzzy/foundations-of-fuzzy-logic.html#bp78l70-5

from fuzzylite.

jcrada avatar jcrada commented on June 4, 2024

Hi Marco,

thank you for your useful post.

For the sake of simplicity and design, the aggregation/accumulation operators in fuzzylite are modelled as SNorms, and hence the UnboundedSum needs to be modelled as such in order to be incorporated into fuzzylite.

As for the UnboundedDifference, it is more of a suggestion after observing that most TNorms have their SNorm counterparts, although I am not aware of its usage in anyway.

from fuzzylite.

sguazt avatar sguazt commented on June 4, 2024

OK, maybe, if you think it is a good idea, you could add a warning message in the API doc of the UnboundedSum class just to alert a fuzzylite user that this class should only be used for rule aggregation and not for other stuff (like for representing the OR operation in a fuzzy rule).

Regarding the UnboundedDifference, according to the aforementioned references, the t-norm counterpart of a t-conorm operator S is the operator T such that

T(x,y) = 1-S(1-x,1-y)

So, if we (wrongly) consider UnboundedSum a t-conorm operator, its t-norm counterpart would be:

T(x,y) = 1-(1-x+1-y) = 1-2+x+y = x+y-1

As expected, this is not a real t-norm operator since it violates some properties.

from fuzzylite.

jcrada avatar jcrada commented on June 4, 2024

Hi,

After such a long time, I have fixed this with your help. Thank you very much!

I understand the UnboundedSum is not a T-conorm, but it is the only way it can be added to fuzzylite for aggregation. I am not sure if i will add support for FCL yet.

Please, check 809675e

Cheers.

from fuzzylite.

sguazt avatar sguazt commented on June 4, 2024

Hi Juan,
Thank you for the fix. Unfortunately, I'm very busy now. I'll check it out ASAP.

Cheers,

Marco

from fuzzylite.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.