The X-mu Python Library
The X-mu Python Library implements the X-mu method of Fuzzy Set Theory using the Python Programming Language.
Briefly about Fuzzy and X-mu
Fuzzy Set Theory is a little like classical set theory, where there are items of a set (or list). However, where it differs is that Fuzzy Sets allow items to be partially in/out of a set. This level of partiality is called the membership value. A membership value can be set either individually, with some kind of look-up table or basic formula, or through some kind of analytic membership function.
The X-mu methodology tries to solve some of the problems regarding traditional forms of fuzzy set theory, and it does this by inverting a membership function. The result allow easy analytic/symbolic merging of functions when performing set operations (such as intersection, union and difference) or fuzzy arithmetic operations (such as addition, subtraction, multiplication, division or power). This is where The X-mu Python Library comes in, it implements this methodology in the python programming language, and uses the power of SymPy (the symbolic computation engine for Python) to do this!
In order to run the X-mu Python Library the following is required:
- Python 2 - tested with version 2.7.6
- SymPy - tested with version 0.7.4
- NumPy - tested with version 1.7.1
- Matplotlib - tested with version 1.3.1
The X-mu Python Library was created by Daniel Lewis while researching towards a PhD in Engineering Mathematics at the Intelligent Systems Laboratory of the University of Bristol. Daniel began X-mu research in 2012, and created this library in 2013. It was finally open-sourced in 2014.
The X-mu methodology was primarily created through the work of Prof. Trevor Martin (University of Bristol), and Daniel Lewis (University of Bristol). It is being to various applications (including ratings, traffic data) and as a boosting method to other techniques (including Fuzzy Association Rule Mining, and Fuzzy Concept Lattices). A big thank you goes to Prof. Trevor Martin.
Copyright 2014 Daniel Lewis
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
Here follows a basic example of use:
from sympy import * # For Symbolic Computation from xmu import * # Our X-mu Library (local) init_printing() # Turns on pretty printing x = Symbol('x', real=True, bounded=True) # Creates a real value u = Interval(1.0, 6.0) # Creates u (our Universe) ### Large large_a = 3.0 large_b = 5.0 large = UpwardGradientXmu(u, large_a, large_b) # An example of an Upward Gradient (i.e. an open Fuzzy Membership Function) vlarge_a = 5.0 vlarge_b = 6.0 vlarge = UpwardGradientXmu(u, vlarge_a, vlarge_b) # Another upward gradient ### Small small_a = 2.0 small_b = 4.0 small = DownwardGradientXmu(u, small_a, small_b) # Downward gradient ### Medium: Two options, either Triangular or Trapezoidal medium_a = 1 medium_b = 3 medium_c = 4 medium_d = 6 medium = TrapezoidalXmu(u, medium_a, medium_b, medium_c, medium_d) #medium = TriangularXmu(u, medium_a, medium_b, medium_d) ### This will perform: (Small union Large) - Medium testplot = small.unionX(large).differenceX(medium).get_xequals() ### Graph showing testplot and large graph = Graph(100, u) graph.prepare_plot(testplot, u"(Small union Large) - Medium") graph.add_plot(large, u"Large") graph.show_plot()
Showcasing the X-mu Library: The Online X-mu Calculator
The X-mu Calculator is now online and is available at: http://xmu.pythonanywhere.com/
The calculator allows the user to show graphs and also perform union, intersection and set difference. The online calculator (currently) only works over a continuous domain of real numbers, and using two membership functions (either L-Function, R-Function, Trapezoidal or Triangular).
It is python based, uses the X-mu Library, and is built using the Django web framework.