ファジィ推論テーブルの生成

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

Syntax

C#
public static FHANDLE fnFIE_fuzzy_open(
	int rule_num,
	F_FUZZY_SPEC_PTR antec_cond,
	int antec_num,
	F_FUZZY_SPEC_PTR concl_cond,
	int concl_num
)
Visual Basic
Public Shared Function fnFIE_fuzzy_open ( 
	rule_num As Integer,
	antec_cond As F_FUZZY_SPEC_PTR,
	antec_num As Integer,
	concl_cond As F_FUZZY_SPEC_PTR,
	concl_num As Integer
) As FHANDLE

Parameters

rule_num
Type: System..::..Int32
ファジィルール数( [1,MAX_RULE_N=30] )
antec_cond
Type: fvalgcli..::..F_FUZZY_SPEC_PTR
前提条件の台集合生成条件配列。antec_num で指定した前提個数分の条件を指定します。
antec_num
Type: System..::..Int32
1ファジィルールあたりの前提条件の数( [1,MAX_ANTEC_N=5] )
concl_cond
Type: fvalgcli..::..F_FUZZY_SPEC_PTR
結論の台集合生成条件配列。concl_num で指定した結論個数分の条件を指定します。
concl_num
Type: System..::..Int32
1ファジィルールあたりの結論の数( [1,MAX_CONCL_N=2] )

Return Value

Type: FHANDLE
正常に終了した場合は、ファジィのハンドルを返します。 ライセンスエラー、メモリ不足、又はパラメータ不正により異常終了した場合には、IntPtr.Zero を返します。

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
    {
        // pal_fzlib.h で定義されている定数.
        private const int MAX_RULE_N = 30;        // 最大ファジィルール数.
        private const int MAX_ANTEC_N = 5;        // 最大前提条件数/ファジィルール.
        private const int MAX_CONCL_N = 2;        // 最大結果数/ファジィルール.

        [FvPluginExecute]
        public void fnFIE_fuzzy_open()
        {
            // オブジェクトの宣言.
            FHANDLE hFuzzy = FHANDLE.Zero;                            // Descriptor of fuzzy
            F_FUZZY_SPEC_PTR pAntecCond = F_FUZZY_SPEC_PTR.Zero;    // Predicate condition
            F_FUZZY_SPEC_PTR pConclCond = F_FUZZY_SPEC_PTR.Zero;    // Conclusion condition
            int iRuleN = 3;
            int iAntecN = 1;
            int iConclN = 1;

            try
            {
                pAntecCond = F_FUZZY_SPEC_PTR.alloc(iAntecN);
                pConclCond = F_FUZZY_SPEC_PTR.alloc(iConclN);

                /* Set the predicate platform */
                int iAntecNo = 0;
                pAntecCond[iAntecNo] = F_FUZZY_SPEC.init(-1.0, 1.0, 0.01, 0.005);
                iAntecNo++;

                /* Set the conclusion platform */
                int iConclNo = 0;
                pConclCond[iConclNo] = F_FUZZY_SPEC.init(-1.0, 1.0, 0.01, 0.005);
                iConclNo++;

                // Fuzzy open
                hFuzzy = api.fnFIE_fuzzy_open(iRuleN, pAntecCond, iAntecN, pConclCond, iConclN);
                Assert.IsTrue(hFuzzy != FHANDLE.Zero, "エラーが発生しました。");

                // 以下、関連関数のテスト.
                fnFIE_fuzzy_generate_rule(hFuzzy, iRuleN, iAntecN, iConclN);
                fnFIE_fuzzy_inference(hFuzzy, iAntecN, iConclN);
                fnFIE_fuzzy_clear_rule(hFuzzy, iRuleN);
            }
            finally
            {
                hFuzzy.Dispose();
                pAntecCond.Dispose();
                pConclCond.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

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

Public Partial Class FIE
    ' pal_fzlib.h で定義されている定数.
    Private Const MAX_RULE_N As Integer = 30
    ' 最大ファジィルール数.
    Private Const MAX_ANTEC_N As Integer = 5
    ' 最大前提条件数/ファジィルール.
    Private Const MAX_CONCL_N As Integer = 2
    ' 最大結果数/ファジィルール.
    <FvPluginExecute> _
    Public Sub fnFIE_fuzzy_open()
        ' オブジェクトの宣言.
        Dim hFuzzy As FHANDLE = FHANDLE.Zero
        ' Descriptor of fuzzy
        Dim pAntecCond As F_FUZZY_SPEC_PTR = F_FUZZY_SPEC_PTR.Zero
        ' Predicate condition
        Dim pConclCond As F_FUZZY_SPEC_PTR = F_FUZZY_SPEC_PTR.Zero
        ' Conclusion condition
        Dim iRuleN As Integer = 3
        Dim iAntecN As Integer = 1
        Dim iConclN As Integer = 1

        Try
            pAntecCond = F_FUZZY_SPEC_PTR.alloc(iAntecN)
            pConclCond = F_FUZZY_SPEC_PTR.alloc(iConclN)

            ' Set the predicate platform 

            Dim iAntecNo As Integer = 0
            pAntecCond(iAntecNo) = F_FUZZY_SPEC.init(-1.0, 1.0, 0.01, 0.005)
            iAntecNo += 1

            ' Set the conclusion platform 

            Dim iConclNo As Integer = 0
            pConclCond(iConclNo) = F_FUZZY_SPEC.init(-1.0, 1.0, 0.01, 0.005)
            iConclNo += 1

            ' Fuzzy open
            hFuzzy = api.fnFIE_fuzzy_open(iRuleN, pAntecCond, iAntecN, pConclCond, iConclN)
            Assert.IsTrue(hFuzzy <> FHANDLE.Zero, "エラーが発生しました。")

            ' 以下、関連関数のテスト.
            fnFIE_fuzzy_generate_rule(hFuzzy, iRuleN, iAntecN, iConclN)
            fnFIE_fuzzy_inference(hFuzzy, iAntecN, iConclN)
            fnFIE_fuzzy_clear_rule(hFuzzy, iRuleN)
        Finally
            hFuzzy.Dispose()
            pAntecCond.Dispose()
            pConclCond.Dispose()
        End Try
    End Sub
End Class

See Also