home › Forums › # Technical Support › Unable to run the fuzzy logic controller linux
- This topic has 9 replies, 2 voices, and was last updated 9 years, 2 months ago by
Unknown.
-
AuthorPosts
-
July 9, 2014 at 17:44 #1166
Unknown
MemberHey,
I am trying to make a fuzzy logic controller in Linux using fuzzy-lite , but i am having some difficulties.
I have generated all binaries from source code that is .so and .a file located in bin folder. Now when i run a example by using following command
g++ Test.cpp -Ifuzzylite -Lfuzzylite/bin -lfuzzyliteIt generate a “.o ” file which is output file
finally when i try to run that .o file using command
./a.outit gives me error ” ./a.out: error while loading shared libraries: libfuzzylite.so: cannot open shared object file: No such file or directory ”
where a.out is my out file created as explained above
Can you please help me fixing this errorThanks
RegardsJuly 9, 2014 at 22:04 #1169Juan Rada-Vilela (admin)
KeymasterHi,
can you please try copying the libfuzzylite.so to the same folder your output file is? An alternative would be to compile using
-lfuzzylite-static
and forget about loading shared libraries.Cheers.
July 10, 2014 at 06:33 #1171Unknown
MemberIts working ….NO error now..
ThanksNow when i am running the a.out file its not showing any output. as shown below
tayyab@ubuntu:~/Desktop/fuzzylite-4.0/fuzzylite$ ./a.out
tayyab@ubuntu:~/Desktop/fuzzylite-4.0/fuzzylite$can you please explain this response, is there any file where output has been saved ?
My main code which i am running is
#include <fl/Headers.h>
int main(int argc, char** argv){
fl::Engine* engine = new fl::Engine;
engine->setName(“qtfuzzylite”);fl::InputVariable* inputVariable = new fl::InputVariable;
inputVariable->setEnabled(true);
inputVariable->setName(“AllInputTerms”);
inputVariable->setRange(0.000, 6.500);
inputVariable->addTerm(new fl::Sigmoid(“A”, 0.500, -20.000));
inputVariable->addTerm(new fl::ZShape(“B”, 0.000, 1.000));
inputVariable->addTerm(new fl::Ramp(“C”, 1.000, 0.000));
inputVariable->addTerm(new fl::Triangle(“D”, 0.500, 1.000, 1.500));
inputVariable->addTerm(new fl::Trapezoid(“E”, 1.000, 1.250, 1.750, 2.000));
inputVariable->addTerm(new fl::Rectangle(“F”, 1.750, 2.250));
inputVariable->addTerm(fl::Discrete::create(“G”, 10, 2.000, 0.000, 2.250, 1.000, 2.500, 0.500, 2.750, 1.000, 3.000, 0.000));
inputVariable->addTerm(new fl::Gaussian(“H”, 3.000, 0.200));
inputVariable->addTerm(new fl::GaussianProduct(“I”, 3.500, 0.100, 3.300, 0.300));
inputVariable->addTerm(new fl::Bell(“J”, 4.000, 0.250, 3.000));
inputVariable->addTerm(new fl::PiShape(“K”, 4.000, 4.500, 4.500, 5.000));
inputVariable->addTerm(new fl::SigmoidDifference(“L”, 4.750, 10.000, 30.000, 5.250));
inputVariable->addTerm(new fl::SigmoidProduct(“M”, 5.250, 20.000, -10.000, 5.750));
inputVariable->addTerm(new fl::Ramp(“N”, 5.500, 6.500));
inputVariable->addTerm(new fl::SShape(“O”, 5.500, 6.500));
inputVariable->addTerm(new fl::Sigmoid(“P”, 6.000, 20.000));
engine->addInputVariable(inputVariable);fl::OutputVariable* outputVariable = new fl::OutputVariable;
outputVariable->setEnabled(true);
outputVariable->setName(“AllOutputTerms”);
outputVariable->setRange(0.000, 6.500);
outputVariable->fuzzyOutput()->setAccumulation(new fl::Maximum);
outputVariable->setDefuzzifier(new fl::Centroid(200));
outputVariable->setDefaultValue(fl::nan);
outputVariable->setLockValidOutput(false);
outputVariable->setLockOutputRange(false);
outputVariable->addTerm(new fl::Sigmoid(“A”, 0.500, -20.000));
outputVariable->addTerm(new fl::ZShape(“B”, 0.000, 1.000));
outputVariable->addTerm(new fl::Ramp(“C”, 1.000, 0.000));
outputVariable->addTerm(new fl::Triangle(“D”, 0.500, 1.000, 1.500));
outputVariable->addTerm(new fl::Trapezoid(“E”, 1.000, 1.250, 1.750, 2.000));
outputVariable->addTerm(new fl::Rectangle(“F”, 1.750, 2.250));
outputVariable->addTerm(fl::Discrete::create(“G”, 10, 2.000, 0.000, 2.250, 1.000, 2.500, 0.500, 2.750, 1.000, 3.000, 0.000));
outputVariable->addTerm(new fl::Gaussian(“H”, 3.000, 0.200));
outputVariable->addTerm(new fl::GaussianProduct(“I”, 3.500, 0.100, 3.300, 0.300));
outputVariable->addTerm(new fl::Bell(“J”, 4.000, 0.250, 3.000));
outputVariable->addTerm(new fl::PiShape(“K”, 4.000, 4.500, 4.500, 5.000));
outputVariable->addTerm(new fl::SigmoidDifference(“L”, 4.750, 10.000, 30.000, 5.250));
outputVariable->addTerm(new fl::SigmoidProduct(“M”, 5.250, 20.000, -10.000, 5.750));
outputVariable->addTerm(new fl::Ramp(“N”, 5.500, 6.500));
outputVariable->addTerm(new fl::SShape(“O”, 5.500, 6.500));
outputVariable->addTerm(new fl::Sigmoid(“P”, 6.000, 20.000));
engine->addOutputVariable(outputVariable);fl::RuleBlock* ruleBlock = new fl::RuleBlock;
ruleBlock->setEnabled(true);
ruleBlock->setName(“”);
ruleBlock->setConjunction(new fl::Minimum);
ruleBlock->setDisjunction(new fl::Maximum);
ruleBlock->setActivation(new fl::Minimum);
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is A then AllOutputTerms is P”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is B then AllOutputTerms is O”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is C then AllOutputTerms is N”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is D then AllOutputTerms is M”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is E then AllOutputTerms is L”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is F then AllOutputTerms is K”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is G then AllOutputTerms is J”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is H then AllOutputTerms is I”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is I then AllOutputTerms is H”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is J then AllOutputTerms is G”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is K then AllOutputTerms is F”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is L then AllOutputTerms is E”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is M then AllOutputTerms is D”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is N then AllOutputTerms is C”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is O then AllOutputTerms is B”, engine));
ruleBlock->addRule(fl::Rule::parse(“if AllInputTerms is P then AllOutputTerms is A”, engine));
engine->addRuleBlock(ruleBlock);}
Apart from this .fld is also present in the folder
-
This reply was modified 9 years, 2 months ago by
Unknown.
July 10, 2014 at 12:46 #1174Juan Rada-Vilela (admin)
KeymasterYour code just creates an engine. What do you want to use the engine for? What output were you expecting?
July 10, 2014 at 17:36 #1180Unknown
MemberHello
I want to use this fuzzy engine to give me optimized output depending on the input. How can i specify input values to this engine?July 10, 2014 at 17:49 #1181Juan Rada-Vilela (admin)
Keymasterengine->setInputValue("AllInputTerms", 5.0); engine->process(); engine->getOutputValue("AllOutputTerms);
July 10, 2014 at 18:10 #1182Unknown
MemberI have the include this in the end of my code? and how i am going to see the output ?
July 10, 2014 at 18:42 #1183Juan Rada-Vilela (admin)
KeymasterYes, at the end.
FL_LOG(engine->getOutputValue("AllOutputTerms));
July 10, 2014 at 18:49 #1184Unknown
MemberI have include that part in my code now i thinks its calculating output variable. how i am going to see the output?
Just cout the output variable?July 10, 2014 at 19:05 #1185Unknown
MemberThank u very much its done…
Your technical support is really good. -
This reply was modified 9 years, 2 months ago by
-
AuthorPosts
- You must be logged in to reply to this topic.