ライブラリ: 無償ファジー論理ライブラリ関数 - ページ 2

 

このライブラリをMT4で使用したことがある方がいらっしゃいましたら、FCLファイルの拡張子と保存場所を教えてください。

私はインジケーターを書きました。シーケンスは記事の通りです。

1. モデルの作成(エラーなし)

IDm=ffll_new_model(); // モデルの作成 モデルインデックスを返す
if(IDm<0){
string txt=ffll_get_msg_textA(IDm); // エラーメッセージを取得。
Alert("No model created "+txt);return(0);}.

2.プログラムでファイルを読み込む(エラーになる)ファイルは\というディレクトリにあります。拡張子は.fcl .txtで試した。

h=ffll_load_fcl_file(IDm, "Histo.txt"); // ファジィモデリング言語プログラムを読み込む
if(h<0){
txt=ffll_get_msg_textA(IDm); // エラーメッセージを得る。
Alert("Program file not loaded "+txt);return(0);}.

3.娘を作る。

ID1=ffll_new_child(IDm); // 与えられたモデルの子モデルを作成し、モデルインデックスを返す
if(ID1<0){
txt=ffll_get_msg_textA(IDm); // エラーメッセージを取得する。
Alert("No daughter created "+txt);return(0);}.

4.入力データを少しずつ送り込む。例えば

IN=ffll_set_value(IDm,ID1,0,X); // 1つ目の入力変数の値を設定する
IN=ffll_set_value(IDm,ID1,1,Y); // 2つ目の入力変数の値を設定する

その他

5.出力を取得します。

Res=ffll_get_output_value(IDm,ID1); // 出力変数の値を取得する。

あなたの経験を共有してください。

 

MT5でも同様の問題。ファイルを開きません。コード例:

#include <FuzzyLogic\Flc.mqh>
#property tester_file "model.fcl"

int OnInit()
{   
    string filename = "model.fcl";
    // Считываю строку из файла и убеждаюсь, что его можно открыть.
    int filehandle = FileOpen(filename,FILE_READ|FILE_ANSI);
    if(filehandle < 0)
    {
        Print("Error code ",GetLastError());
        Print(filename);
    }
    else
    {
        Print("Open success");
        Print(FileReadString(filehandle));   
        FileClose(filehandle);
    }
    
    // FFCL
    int model = ffll_new_model();
    if(model < 0)
    {
        Print("Ошибка создания модели!");
    }
    int ret_val = ffll_load_fcl_file(model,filename);
    if(ret_val < 0)
    {
        string txt = ffll_get_msg_textW(model);
        Print("Ошибка: " + txt);
    }
    ffll_close_model(model);
    return(0);
}

void OnDeinit(const int reason){}

void OnTick(){}

以下の出力が得られます:

Ошибка: Error Opening File
FUNCTION_BLOCK
Open success

なぜエラーが発生するのですか?私が理解しているように、問題はffll_load_fcl_file関数にパラメータを渡す ことにあります。(おそらくエンコーディングか型変換の問題でしょう)。

このライブラリに詳しい方、回答お願いします。

 

.fclファイルの構造に関係しているのかもしれませんが、それが正しいかどうかをチェックするプログラムは見つかっていません。本文中のリンクは機能しません。もしかしたら、すでにこのレーキを使ったことのある方がいらっしゃるかもしれません。

このライブラリは原理的には非常に興味深いものである。著者は、残念ながらちらっと見て、消えました。質問に答えたくない。理解できない謎(または雇用)。

TO: SergeyVP/ 娘モデルは作成されなかった 変数は記入されなかった。従って私はあなたが負荷の可能性を点検したことを理解するか。

私達は点検のためのプログラムを交換するか。

 

初歩的な3つのファジーロジック関数を自分でコードに書くよりも、ライブラリを扱う方が時間がかかるだろう:

fussyOr(double a, double b)

   return  (MathMin(a, b));

}

