CTrapezoidMembershipFunction

X1, X2, X3 ve X4 parametrelerine sahip trapezoit üyelik fonksiyonlarıyla çalışmak için tasarlanmıştır.  

Açıklama

Fonksiyon, parçalı doğrusal yakınsama ile oluşturulur. Bu, üçgen fonksiyonlar için bir genelleştirmedir ve bulanık küme çekirdeğini bir aralık olarak atayabilmenizi sağlar. Bu tarz üyelik fonksiyonları iyimser/kötümser değerlendirmelerin uygun şekilde yorumlanabilmesini sağlar.

Fonksiyon, değişkenlerin asimetrik üyelik fonksiyonlarını ayarlamak için kullanılır (belli bir aralık içinde tanımlanan en kritik değerleri ile).

fuzzy_trapezoid_function

Çizelge çizmek için oluşturulmuş bir örnek kod aşağıda verilmiştir.

Bildirim

   class CTrapezoidMembershipFuncion : public IMembershipFunction

Başlık

   #include <Math\Fuzzy\membershipfunction.mqh>

Kalıtım hiyerarşisi

  CObject

      IMembershipFunction

          CTrapezoidMembershipFunction

Sınıf yöntemleri

Sınıf yöntemi  

Açıklama

X1

İlk noktanın X eksenindeki değerini alır/ayarlar.

X2

İkinci noktanın X eksenindeki değerini alır/ayarlar.

X3

Üçüncü noktanın X eksenindeki değerini alır/ayarlar.

X4

Dördüncü noktanın X eksenindeki değerini alır/ayarlar.

GetValue

Üyelik fonksiyonunun değerini belli bir argümana göre hesaplar.

Sınıftan türetilen yöntemler CObject

Prev, Prev, Next, Next, Save, Load, Type, Compare

Örnek

//+------------------------------------------------------------------+
//|                                  TrapezoidMembershipFunction.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- Üyelik fonksiyonlarını oluştur
CTrapezoidMembershipFunction func1(0,2,5,5);
CTrapezoidMembershipFunction func2(0,3,7,10);
CTrapezoidMembershipFunction func3(4,8,8,10);
//--- üyelik fonksiyonları için örtüler oluştur
double TrapezoidMembershipFunction1(double x) { return(func1.GetValue(x)); }
double TrapezoidMembershipFunction2(double x) { return(func2.GetValue(x)); }
double TrapezoidMembershipFunction3(double x) { return(func3.GetValue(x)); }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- grafiği oluştur
   CGraphic graphic;
   if(!graphic.Create(0,"TrapezoidMembershipFunction",0,30,30,780,380))
     {
      graphic.Attach(0,"TrapezoidMembershipFunction");
     }
   graphic.HistoryNameWidth(70);
   graphic.BackgroundMain("TrapezoidMembershipFunction");
   graphic.BackgroundMainSize(16);
//--- eğri oluştur
   graphic.CurveAdd(TrapezoidMembershipFunction1,0.0,10.0,0.1,CURVE_LINES,"[0, 2, 5, 5]");
   graphic.CurveAdd(TrapezoidMembershipFunction2,0.0,10.0,0.1,CURVE_LINES,"[0, 5, 7, 10]");
   graphic.CurveAdd(TrapezoidMembershipFunction3,0.0,10.0,0.1,CURVE_LINES,"[4, 8, 8, 10]");
//--- X-ekseninin özelliklerini ayarla
   graphic.XAxis().AutoScale(false);
   graphic.XAxis().Min(0.0);
   graphic.XAxis().Max(10.0);
   graphic.XAxis().DefaultStep(1.0);
//--- Y-ekseninin özelliklerini ayarla
   graphic.YAxis().AutoScale(false);
   graphic.YAxis().Min(0.0);
   graphic.YAxis().Max(1.1);
   graphic.YAxis().DefaultStep(0.2);
//--- çiz
   graphic.CurvePlotAll();
   graphic.Update();
  }