MetaTrader 5 herunterladen

CTrapezoidMembershipFunction

Klasse für die Implementierung einer trapezförmigen Zugehörigkeitsfunktion mit den Parametern X1, X2, X3 und X4.  

Beschreibung

Die Funktion wird unter Verwendung der stückweise linearen Approximation gebildet. Das ist eine Verallgemeinerung der Dreiecksfunktion, sie erlaubt es, den Kern einer Fuzzy-Menge als Intervall zu setzen. Eine solche Zugehörigkeitsfunktion ermöglicht die Interpretation einer optimistischen/pessimistischen Schätzung.

Die Funktion wird für das Setzen asymmetrischer Zugehörigkeitsfunktionen der Variablen verwendet, deren besonders mögliche Werte innerhalb eines bestimmten Bereichs definiert werden.

fuzzy_trapezoid_function

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

Deklaration

   class CTrapezoidMembershipFuncion : public IMembershipFunction

Überschrift

   #include <Math\Fuzzy\membershipfunction.mqh>

Vererbungshierarchie

  CObject

      IMembershipFunction

          CTrapezoidMembershipFunction

Methoden der Klasse

Methode der Klasse  

Beschreibung

X1

Liefert und setzt den Wert des ersten Punktes auf der X-Achse.

X2

Liefert und setzt den Wert des zweiten Punktes auf der X-Achse.

X3

Liefert und setzt den Wert des dritten Punktes auf der X-Achse.

X4

Liefert und setzt den Wert des vierten Puntkes auf der X-Achse.

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

//+------------------------------------------------------------------+
//|                                  TrapezoidMembershipFunction.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- Create membership functions
CTrapezoidMembershipFunction func1(0,2,5,5);
CTrapezoidMembershipFunction func2(0,3,7,10);
CTrapezoidMembershipFunction func3(4,8,8,10);
//--- Create wrappers for membership functions
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()
  {
//--- create graphic
   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);
//--- create curve
   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]");
//--- 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();
  }