CDifferencTwoSigmoidalMembershipFunction

Classe per implementare la funzione di appartenenza in forma di una differenza tra due funzioni sigmoide con i parametri А1, А2, С1 e С2.

Descrizione

La funzione si basa su una curva sigmoidale. Essa consente la creazione di funzioni di appartenenza dei valori pari ad 1 che iniziano con un valore di argomento. Tali funzioni sono adatte se è necessario impostare tali termini linguistici come "short" o "long".

fuzzy_diffsigmoidal_function

Un codice di esempio per tracciare un grafico viene visualizzato qui di seguito.

Dichiarazione

   class CDifferencTwoSigmoidalMembershipFuncion : public IMembershipFunction

Titolo

   #include <Math\Fuzzy\membershipfunction.mqh>

Gerarchia di ereditarietà

  CObject

      IMembershipFunction

          CDifferencTwoSigmoidalMembershipFunction

I metodi della classe

I metodi della classe  

Descrizione

A1

Ottiene ed imposta il primo rapporto di pendenza della funzione di appartenenza.

A2

Ottiene ed imposta il secondo rapporto di pendenza della funzione di appartenenza.

С1

Ottiene ed imposta il primo parametro della coordinata inflession della funzione di appartenenza.

С2

Ottiene ed imposta il secondo parametro della coordinata inflession della funzione di appartenenza.

GetValue

Calcola il valore della funzione di appartenenza da un argomento specificato.

Metodi ereditati dalla classe CObject

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

Esempio

//+------------------------------------------------------------------+
//|                      DifferencTwoSigmoidalMembershipFunction.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- Crea funzioni di appartenenza
CDifferencTwoSigmoidalMembershipFunction func1(5,1,8,7);
CDifferencTwoSigmoidalMembershipFunction func2(5,4,5,7);
CDifferencTwoSigmoidalMembershipFunction func3(5,6,2,7);
//--- Crea wrapper per funzioni di appartenenza
double DifferencTwoSigmoidalMembershipFunction1(double x) { return(func1.GetValue(x)); }
double DifferencTwoSigmoidalMembershipFunction2(double x) { return(func2.GetValue(x)); }
double DifferencTwoSigmoidalMembershipFunction3(double x) { return(func3.GetValue(x)); }
//+------------------------------------------------------------------+
//| Funzione di start del programma Script                           |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- crea grafica
   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);
//--- crea curva
   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]");
//--- imposta le proprietà dell'asse X
   graphic.XAxis().AutoScale(false);
   graphic.XAxis().Min(0.0);
   graphic.XAxis().Max(10.0);
   graphic.XAxis().DefaultStep(1.0);
//--- imposta le proprietà asse Y
   graphic.YAxis().AutoScale(false);
   graphic.YAxis().Min(0.0);
   graphic.YAxis().Max(1.1);
   graphic.YAxis().DefaultStep(0.2);
//--- plotta
   graphic.CurvePlotAll();
   graphic.Update();
  }