ファジィルールの作成(メンバシップ関数の生成)
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_fuzzy_generate_rule(
FHANDLE htbl,
int rule_no,
F_FUZZY_BASE_PTR antec_memb,
F_FUZZY_BASE_PTR concl_memb
) |
Visual Basic |
---|
Public Shared Function fnFIE_fuzzy_generate_rule (
htbl As FHANDLE,
rule_no As Integer,
antec_memb As F_FUZZY_BASE_PTR,
concl_memb As F_FUZZY_BASE_PTR
) As Integer |
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 |
---|
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;
namespace TC
{
public partial class FIE
{
public void fnFIE_fuzzy_generate_rule(FHANDLE hFuzzy, int iRuleN, int iAntecN, int iConclN)
{
int status = (int)fvalgcli.f_err.F_ERR_NONE;
for (int i = 0; i < iRuleN; i++)
{
F_FUZZY_BASE_PTR pAntec = F_FUZZY_BASE_PTR.Zero;
F_FUZZY_BASE_PTR pConcl = F_FUZZY_BASE_PTR.Zero;
try
{
pAntec = F_FUZZY_BASE_PTR.alloc(iAntecN);
pConcl = F_FUZZY_BASE_PTR.alloc(iConclN);
int iAntecNo = 0;
pAntec[iAntecNo] = fuzzy_generate_rule_antec(i);
iAntecNo++;
int iConclNo = 0;
pConcl[iConclNo] = fuzzy_generate_rule_concl(i);
iConclNo++;
status = api.fnFIE_fuzzy_generate_rule(hFuzzy, i, pAntec, pConcl);
Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status);
}
finally
{
pAntec.Dispose();
pConcl.Dispose();
}
}
}
private F_FUZZY_BASE fuzzy_generate_rule_antec(int iRuleIndex)
{
F_FUZZY_BASE result;
switch (iRuleIndex)
{
default:
case 0:
result.n1 = -1.0;
result.n2 = -1.0;
result.n3 = -1.0;
result.n4 = 0.0;
result.m = 1.0;
break;
case 1:
result.n1 = -1.0;
result.n2 = 0.0;
result.n3 = 0.0;
result.n4 = 1.0;
result.m = 1.0;
break;
case 2:
result.n1 = 0.0;
result.n2 = 1.0;
result.n3 = 1.0;
result.n4 = 1.0;
result.m = 1.0;
break;
}
return result;
}
private F_FUZZY_BASE fuzzy_generate_rule_concl(int iRuleIndex)
{
F_FUZZY_BASE result;
switch (iRuleIndex)
{
default:
case 0:
result.n1 = 0.0;
result.n2 = 1.0;
result.n3 = 1.0;
result.n4 = 1.0;
result.m = 1.0;
break;
case 1:
result.n1 = -1.0;
result.n2 = 0.0;
result.n3 = 0.0;
result.n4 = 1.0;
result.m = 1.0;
break;
case 2:
result.n1 = -1.0;
result.n2 = -1.0;
result.n3 = -1.0;
result.n4 = 0.0;
result.m = 1.0;
break;
}
return result;
}
}
} |
Visual Basic | Copy |
---|
Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli
Public Partial Class FIE
Public Sub fnFIE_fuzzy_generate_rule(hFuzzy As FHANDLE, iRuleN As Integer, iAntecN As Integer, iConclN As Integer)
Dim status As Integer = CInt(fvalgcli.f_err.F_ERR_NONE)
For i As Integer = 0 To iRuleN - 1
Dim pAntec As F_FUZZY_BASE_PTR = F_FUZZY_BASE_PTR.Zero
Dim pConcl As F_FUZZY_BASE_PTR = F_FUZZY_BASE_PTR.Zero
Try
pAntec = F_FUZZY_BASE_PTR.alloc(iAntecN)
pConcl = F_FUZZY_BASE_PTR.alloc(iConclN)
Dim iAntecNo As Integer = 0
pAntec(iAntecNo) = fuzzy_generate_rule_antec(i)
iAntecNo += 1
Dim iConclNo As Integer = 0
pConcl(iConclNo) = fuzzy_generate_rule_concl(i)
iConclNo += 1
status = api.fnFIE_fuzzy_generate_rule(hFuzzy, i, pAntec, pConcl)
Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err))
Finally
pAntec.Dispose()
pConcl.Dispose()
End Try
Next
End Sub
Private Function fuzzy_generate_rule_antec(iRuleIndex As Integer) As F_FUZZY_BASE
Dim result As F_FUZZY_BASE
Select Case iRuleIndex
Case 0
result.n1 = -1.0
result.n2 = -1.0
result.n3 = -1.0
result.n4 = 0.0
result.m = 1.0
Exit Select
Case 1
result.n1 = -1.0
result.n2 = 0.0
result.n3 = 0.0
result.n4 = 1.0
result.m = 1.0
Exit Select
Case 2
result.n1 = 0.0
result.n2 = 1.0
result.n3 = 1.0
result.n4 = 1.0
result.m = 1.0
Exit Select
End Select
Return result
End Function
Private Function fuzzy_generate_rule_concl(iRuleIndex As Integer) As F_FUZZY_BASE
Dim result As F_FUZZY_BASE
Select Case iRuleIndex
Case 0
result.n1 = 0.0
result.n2 = 1.0
result.n3 = 1.0
result.n4 = 1.0
result.m = 1.0
Exit Select
Case 1
result.n1 = -1.0
result.n2 = 0.0
result.n3 = 0.0
result.n4 = 1.0
result.m = 1.0
Exit Select
Case 2
result.n1 = -1.0
result.n2 = -1.0
result.n3 = -1.0
result.n4 = 0.0
result.m = 1.0
Exit Select
End Select
Return result
End Function
End Class |
See Also