CTrapezoidMembershipFunction

Classe d'implémentation d'une fonction d'appartenance trapézoïdale avec les paramètres X1, X2, X3 et X4.  

Description

La fonction est formée par approximation linéaire par morceaux. C'est une généralisation de la fonction triangulaire vous permettant d'assigner un noyau d'ensembles flous comme intervalle. Une telle fonction d'appartenance la rend possible pour interpréter de manière pratique des évaluations optimistes/pessimistes.

La fonction est utilisée pour définir des fonctions d'appartenance asymétriques des variables avec leurs valeurs les plus critiques définies dans un certain intervalle.

fuzzy_trapezoid_function

Un extrait de code dessinant un graphique est affiché plus bas.

Déclaration

   class CTrapezoidMembershipFuncion : public IMembershipFunction

Titre

   #include <Math\Fuzzy\membershipfunction.mqh>

Hiérarchie d'héritage

  CObject

      IMembershipFunction

          CTrapezoidMembershipFunction

Méthodes de classe

Méthode de classe  

Description

X1

Retourne et définit la valeur du premier point de l'axe X.

X2

Retourne et définit la valeur du deuxième point de l'axe X.

X3

Retourne et définit la valeur du troisième point de l'axe X.

X4

Retourne et définit la valeur du quatrième point de l'axe X.

GetValue

Calcule la valeur de la fonction d'appartenance d'un argument donné.

Méthodes héritées de la classe CObject

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

Exemple

//+------------------------------------------------------------------+
//|                                  TrapezoidMembershipFunction.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- Crée les fonctions membres
CTrapezoidMembershipFunction func1(0,2,5,5);
CTrapezoidMembershipFunction func2(0,3,7,10);
CTrapezoidMembershipFunction func3(4,8,8,10);
//--- Crée les wrappers des fonctions membres
double TrapezoidMembershipFunction1(double x) { return(func1.GetValue(x)); }
double TrapezoidMembershipFunction2(double x) { return(func2.GetValue(x)); }
double TrapezoidMembershipFunction3(double x) { return(func3.GetValue(x)); }
//+------------------------------------------------------------------+
//| Fonction de lancement du script                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- crée le graphique
   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);
//--- crée une courbe
   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]");
//--- définit les propriétés de l'axe X
   graphic.XAxis().AutoScale(false);
   graphic.XAxis().Min(0.0);
   graphic.XAxis().Max(10.0);
   graphic.XAxis().DefaultStep(1.0);
//--- définit les propriétés de l'axe Y
   graphic.YAxis().AutoScale(false);
   graphic.YAxis().Min(0.0);
   graphic.YAxis().Max(1.1);
   graphic.YAxis().DefaultStep(0.2);
//--- dessin
   graphic.CurvePlotAll();
   graphic.Update();
  }