CProductTwoSigmoidalMembershipFunction

А1、А2、С1、С2パラメータを持つ2つのシグモイド関数の積の形でメンバーシップ関数を実装するためのクラス。  

説明

平滑な非対称関数を設定するために、2つのシグモイドメンバーシップ関数の積が適用されます。引数値で始まる値が1のメンバーシップ関数の作成が可能になります。このような関数は、「ショート」や「ロング」などの言語用語を設定する必要がある場合に適しています。

fuzzy_prodsigmoidal_function

下記はチャートをプロットするためのサンプルコードです。

宣言

  class CProductTwoSigmoidalMembershipFuncion : public IMembershipFunction

タイトル

  #include <Math\Fuzzy\membershipfunction.mqh>

継承階層

  CObject

      IMembershipFunction

          CProductTwoSigmoidalMembershipFunctions

クラスメソッド

クラスメソッド  

説明

A1

1番目のメンバーシップ関数の勾配比を取得及び設定します。

A2

2番目のメンバーシップ関数の勾配比を取得及び設定します。

C1

1番目のメンバーシップ関数の屈曲座標パラメータを取得します。

C2

2番目のメンバーシップ関数の屈曲座標パラメータを取得します。

GetValue

メンバーシップ関数の値を指定された引数で計算します。

クラスから継承されたメソッド CObject

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

//+------------------------------------------------------------------+
//|                       ProductTwoSigmoidalMembershipFunctions.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link     "https://www.mql5.com"
#property version   "1.00"
#include <Math\Fuzzy\membershipfunction.mqh>
#include <Graphics\Graphic.mqh>
//--- メンバーシップ関数を作成します
CProductTwoSigmoidalMembershipFunctions func1(2,1,-1,7);
CProductTwoSigmoidalMembershipFunctions func2(2,2,-4,7);
CProductTwoSigmoidalMembershipFunctions func3(2,3,-8,7);
//--- メンバーシップ関数用のラッパーを作成する
double ProductTwoSigmoidalMembershipFunctions1(double x) { return(func1.GetValue(x)); }
double ProductTwoSigmoidalMembershipFunctions2(double x) { return(func2.GetValue(x)); }
double ProductTwoSigmoidalMembershipFunctions3(double x) { return(func3.GetValue(x)); }
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- グラフィックを作成する
  CGraphic graphic;
  if(!graphic.Create(0,"ProductTwoSigmoidalMembershipFunctions",0,30,30,780,380))
    {
     graphic.Attach(0,"ProductTwoSigmoidalMembershipFunctions");
    }
  graphic.HistoryNameWidth(70);
  graphic.BackgroundMain("ProductTwoSigmoidalMembershipFunctions");
  graphic.BackgroundMainSize(16);
//--- 曲線を作成する
  graphic.CurveAdd(ProductTwoSigmoidalMembershipFunctions1,0.0,10.0,0.1,CURVE_LINES,"[2, 1, -1, 7]");
  graphic.CurveAdd(ProductTwoSigmoidalMembershipFunctions2,0.0,10.0,0.1,CURVE_LINES,"[2, 2, -4, 7]");
  graphic.CurveAdd(ProductTwoSigmoidalMembershipFunctions3,0.0,10.0,0.1,CURVE_LINES,"[2, 3, -8, 7]");
//--- X軸のプロパティを設定する
  graphic.XAxis().AutoScale(false);
  graphic.XAxis().Min(0.0);
  graphic.XAxis().Max(10.0);
  graphic.XAxis().DefaultStep(1.0);
//--- Y軸のプロパティを設定する
  graphic.YAxis().AutoScale(false);
  graphic.YAxis().Min(0.0);
  graphic.YAxis().Max(1.1);
  graphic.YAxis().DefaultStep(0.2);
//--- プロット
  graphic.CurvePlotAll();
  graphic.Update();
 }