fussyAnd(double a, double b)

   return  (MathMax(a, b));

}

fussyNot(double a)

   return  (1.0 - a);

}
 

まあ、それだけではない。付属関数、デファジー化など。もっと簡単にはできない。

 
.fclファイルの構造に関連している可能性がある。

そうではない。この関数は-1を返しますが、これはファイルが見つからないことを意味します。ライブラリ自体に問題があるのではと思い、C++のdllでチェックしたところ、すべて動作しました。サンプル・コードとモデルは、サイトのサンプル(サンプル・ダウンロード)から引用しました。fclファイルの構造ですが、ロジックにエラーがあると、モデルが読み込まれず、クリティカルエラーの ようなものが出ます。少なくともC++では、明示的なエラーでモデルを指定すると、プログラムがクラッシュしてしまいます:

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid

TO: SergeyVP/ 子モデルが作成されず、変数も入力されませんでした。では、ロードの可能性をテストしていたのですね?

はい。モデルがロードされなければ、子モデルを作成する意味がありません。

プログラムを交換して確認しましょうか。

私はfclモデルが正しいかどうかは一切チェックしていません。MATLABでモデルを作り、fisファイルを取得する。それからfuzzylite プログラムを使ってfisをfclに変換する。

ファジィ論理の3つの初歩的な関数を自分でコードに書くよりも、ライブラリを扱う方が時間がかかるだろう:

残念ながら、そういうことになりそうだ。自分で書くしかない。
 
SergeyVP:

正確ではありません。この関数は-1を返すが、これはファイルが見つからないことを意味する。ライブラリ自体に問題があるのかと思い、C++のdllでチェックしたところ、すべて動作しました。サンプルコードとモデルは、サイトの例(サンプルダウンロードの中)から引用しました。fclファイルの構造ですが、ロジックにエラーがあると、モデルが読み込まれず、クリティカルエラーのようなものが出ます。少なくともC++では、明示的なエラーがあるモデルを指定すると、プログラムがクラッシュしてしまいます:

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid

はい、今はロードしているだけです。モデルがロードされなければ、子を作る意味がない。

私は、fclモデルが正しいかどうかは一切チェックしていません。MATLABでモデルを作り、fisファイルを取得します。それからfuzzylite プログラムを使ってfisをfclに変換する。
残念ながら、こんな感じになりそうだ。自分で書かなければならない。

わかりました。ありがとう。

"サンプルコードとモデルは、サイトのサンプル(サンプルのダウンロード)から引用しました。

ここがよくわからないのですが、どのサイトからですか?教えてください。

MATLABとMT4/MT5をリンクする方が簡単かもしれませんね。もっと多くの解決策がすでに提供されています。

このライブラリがうまくいかなければ、私はおそらくこの方向に進むでしょう。

 

Тут не понял, с какого сайта? Ткните плз.

ライブラリーの公式サイト - ffll.sourceforge.net から。

正確には、http://ffll.sourceforge.net/downloads.htm-> FFLLを使用したサンプルアプリケーションのダウンロード。

C++のコードとシンプルなFCLモデルがあります。

さて、MATLABとMT4/MT5をリンクする方が簡単かもしれませんね。特に解決策はすでに提案されています。

どこで読める?
 
SergeyVP:

ライブラリーの公式サイト - ffll.sourceforge.net から。

より正確には、http://ffll.sourceforge.net/downloads.htm-> FFLLを使用したサンプルアプリケーションのダウンロード。

C++のコードとシンプルなFCLモデルがあります。

どこで読むの?
ここです。https://www.mql5.com/ja/articles/44
 

このトピックを発表し、MT4ですべてが素晴らしく機能したと書いた「運送屋の社長」の意見を聞きたい。

問題は.fclファイルが読み込まれないことです。

ところで:ライブラリは標準を完全にサポートしているわけではない。例外や制限などがあります。また、出力は単一要素セットのみです。