home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.ai.fuzzy      Fuzzy logic... all warm and fuzzy-like      1,275 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 706 of 1,275   
   Kirk Zurell to jjakiela@prz.edu.pl   
   Re: Selecting membership functions   
   30 Jul 07 14:08:13   
   
   From: kirk@bytecraft.com   
      
   jjakiela@prz.edu.pl wrote:   
   > Hi,   
   >   
   > I am a fuzzy logic newcomer and I have some problems with selection of   
   > membership functions. Could you give me some hints where to find step   
   > by step guide of how to select functions depending on the problem.   
      
   First, make sure your problem has a linguistic element. That is, some   
   way in which you can describe both the problem's inputs and the   
   various, perhaps overlapping, possibilities that different crisp input   
   values represent.   
      
   (I once tried writing a fuzzy circle-drawing algorithm. It didn't   
   work; I suspect the perfection of a circle has no edge of human   
   linguistics on which to grab. How could one describe the change in the   
   curve of a perfect circle in human language?)   
      
      
   1. Threshold, singleton, and range functions offer abrupt transitions   
   between in-set and not-in-set values. If your problem has   
   black-and-white characteristics, and needs abrupt changes in state or   
   complete mutual-exclusion or -inclusion, use these.   
      
   2. Triangular and trapezoid functions offer partial degrees of truth,   
   so these offer the real meat of fuzzy calculations. If your input can   
   be somewhat x and somewhat y at the same time, choose these. If in   
   doubt, choose these.   
      
   If your input data has only one value that is completely   
   true, use a triangle. If your input has a range of completely true   
   values, use a trapezoid.   
      
   3. When you need to describe your problem with a mixture of both, the   
   secret is to create threshold-like abrupt upper or lower transitions.   
   For example:   
      
   LINGUISTIC temperature TYPE int8 MIN -40 MAX 60   
   {   
     MEMBER warm { 15, 20, 25 }   
     MEMBER hot { 20, 25, 40, 40 } //don't conflict with "danger"   
     MEMBER danger { 40, 60 } //no mistaking danger here.   
   }   
      
   4. There are table-driven functions that graph many crisp values with   
   arbitrary degrees of membership, but these are for very detailed   
   envelopes. If you have an input with very nuanced meaning that you   
   want to preserve, use a table.   
      
   (Similarly, there are functions using curves created by crisp   
   formulas. They might work well combined with other simpler envelopes,   
   but they detract from the purpose of fuzzy: using simple calculations   
   to arrive at approximate but useful answers. I could have used   
   formula-based members to fix my circle drawing fuzzy system, but what   
   would be the point?)   
      
      
   Also:   
      
   5. Take advantage of some features of your environment. For instance:   
      
   LINGUISTIC hue TYPE unsigned int8 MIN 0 MAX 239   
   {   
     MEMBER not_red { 10, 30, 209, 229 }   
     MEMBER red { hue IS NOT not_red }   
   }   
      
   This creates an inverted trapezoid, excluding the centre from the   
   membership function. If your problem has an input that wraps around   
   inconveniently, you may be able to describe it using a method like this.   
      
      
   Good luck.   
      
   Kirk   
      
   --   
   Kirk Zurell   
   Byte Craft Limited   
   Waterloo, Ontario, Canada   
   http://www.bytecraft.com   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca