CDifferencTwoSigmoidalMembershipFunction

Clase para la implementación de la función de pertenencia en forma de diferencia entre dos funciones sigmoidales con los parámetros А1, А2, С1, С2.

Descripción

La función se basa en el uso de una curva sgmoidal. Con su ayuda se puede crear una función de pertenencia con valores iguales a 1, comenzando por un cierto valor del argumento. Tales funciones convienen si es necesario indicar términos lingüísticos del tipo "corto" o "largo".

fuzzy_diffsigmoidal_function

Un ejemplo de código para construir este gráfico se muestra más abajo.

Declaración

   class CDifferencTwoSigmoidalMembershipFuncion : public IMembershipFunction

Encabezamiento

   #include <Math\Fuzzy\membershipfunction.mqh>

Jerarquía de herencia

  CObject

      IMembershipFunction

          CDifferencTwoSigmoidalMembershipFunction

Métodos de clase

Método de clase  

Descripción

A1

Retorna y establece el coeficiente de inclinación de la primera función de pertenencia.

A2

Retorna y establece el coeficiente de inclinación de la segunda función de pertenencia.

С1

Retorna y establece el parámetro de la coordenada de inflexión de la primera función de pertenencia.

С2

Retorna y establece el parámetro de la coordenada de inflexión de la segunda función de pertenencia.

GetValue

Calcula el valor de la función de pertenenecia según el argumento indicado.

Métodos heredados de la clase CObject

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

Ejemplo

//+------------------------------------------------------------------+
//|                      DifferencTwoSigmoidalMembershipFunction.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- Create membership functions
CDifferencTwoSigmoidalMembershipFunction func1(5,1,8,7);
CDifferencTwoSigmoidalMembershipFunction func2(5,4,5,7);
CDifferencTwoSigmoidalMembershipFunction func3(5,6,2,7);
//--- Create wrappers for membership functions
double DifferencTwoSigmoidalMembershipFunction1(double x) { return(func1.GetValue(x)); }
double DifferencTwoSigmoidalMembershipFunction2(double x) { return(func2.GetValue(x)); }
double DifferencTwoSigmoidalMembershipFunction3(double x) { return(func3.GetValue(x)); }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- create graphic
   CGraphic graphic;
   if(!graphic.Create(0,"DifferencTwoSigmoidalMembershipFunction",0,30,30,780,380))
     {
      graphic.Attach(0,"DifferencTwoSigmoidalMembershipFunction");
     }
   graphic.HistoryNameWidth(70);
   graphic.BackgroundMain("DifferencTwoSigmoidalMembershipFunction");
   graphic.BackgroundMainSize(16);
//--- create curve
   graphic.CurveAdd(DifferencTwoSigmoidalMembershipFunction1,0.0,10.0,0.1,CURVE_LINES,"[5, 1, 8, 7]");
   graphic.CurveAdd(DifferencTwoSigmoidalMembershipFunction2,0.0,10.0,0.1,CURVE_LINES,"[5, 4, 5, 7]");
   graphic.CurveAdd(DifferencTwoSigmoidalMembershipFunction3,0.0,10.0,0.1,CURVE_LINES,"[5, 6, 2, 7]");
//--- 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();
  }