Kütüphaneler: Bulanık mantık uygulayan kütüphane - sayfa 2

 

Birisi kütüphaneyi MT4'te kullandıysa, lütfen bana FCL dosyasının hangi uzantıya sahip olması gerektiğini ve nereye koyacağımı söyleyin.

Bir gösterge yazdım. Sıralama makaledeki gibidir.

1. bir model oluşturun (hata yok)

IDm=ffll_new_model(); // create model returns model index
if(IDm<0){
string txt=ffll_get_msg_textA(IDm); // get error message.
Alert("No model created "+txt);return(0);}

2.Dosyayı program ile yükleyin (hata verir). Dosya dir içinde yer almaktadır. \{Uzman\Dosya . .fcl .txt uzantısı ile denedim.

h=ffll_load_fcl_file(IDm, "Histo.txt"); // bulanık modelleme dili programını yükle
if(h<0){
txt=ffll_get_msg_textA(IDm); // hata mesajı al.
Alert("Program dosyası yüklenmedi "+txt);return(0);}

3.Bir kız çocuğu oluşturun.

ID1=ffll_new_child(IDm); // verilen model için bir alt model oluşturun model indeksini döndürür
if(ID1<0){
txt=ffll_get_msg_textA(IDm); // bir hata mesajı alın.
Alert("No daughter created "+txt);return(0);}

4.Giriş verilerini parça parça besleyin. Yani.

IN=ffll_set_value(IDm,ID1,0,X); // ilk giriş değişkeninin değerini ayarla
IN=ffll_set_value(IDm,ID1,1,Y); // ikinci giriş değişkeninin değerini ayarla

vs.

5. Çıktıyı alın.

Res=ffll_get_output_value(IDm,ID1); // çıktı değişkeni için değeri al

Deneyiminizi paylaşın.

 

MT5'te de benzer sorun. Dosyayı açmıyor. Örnek kod:

#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(){}

Aşağıdaki çıktıyı alıyorum:

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

Neden bir hata oluşturuyor? Anladığım kadarıyla sorun, ffll_load_fcl_file fonksiyonuna bir parametre aktar ılmasında. (muhtemelen kodlamalar veya tür dönüştürme ile ilgili bir şey).

Bu kütüphane ile çalışmış olanlardan büyük bir ricam var, lütfen cevap verin.

 

.fcl dosyasının yapısıyla ilgili olabilir/ Doğru olup olmadığını kontrol edecek bir program bulamadım. Metindeki bağlantı çalışmıyor. Belki bu işi daha önce yapmış olan biri bana geri yazabilir.

Kütüphane prensip olarak çok ilginç (ve eğer çalışıyorsa). Yazar ne yazık ki gözden kayboldu ve ortadan kayboldu. Sorulara cevap vermek istemiyor. Anlaşılabilir bir gizem (ya da istihdam) değil.

Kime: SergeyVP/ Kız model oluşturulmadı ve değişkenler girilmedi. Anladığım kadarıyla yükleme olasılığını kontrol ettiniz?

Kontrol için programları değiştirelim mi?

 

Kütüphaneyle uğraşmak, kodda üç temel bulanık mantık işlevini kendiniz yazmaktan daha fazla zaman alacaktır:

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);

}
 

Sadece bu da değil. Aksesuar fonksiyonları, bulanıklaştırma vb. Daha kolay değil.

 
.fcl dosyasının yapısıyla ilgili olabilir

Pek sayılmaz. Fonksiyon -1 döndürüyor, bu da dosyayı bulamadığı anlamına geliyor. Sorunun kütüphanenin kendisinde olduğunu düşündüm, C++'da dll ile kontrol ettim - her şey çalışıyor. Örnek kodu ve modeli sitedeki örnekten aldım(örnek indirmelerde). Fcl dosyasının yapısına gelince eğer mantıkta bir hata varsa model yüklenmeyecek ve kritik hata gibi bir şey olacak. En azından C++'da, açık bir hata ile bir model belirlersem, program çökecektir:

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

TO: SergeyVP/ Hiçbir alt model oluşturulmadı ve hiçbir değişken girilmedi. Anladığım kadarıyla yükleme olasılığını test ediyordunuz?

Evet, şimdilik sadece yükleme. Model yüklenmemişse alt model oluşturmanın bir anlamı yok.

Kontrol etmek için programları değiştirelim mi?

Fcl modelini herhangi bir şekilde doğruluk açısından kontrol etmiyorum. MATLAB'de model oluşturuyorum, fis dosyasını alıyorum. Sonra fuzzylite programını kullanarak fis'i fcl'ye dönüştürüyorum.

Kütüphane ile uğraşmak, bulanık mantığın üç temel fonksiyonunu kodda kendim yazmaktan daha fazla zaman alacaktır:

Ne yazık ki böyle olacak gibi görünüyor. Kendim yazmak zorunda kalacağım.
 
SergeyVP:

Tam olarak değil. Fonksiyon -1 döndürüyor, bu da dosyayı bulamadığı anlamına geliyor. Sorunun kütüphanenin kendisinde olduğunu düşündüm, C++'da dll ile kontrol ettim - her şey çalışıyor. Örnek kodu ve modeli sitedeki örnekten aldım(örnek indirmelerde). Fcl dosyasının yapısına gelince eğer mantıkta bir hata varsa model yüklenmeyecek ve kritik hata gibi bir şey olacak. En azından C++'da, açık bir hata ile bir model belirlersem, program çökecek, yayınlanacak:

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

Evet, şimdilik sadece yükleniyor. Model yüklenmemişse bir çocuk oluşturmanın bir anlamı yoktur.

Fcl modelini herhangi bir şekilde doğruluk açısından kontrol etmiyorum. MATLAB'de bir model yapıyorum, fis dosyasını alıyorum. Sonra fuzzylite programını kullanarak fis'i fcl'ye dönüştürüyorum.
Maalesef böyle olacak gibi görünüyor. Kendim yazmak zorunda kalacağım.

Anladım. Teşekkür ederim.

"Örnek kod ve model sitedeki örnekten alınmıştır(örnek indirmelerde)".

Anlamıyorum, hangi siteden? Lütfen beni yönlendirin.

Belki de MATLAB'ı MT4/MT5 ile bağlamak daha kolaydır? Daha fazla çözüm zaten sunuldu.

Bu kütüphane çalışmazsa muhtemelen bu yönde hareket edeceğim.

 

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

Kütüphanenin resmi sitesinden - ffll.sourceforge.net.

Daha doğrusu: http://ffll.sourceforge.net/downloads.htm -> FFLL kullanan örnek bir uygulama indirin.

C++ kodu ve basit bir fcl modeli var.

Peki, belki MATLAB'ı MT4/MT5 ile bağlamak daha kolaydır? Özellikle çözümler zaten önerildi.

Nerede okuyabilirim?
 
SergeyVP:

Kütüphanenin resmi sitesinden - ffll.sourceforge.net.

Daha doğrusu: http://ffll.sourceforge.net/downloads.htm -> FFLL kullanan örnek bir uygulama indirin.

C++ kodu ve basit bir fcl modeli var.

Bunu nerede okuyabilirim?
Buyurun. https://www.mql5.com/tr/articles/44
 

Bu konuyu duyuran ve MT4'te her şeyin harika bir şekilde çalıştığını yazan "nakliye dükkanının başını" duymak istiyorum.

Sorun .fcl dosyasının yüklenmemiş olmasıdır.

Bu arada: kütüphane standardı tam olarak desteklemiyor. İstisnalar, sınırlamalar vb. var. Ve çıktı yalnızca tek elemanlı kümelerdir.