projet:projetsi4_0114_fuzzy_contexter
Ceci est une ancienne révision du document !
Please write all the text in English !
Fuzzy Contexter
Project Presentation
Detailed Name :
Group Composition :
Rapport :
Slides of the presentation :
Software Specifications :
List of new Beans
Bean <name>
- purpose of the bean
- input interface (exposed methods)
- output interface (emitted events)
- internal algorithm or simply used librairies (and dependencies)
- links on the documentation of such librairies
- link to the binary code other .Net (dll of the bean<name> and other requested librairies)
- link to the VS solution with C# source code to compile the bean
Bean Core
- Purpose:
This bean is in charge of the fuzzification of the input values and apply logic rules on the results. First it must be initialized with linguistic variables. - Input interface:
- InitializeSystem(List<LinguisticVariable> lingVars, List<string> varsToEval, string rulesFilePath)
This method needs AForge.Fuzzy objects (LinguisticVariable) and some other informations to initialize the machine for the given scenario. - Evaluate(Dictionary<string, float> varsToSet)
The method called when a fuzzy evaluation is needed on the system.
- Output interface:
- FireRulesAForgeResultEvent(List<FuzzyOutput> fuzzyOutputs)
This event carry the results from the evaluation in the form of AForge.Fuzzy objects. This is useful if another Bean using AForge.Fuzzy objects grab this event right after the evaluation (an AForge defuzzifier for example). - FireRulesJSONResultEvent(string json)
This event carry the results from the evaluation in the form of a JSON string. Useful for compatibilities reasons with others Beans/Services.
- Internal algorithm:
Most of the heavy lifting is left to the already functional Fuzzy library from the AForge.NET framework. - Libraries used:
- AForge.NET http://www.aforgenet.com/framework/
Fuzzy library only. - NewtonSoft http://james.newtonking.com/json
For JSON.
Bean Configurator
- Purpose:
This bean is in charge of the initialization of the Core Bean. It reads through one configuration file given by the user. - Input interface:
- ReadConfig()
This method reads the configuration file and create fuzzy objects (linguistic variables, fuzzy sets, …).
- Output interface:
- FireConfigCompletedEvent(List<LinguisticVariable> lingVars, List<string> varsToEval, string rulesFilePath)
Event carrying the fuzzy objects and the informations needed by the machine for its initialization.
- Internal algorithm:
The ReadConfig() method reads line by line the configuration file and constructs objects needed by the machine. - Libraries used:
- AForge.NET http://www.aforgenet.com/framework/
Fuzzy library only.
Bean CentroidDefuzifier
- Purpose:
This bean is in charge of the defuzzification of the Core Bean output. The result is a list of numerical values calculated with the centroid method. - Input interface:
- Defuzzy(List<FuzzyOutput> fuzzyOutputs)
Defuzzify a list of outputs from the Core Bean.
- Output interface:
- FireCentroidDefuzzyCompletedEvent(Dictionary<string, float> d)
Return the result in the form of a dictionary containing the name of the linguistic variable associated with the numeric value.
- FireJSONCentroidDefuzzyCompletedEvent(string json)
Return the previous result in the form of a JSON. - Internal algorithm:
Each FuzzyOutput is processed by a centroid defuzzifier (an AForge object). - Libraries used:
- AForge.NET http://www.aforgenet.com/framework/
Fuzzy library only. - NewtonSoft http://james.newtonking.com/json
For JSON.
Bean MaxDefuzifier
- Purpose:
This bean is in charge of the defuzzification of the Core Bean output. The result is a list of numerical values calculated with the max method. - Input interface:
- Defuzzy(List<FuzzyOutput> fuzzyOutputs)
Defuzzify a list of outputs from the Core Bean.
- Output interface:
- FireMaxDefuzzyCompletedEvent(Dictionary<string, string> d)
Return the result in the form of a dictionary containing the name of the linguistic variable associated with the name of the fuzzy set with the maximum strength. - FireJSONMaxDefuzzyCompletedEvent(string json)
Return the previous result in the form of a JSON.
- Internal algorithm:
In each FuzzyOutput is extracted the name of the fuzzy set with the highest strength. And the list is returned. - Libraries used:
- AForge.NET http://www.aforgenet.com/framework/
Fuzzy library only. - NewtonSoft http://james.newtonking.com/json
For JSON.
List of various beans assemblies
Assembly <name>
- purpose of the assembly
- screen shot of the assembly
- link on the corresponding wcc file
Configuration Files
Syntax of the configuration files
- Fuzzy sets (one declaration by line)
- declaration of linguistic variables
variable;[variable name];[start of the interval]|[end of the interval
ex: variable;Food;0|10
- declarations of trapezoidal fuzzy sets
trapezoid;[variable name];[fuzzy set name];[parameters]|[of]|[trapezoid]
ex: trapezoid;Food;Bad;1|7|right
- declarations of linear variables
linear;[variable name];[fuzzy set name];[point1.X:point1.Y]|[point2.X:point2.Y]|...
ex: linear;Food;Bad;1:0,5|7:0,8|8:1
- declarations of the variables to be evaluated by the machine
evaluate;[variable name]
ex: evaluate;Tip
- declaration of the path of the rule file
rules;[path of the file]
ex: rules;rules.txt
- Fuzzy rules (one rule by line)
IF [variable] IS (NOT)[fuzzy set] (AND|OR [variable] IS (NOT)[fuzzy set])* THEN [variable] IS [fuzzy set]
Example of configuration
- config.txt
// variables linguistiques variable;Nourriture;0,10 variable;Service;0,10 variable;Pourboire;0,30 // ensembles flous trapezes trapezoid;Nourriture;Execrable;1,7,right trapezoid;Nourriture;Delicieux;7,9,left trapezoid;Service;Excellent;5,10,left trapezoid;Service;Bon;0,5,10 trapezoid;Service;Mauvais;0,5,right trapezoid;Pourboire;Bas;0,5,10 trapezoid;Pourboire;Moyen;10,15,20 trapezoid;Pourboire;Eleve;20,25,30 // variables à evaluer evaluate;Pourboire // fichier de regles rules;rules.txt
- rules.txt
IF QualiteService IS Mauvais OR Nourriture IS Execrable THEN Pourboire IS Faible IF QualiteService IS Bon THEN Pourboire IS Moyen IF QualiteService IS Excellent OR Nourriture IS Delicieux THEN Pourboire IS Eleve
- purpose of the assembly
- screen shot of the assembly
- link on the corresponding wcc file
Documentation and Tutorial
On the Outlook SDK
- Explanations :
- References :
On Fuzzy AForge .Net Librairies
- Documentation: http://www.aforgenet.com/framework/documentation.html
Various scenarios to illustrate the project
- With Extracteur 1 : (visualisation des données extraites sous Excel)
- With Extracteur 2 : (visualisation des données extraites sous Excel)
- With Extracteur 3 : (visualisation des données extraites sous Excel)
- With Synchonisation : (visualisation des données de sorties sous Excel)
- With Fuzzy Reasonning : (visualisation des données de sorties avant defuzzification sous Excel)
- With Fuzzy Reasonning : (visualisation des données de sorties après defussification sous Excel)
Prospects :
projet/projetsi4_0114_fuzzy_contexter.1393268292.txt.gz · Dernière modification : 2014/02/24 18:58 de bvella