CP_ShapedMembershipFunction

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

Descripción

La función de pertenencia en forma de Pi tiene la forma de un trapecio de líneas curvas. La función se usa para crear funciones de pertenencia asimétricas con una transición suave de una valoración pesimista de un número difuso hacia una valoración optimista del mismo.  

fuzzy_p_function

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

Declaración

   class CP_ShapedMembershipFuncion : public IMembershipFunction

Encabezamiento

   #include <Math\Fuzzy\membershipfunction.mqh>

Jerarquía de herencia

  CObject

      IMembershipFunction

          CP_ShapedMembershipFunction

Métodos de clase

Método de clase  

Descripción

A

Retorna y establece el parámetro del comienzo de un conjunto difuso.

B

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

C

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

D

Retorna y establece el parámetro de la finalización 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

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