CS_ShapedMembershipFunction

Clase para la implementación de la función de pertenencia en forma de S con los parámetros A y B.  

Descripción

La función crea una función de pertenencia en forma de S de dos parámetros. Se trata de una función no disminutiva que adopta valores de 0 a 1. Los parámetros А y В definen el intervalo dentro del cual la función crece en trayectoria lineal de 0 a 1.

Con la ayuda de esta función se presentan los conjuntos difusos del tipo "muy alto" (es decir, se crean funciones de pertenencia no decrecientes con saturación).

fuzzy_s_function

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

Declaración

   class CS_ShapedMembershipFuncion : public IMembershipFunction

Encabezamiento

   #include <Math\Fuzzy\membershipfunction.mqh>

Jerarquía de herencia

  CObject

      IMembershipFunction

          CS_ShapedMembershipFunction

Métodos de clase

Método de clase  

Descripción

A

Retorna y establece el parámetro del comienzo del intervalo de incremento.

B

Retorna y establece el primer parámetro del núcleo de un conjunto difuso.

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

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