MetaTrader 5 herunterladen

CZ_ShapedMembershipFunction

Klasse für die Implementierung einer z-förmigen Zugehörigkeitsfunktion mit den Parametern А und B.  

Beschreibung

Die Funktion setzt eine z-förmige zweiparametrische Zugehörigkeitsfunktion.  Das ist eine fallende Zugehörigkeitsfunktion, welche Werte von 1 bis 0 annimmt. Die Parameter der Funktion bestimmen das Intervall, innerhalb dessen die Funktion von 0 bis 1 nichtlinear fällt.

Mithilfe der Funktion können Fuzzy-Mengen vom Typ "sehr niedrig" dargestellt werden. D.h. sie setzt fallende Zugehörigkeitsfunktionen mit Sättigung.

fuzzy_z_function

Ein Beispielcode für das Zeichnen dieser Grafik ist unten angeführt.

Deklaration

   class CZ_ShapedMembershipFuncion : public IMembershipFunction

Überschrift

   #include <Math\Fuzzy\membershipfunction.mqh>

Vererbungshierarchie

  CObject

      IMembershipFunction

          CZ_ShapedMembershipFunction

Methoden der Klasse

Methode der Klasse  

Beschreibung

A

Liefert und setzt den Parameter des Anfangs des Intervalls, in welchem die Funktion fällt.

B

Liefert und setzt den Parameter des Endes des Intervalls, in welchem die Funktion fällt.

GetValue

Berechnet den Wert der Funktion nach dem angegebenen Argument.

Methoden geerbt von der Klasse CObject

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

Beispiel

//+------------------------------------------------------------------+
//|                                   Z_ShapedMembershipFunction.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- Create membership functions
CZ_ShapedMembershipFunction func1(2,1);
CZ_ShapedMembershipFunction func2(2,5);
CZ_ShapedMembershipFunction func3(2,9);
//--- Create wrappers for membership functions
double Z_ShapedMembershipFunction1(double x) { return(func1.GetValue(x)); }
double Z_ShapedMembershipFunction2(double x) { return(func2.GetValue(x)); }
double Z_ShapedMembershipFunction3(double x) { return(func3.GetValue(x)); }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- create graphic
   CGraphic graphic;
   if(!graphic.Create(0,"Z_ShapedMembershipFunction",0,30,30,780,380))
     {
      graphic.Attach(0,"Z_ShapedMembershipFunction");
     }
   graphic.HistoryNameWidth(70);
   graphic.BackgroundMain("Z_ShapedMembershipFunction");
   graphic.BackgroundMainSize(16);
//--- create curve
   graphic.CurveAdd(Z_ShapedMembershipFunction1,0.0,10.0,0.1,CURVE_LINES,"[2, 1]");
   graphic.CurveAdd(Z_ShapedMembershipFunction2,0.0,10.0,0.1,CURVE_LINES,"[2, 5]");
   graphic.CurveAdd(Z_ShapedMembershipFunction3,0.0,10.0,0.1,CURVE_LINES,"[2, 9]");
//--- sets the X-axis properties
   graphic.XAxis().AutoScale(false);
   graphic.XAxis().Min(0.0);
   graphic.XAxis().Max(10.0);
   graphic.XAxis().DefaultStep(1.0);
//--- sets the Y-axis properties
   graphic.YAxis().AutoScale(false);
   graphic.YAxis().Min(0.0);
   graphic.YAxis().Max(1.1);
   graphic.YAxis().DefaultStep(0.2);
//--- plot
   graphic.CurvePlotAll();
   graphic.Update();
  }