Библиотеки: FuzzyNet - библиотека для работы с нечеткой логикой

 

FuzzyNet - библиотека для работы с нечеткой логикой:

FuzzyNet - одна из самых популярных математических библиотек для создания нечетких моделей

Fuzzy Logic Library Microsoft.Net (FuzzyNet) - это простая в использовании библиотека нечеткой логики, в которой реализованы системы нечеткого логического вывода Мамдани и Сугено.

FuzzyNet включает в себя:

  • 5 функций принадлежностей.
  • Гибкую форму написания правил для нечетких систем.
  • Систему нечеткого логического вывода Мамдани.
  • Систему нечеткого логического вывода Сугено.
  • 1 метод дефаззификации для систем типа Мамдани.
  • Неограниченное количество входных и выходных переменных.

При переводе библиотеки на MQL4 дополнительно в библиотеку было добавлено:

  • 8 новых функций принадлежности.
  • 4 новых метода дефаззификации для систем типа Мамдани.

Автор: MetaQuotes Software Corp.

 

сейчас на МТ4 в MetaEditor(1061), данная библиотека для МТ4 не работает (в МТ5 все нормально) - ошибки при компиляции.

основные ошибки это передача ссылок и указателя одновременно &* (что допускается в МТ5, но убрали или не сделали в редакторе для МТ4),

и повторные инициализации переменных в своей зоне видимости. 

 
Ihar Dubadzelau:

сейчас на МТ4 в MetaEditor(1061), данная библиотека для МТ4 не работает (в МТ5 все нормально) - ошибки при компиляции.

основные ошибки это передача ссылок и указателя одновременно &* (что допускается в МТ5, но убрали или не сделали в редакторе для МТ4),

и повторные инициализации переменных в своей зоне видимости. 

Видимо, раньше был какой-то косяк в языке (MQL4/5), что делал код работоспособным.

Ошибочно использовать такие конструкции

class A {};

class B : public A {};

void Func( A*& ) {}

void OnStart()
{
  B* Ptr;
  
  Func(Ptr); // cannot convert type 'B *' to reference of type 'A *'
}


Сделайте так в библиотеке

template <typename T>
void Func( T*& ) {}

Либо так
class A {};

class B : public A {};

void Func( A*& ) {}

void OnStart()
{
  B* Ptr = new B;
  
  A* TmpPtr = (A*)Ptr;
  
  Func(TmpPtr);
  
//  Ptr =(B*)TmpPtr;
  Ptr = dynamic_cast<B*>(TmpPtr);
  
  delete Ptr;
}
 

Вариантов исправления много, есть и другие.

Но в самом коде ошибок очень много, код громоздкий, надо время, в том числе и на проверку.

Было бы логично если бы сам автор сделал исправления, или убрал код чтобы не скачивали с ошибками,

а тем кому действительно понадобится, может и так самостоятельно переделать из библиотеки mt5.

 

FuzzyNet стала частью стандартной библиотеки в MQL5 и именно там развивается.

Посмотрите в /include/math/fuzzynet у MetaTrader 5.

 
Renat Fatkhullin:

FuzzyNet стала частью стандартной библиотеки в MQL5 и именно там развивается.

Посмотрите в /include/math/fuzzynet у MetaTrader 5.


Я знаю, и жаль что она так же компилируется под МТ4 с теми же ошибками (ссылки+указатели и повторная инициализация переменных)

для себя я именно из МТ5 и начал уже приводить в рабочий вид

 

Есть решение проще - переходите на MT5 и не будет никаких мучений.

И скорость той же библиотеки в 10-20 раз будет быстрее, чем в MT4.

Причина обращения: