ファジィの実行(ルールと観測情報を使っての推論)

Namespace: fvalgcli
Assembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)

Syntax

C#
public static int fnFIE_fuzzy_inference(
	FHANDLE htbl,
	F_FUZZY_BASE_PTR _inp,
	DOUBLE_PTR _out
)
Visual Basic
Public Shared Function fnFIE_fuzzy_inference ( 
	htbl As FHANDLE,
	_inp As F_FUZZY_BASE_PTR,
	_out As DOUBLE_PTR
) As Integer

Parameters

htbl
Type: fvalgcli..::..FHANDLE
ファジィ推論テーブルのハンドル
_inp
Type: fvalgcli..::..F_FUZZY_BASE_PTR
観測情報のメンバシップ関数の生成用基準値配列。fnFIE_fuzzy_open() 実行時に指定した基準値の数分の設定(配列要素数)が必要です
_out
Type: fvalgcli..::..DOUBLE_PTR
ファジィ推論結果配列。fnFIE_fuzzy_open() 実行時に指定した結論数( concl_num )分の配列要素が必要です

Return Value

Type: Int32
以下のエラーコードを返します。

エラーコード:
f_err内容
F_ERR_NONE 正常終了
F_ERR_INVALID_OBJECT 不正なオブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_NO_LICENCE ライセンスエラー

Remarks

Examples

C# Copy imageCopy
//    $Revision: 1.1 $

using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace TC
{
    public partial class FIE
    {
        public void fnFIE_fuzzy_inference(FHANDLE hFuzzy, int iAntecN, int iConclN)
        {
            // オブジェクトの宣言.
            int status = (int)fvalgcli.f_err.F_ERR_NONE;
            F_FUZZY_BASE_PTR pObsMemb = F_FUZZY_BASE_PTR.Zero;    // Observation membership
            DOUBLE_PTR dOut = DOUBLE_PTR.Zero;                    // Output vactor

            double dExpResult = -0.120000;                        // Expected result

            try
            {
                // 観測情報のメンバシップ関数の生成用基準値配列.
                // fnFIE_fuzzy_open() 実行時に指定した基準値の数分の設定(配列要素数)が必要です.
                pObsMemb = F_FUZZY_BASE_PTR.alloc(iAntecN);

                int iAntecNo = 0;
                pObsMemb[iAntecNo] = F_FUZZY_BASE.init(-0.2, 0.4, 0.5, 0.7, 1.0);
                iAntecNo++;

                // ファジィ推論結果配列.
                // fnFIE_fuzzy_open() 実行時に指定した結論数( concl_num )分の配列要素が必要です.
                dOut = DOUBLE_PTR.alloc(iConclN);

                status = api.fnFIE_fuzzy_inference(hFuzzy, pObsMemb, dOut);
                Assert.IsTrue(
                    status == (int)f_err.F_ERR_NONE,
                    "エラーが発生しました。({0})", (f_err)status);

                Assert.IsTrue(
                    System.Math.Abs(dOut[0] - dExpResult) < 0.0000001,
                    "エラーが発生しました。(dOut[0]={0})", dOut[0]);
            }
            finally
            {
                dOut.Dispose();
                pObsMemb.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Public Partial Class FIE
    Public Sub fnFIE_fuzzy_inference(hFuzzy As FHANDLE, iAntecN As Integer, iConclN As Integer)
        ' オブジェクトの宣言.
        Dim status As Integer = CInt(fvalgcli.f_err.F_ERR_NONE)
        Dim pObsMemb As F_FUZZY_BASE_PTR = F_FUZZY_BASE_PTR.Zero
        ' Observation membership
        Dim dOut As DOUBLE_PTR = DOUBLE_PTR.Zero
        ' Output vactor
        Dim dExpResult As Double = -0.12
        ' Expected result
        Try
            ' 観測情報のメンバシップ関数の生成用基準値配列.
            ' fnFIE_fuzzy_open() 実行時に指定した基準値の数分の設定(配列要素数)が必要です.
            pObsMemb = F_FUZZY_BASE_PTR.alloc(iAntecN)

            Dim iAntecNo As Integer = 0
            pObsMemb(iAntecNo) = F_FUZZY_BASE.init(-0.2, 0.4, 0.5, 0.7, 1.0)
            iAntecNo += 1

            ' ファジィ推論結果配列.
            ' fnFIE_fuzzy_open() 実行時に指定した結論数( concl_num )分の配列要素が必要です.
            dOut = DOUBLE_PTR.alloc(iConclN)

            status = api.fnFIE_fuzzy_inference(hFuzzy, pObsMemb, dOut)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err))

            Assert.IsTrue(System.Math.Abs(dOut(0) - dExpResult) < 1E-07, "エラーが発生しました。(dOut[0]={0})", dOut(0))
        Finally
            dOut.Dispose()
            pObsMemb.Dispose()
        End Try
    End Sub
End Class

See Also