Introduction
Fuzzy logic may sound sexy, complex, the next best thing or else,
but despite the vast literature and body of research, it remains a subject
at the same time mysterious and yet also relatively easy to approach.
In a nutshell, it consists in using rules written in a natural language i.e. with a
capacity to deal with various interpretations or semantics instead of
using hard numbers in a purely mathematical way. There is
obviously some easy maths involved in the background but each step "makes
logical sense" and in a way FL has less of the "black box" image than
neural nets and other A.I. tools, simply because the front end uses
plain looking rules with variables and attributes, such as for intance:
IF StoK
IS "HIGH" AND GradientStoK is "Down" THEN SELL.
Anyway, instead of plagiarizing existing
tutorials and introductions to
Fuzzy Logic, here are a few pages worth reading as an introduction to
FL:
http://www.fpk.tu-berlin.de/~anderl/epsilon/fuzzyintro4.pdf
http://www.generation5.org/content/1999/fuzzyintro.asp
http://www-dse.doc.ic.ac.uk/~nd/surprise_96/journal/vol2/sbaa/article2.html
http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol2/jp6/article2.html
as well as 2 pages on this site : Intro +
Tutorial and a document
FuzzyIntro.pdf
For further reading, a few references are also provided at the bottom of this page.
Of all existing tutorials, one stood out from the rest and inspired
me to develop my first FL tools a number of years ago, up to a point of
now releasing my simple FL controller library (sFLC3). I therefore
strongly recommend reading the excellent:
Here is an extract from Seattle
Robotics web site, as well as a MS
Word copy of the tutorial.
Our sFLC3 Library
The sFLC3 (Simple Fuzzy Logic Controller v3) is in our opinion an interesting endeavour to simplify problem solving with
FL controllers. Our objective was not only to build a good tutorial
tool, but also to design a simple modular design which would be scalable
so that complex problems could be solved by a collection of
inter-connected FLCs in a Fuzzy State Machine.
Current Version is V3.06 (Final Release).
sFLC3 is built in a form of a Visual C++ object oriented DLL which allows perfectly scalable solutions.
As a comparison, previous release v2.2 was limited to single FLC systems
i.e. mostly for tutorial purposes. sFLC3
has been designed with both simplicity and scalability in
mind. The C++ class design is streamlined
in order to make FL controllers calculate very fast while remaining very
versatile. We can now indeed derive our FLC class into new classes to
for instance build Fuzzy State Machines, or FL controllers in specific
environment such as TradeStation (a test version is already available).
What can we see already?
A few sample clients have been developed now, as well as a wrapper
DLL for TradeStation (beta release), and the best way maybe to learn
about sFLC3 is to go through those programs and read some of the
available documentation on this site. One sample program is dialog based and
explains very clearly the FL inner workings, while the other is a
console application which can produce details fuzzy outputs to better
assess the response curve of the FL controller, and thereby choosing the
best parameters for the problem at hand. The source code is not
protected.
Please click here for a
short description and screenshots of sFLC3.
Please click here for a
detailed description and screenshots of sFLC3.
Please click here to
download demo application (valid until end June 2008)
Please click here to
download sample console application (VC++ source code, valid until
end June 2008)
Please click
here to read introduction document on our previous SimpleFLC v2 (v3
doc also
now available).
So, what's in the pipeline now?
First to come is the commercial release of "FL for TS"
wrapper, and provide more
samples to build more complex interconnections of FL controllers into
complex systems. We will
then eventually implement Ward Systems GeneHunter ™
(or possibly our own GA code)
to it to be able to construct optimal complex systems automatically.
This expansion path
will remain easily accessible thanks to our simple system design: a sFLC3 module can
be driven with about 5 criteria (individual) and less than 10 when
inter-connected into a complex fuzzy framework. Such concise model
will also be critical to overall performance.
Lastly, time dependent modeling, fuzzy events, etc will be added in a
wrapper class to be able to provide a Fuzzy State Machine (planned
release early 2009)
Who is this sFLC for ???
Right now, SimpleFLC is primarily targeted at C++ developers
who wish to implement simple, efficient fuzzy logic into their VC++
code, but it will also be of interest to anyone who wish to learn about
fuzzy logic controllers. In this latter case, it is recommended to
study the Seattle Robotics tutorial, and experiment a little with our
SimpleFLC. SimpleFLC is not specifically related to any trading
application. Developers should obviously know how to import a DLL
into their code (DLL, Header, LIB and EXP files available).
With the release of the TradeStation interface, a lot of traders will
have a great tool to build superior trading strategies, and with the
addition of GeneHunter, it should hopefully give competition a bit of a
headache.
The release of the TradeStation interface is
ready for release, but is not pushed commercially until we find time to write some documentation and
to build
indicator samples (a template is already available).
What is available right now??
Besides the sFLC3, a shareware version of our (older) VC++ classes (and executable) is
still available for free
download
(v1.9). The V2.2 source code will be released as soon as v3 is
available commercially. sFLC3 DLL source code will also be made available
on a strict license basis.
The
client application is "open source" to show how easy and fast it is
to build a sFLC3. A dedicated introduction page can be reached
here.
For more details about SimpleFLC, we recommend you read the following
documents written for sFLC V2.2 but still quite valid:
contact
info@foretrade.com for any question.
Thanks
Besides Steven D. Kaehler we should be grateful for writing such a
self-explanatory hands-on tutorial, we must not forget 2 components
we've been using in our sFLC3 client application:
NTGraph and
GridControl. We would therefore like to thank the CodeProject
people for their great site, and particularly Nikolai Teofilov and Chris
Maunder for their contributions.
The GridControl is embedded in the source code of the sFLC3 client
application. NTGraph needs to be however installed on the target
computer. The setup files available from the Download section do
include the NTGraph and automatically register the OCX component
(ActiveX). The source files and OCX can however be downloaded
separately: OCX
Source
References
Besides the FL newsgroup, we
recommend these 2 e-books for more details:
“Fuzzy Control,”
Kevin
M. Passino and Stephen Yurkovich, Addison Wesley Longman, Menlo Park,
CA, 1998 (later published by Prentice-Hall).
http://eewww.eng.ohio-state.edu/~passino/FCbook.pdf (very
good!).
If the link is broken, a
copy is
available on this site.
“Fuzzy
Logic: a Practical Approach,”
McNeill, Martin and Ellen Thro., 1994
Academic Press Professional.
http://www.fuzzysys.com/books/FLLib/FUZZYPDF/FUZZYLOG.PDF
(good)
An introduction to FL with simple BASIC implementation can also be
found at : www.fuzzy-logic.com
An archive of the FL newsgroup FAQs can also be found at:
http://www.cs.cmu.edu/Groups/AI/html/faqs/ai
What is now available?
Click here for details on our latest FLC
offering |