(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

FUZZY

Sun Sep 2 16:39:37 UTC 2018

fuzzy 1.3.1 released!

Used 0 instead of EOF to scan the quotes.


Fri Aug 31 20:08:39 UTC 2018

fuzzy-1.3.tar.gz released!

Configuring and building:

./configure --prefix=/usr
make
sudo make install

Mon Nov 14 00:26:23 UTC 2016
Fuzzy 1.3 released!
Fixed scope for user-defined type in the function (body) which be member of an array element
+--------------------+

Tue Nov 8 10:06:03 UTC 2016
Fuzzy 1.2 released!
Fixed and extended overloading functions
+--------------------+

Sat Nov 5 15:25:38 UTC 2016
Fuzzy 1.1 released!
Fixed statement return in loop and switch statements
+--------------------+

Thu Nov 3 15:37:49 UTC 2016
FUZZY programming language 

Fuzzy 1.0 released!
SYNOPSIS
fuzzy PROGRAM-FILE
fuzzy -h
DESCRIPTION
Fuzzy is an implementation of the FUZZY programming language. Fuzzy is designed to process linguistic variables and fuzzy sets with vague concepts such as HIGH, LOW, MEDIUM, VERY HIGH, NOT VERY LOW. Fuzzy reads the FUZZY program source from the file PROGRAM-FILE.
OPTIONS
-h Display the help and exit
TUTORIALS
Hello World program
FUZZY programs have no main function. The source codes of a simplest program may like this
print "Hello World";
Basic types
Basic types are int, Number, String, bool and fuzzy. Most of them can be assigned to another, for instance
int i = 100;
i += 50;
String text = i;
speed.high = i + 50; // speed.high is a fuzzy set
Control Statements
Control Statements while, for, if, else, break, continue, return are similar to C/C++. Statement switch can be used for String type
switch(text) // text is a String variable
{
case "abc":
// do something
break;
case "def":
// do something
break;
}
Override functions
Similar to C++, Fuzzy can be used to override functions and operators. operator= can be used with return type is void. Member variables can be initialized inside a struct
struct OBJECT
{
int m_i = 50;
String m_string = "abc";
Number m_array[10]; //an array of Number
void operator = (OBJECT t)
{
m_i = t.m_i;
m_string = t.m_string;
for(int i = 0; i < 10; i++)
m_array[i] = t.m_array[i];
}
OBJECT operator - ()
{
OBJECT obj;
obj.m_i = -m_i;
return obj;
}
};
fuzzy set and fuzzy term
Discrete fuzzy sets must be declared inside a discrete fuzzy term. The following example shows a fuzzy term with three fuzzy sets. Each one has five elements, each element is a pair grade/value
term TEMPERATURE(5)
{
fuzzy discrete low(1/100, 0.5/125, 0.25/150, 0.1/175, 0/200);
fuzzy discrete medium(0.25/100, 0.5/125, 1/150, 0.5/175, 0.25/200);
fuzzy discrete high(0/100, 0/125, 0.25/150, 0.75/175, 1/200);
};
Put data into a fuzzy term
Keyword put be used to set values and membership values for fuzzy terms
TEMPERATURE temperature;
put temperature := (0/100, 0/125, 0.5/150, 0.25/175, 0/200);
Apply fuzzy rules
Operators AND, OR, NOT, VERY, LITTLE, REALLY can be used recursively
rule temperature.medium AND pressure.medium OR weather.bad OR traffic.bad => speed.low;
rule VERY temperature.high AND pressure.low OR NOT VERY temperature.high AND
pressure.medium AND NOT VERY traffic.bad => speed.high;
rule temperature.low AND pressure.high AND REALLY weather.normal OR traffic.normal => speed.medium;
rule (temperature.medium OR pressure.low) AND weather.good OR pressure.low AND traffic.good => speed.high;
rule REALLY temperature.medium AND LITTLE pressure.high AND VERY VERY weather.good => speed.high;
Print fuzzy sets and fuzzy terms
The following statement prints defuzzification value of a fuzzy term
print speed;
if want to print its fuzzy data, you can use statement prints
prints speed;
Defuzzification
Defuzzification method be used is centroid method
Defuzz(pressure);
Reset fuzzy sets and fuzzy terms
Function ZeroFuzz be used to reset all data of a fuzzy set or fuzzy term to zero
ZeroFuzz(temperature);
Transfer fuzzy data to array
There is a built-in struct named FuzzyPair. To transfer fuzzy data to array, you declare an array of FuzzyPair whose size is sufficient to store data, then use function FuzzyToArray like this
FuzzyPair array[8];
FuzzyToArray(speed, array);
The struct FuzzyPair has two members, they are m_grade and m_value
for(int i = 0; i < 8; i++)
print array[i].m_grade, " ", array[i].m_value;
Continuous fuzzy
This type of fuzzy be applied for fuzzy sets which have a declared domain and a center value. The membership function be used is Gaussian function
term TEMPERATURE(100, 200)
{
fuzzy low = 100;
fuzzy medium = 150;
fuzzy high = 200;
};
Print to file
Token > be used to redirect output to file for print and prints
print speed > "filename.txt";
Token >> be used to redirect for print and prints, append output to the file
prints speed >> "filename.txt";
Execute a shell command
Execute a shell command with keyword system
String command_text = "sudo makeca -f";
system command_text;
Math functions
Built-in functions of math are sin, cos, tan, atan, ln, log10, exp, pow, sqrt, floor, round, abs, min, and max
Include file
Include file is similar to C/C++
#include "filename.h"
Comment
Comment is similar to C/C++, used with token // or pair /* and */

+--------------------+

Thanks for your consideration!
Pham Thanh Tuyen <phamtyn@gmail.com>



  • See also

Ngôn ngữ lập trình FUZZY: chiến lược bảng băm

Ngôn ngữ lập trình FUZZY: giải mờ một ví dụ quen thuộc

Ngôn ngữ lập trình FUZZY: biến String và phép gán dưới khía cạnh ngôn ngữ

Một chương trình Fuzzy đơn giản

Ngôn ngữ lập trình FUZZY (ngôn ngữ mờ) – chương trình dịch Fuzzy 1.0

Advertisements
%d bloggers like this: