⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ruleseditorfrm.cpp

📁 人工智能中模糊逻辑算法 FuzzyLib 2.0 is a comprehensive C++ Fuzzy Logic library for constructing fuzzy logic sy
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop

#include "RulesEditorFrm.h"
#include "MainFrm.h"
//---------------------------------------------------------------------------
#pragma link "cspin"
#pragma resource "*.dfm"
TRulesEditorForm *RulesEditorForm;
//---------------------------------------------------------------------------
__fastcall TRulesEditorForm::TRulesEditorForm(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------



void __fastcall TRulesEditorForm::FormShow(TObject *Sender)
{
    int VeryLow;
    int Low;
    int Medium;
    int High;
    int VeryHigh;

    number_of_output_fuzzysets = 0;
    for (int i=0; i<MAX_FUZZYSETS_PER_VARIABLE; i++)
    {
        if (FuzzyController->output_variable->fuzzysets[i] != NULL)
        {
	    	number_of_output_fuzzysets++;
        }
        else
        {
            break;
        }
    }


    if (number_of_output_fuzzysets == 3)
    {
        VeryLow = -1;
        Low     = 0;
        Medium  = 1;
        High    = 2;
        VeryHigh= -1;

        r1outComboBox->Items->Clear();
        r1outComboBox->Items->Add("Low");
        r1outComboBox->Items->Add("Medium");
        r1outComboBox->Items->Add("High");

        r2outComboBox->Items->Clear();
        r2outComboBox->Items->Add("Low");
        r2outComboBox->Items->Add("Medium");
        r2outComboBox->Items->Add("High");

        r3outComboBox->Items->Clear();
        r3outComboBox->Items->Add("Low");
        r3outComboBox->Items->Add("Medium");
        r3outComboBox->Items->Add("High");

        r4outComboBox->Items->Clear();
        r4outComboBox->Items->Add("Low");
        r4outComboBox->Items->Add("Medium");
        r4outComboBox->Items->Add("High");

        r5outComboBox->Items->Clear();
        r5outComboBox->Items->Add("Low");
        r5outComboBox->Items->Add("Medium");
        r5outComboBox->Items->Add("High");

        r6outComboBox->Items->Clear();
        r6outComboBox->Items->Add("Low");
        r6outComboBox->Items->Add("Medium");
        r6outComboBox->Items->Add("High");

        r7outComboBox->Items->Clear();
        r7outComboBox->Items->Add("Low");
        r7outComboBox->Items->Add("Medium");
        r7outComboBox->Items->Add("High");

        r8outComboBox->Items->Clear();
        r8outComboBox->Items->Add("Low");
        r8outComboBox->Items->Add("Medium");
        r8outComboBox->Items->Add("High");

        r9outComboBox->Items->Clear();
        r9outComboBox->Items->Add("Low");
        r9outComboBox->Items->Add("Medium");
        r9outComboBox->Items->Add("High");
    }
    else if (number_of_output_fuzzysets == 5)
    {
        VeryLow = 0;
        Low     = 1;
        Medium  = 2;
        High    = 3;
        VeryHigh= 4;

        r1outComboBox->Items->Clear();
        r1outComboBox->Items->Add("VeryLow");
        r1outComboBox->Items->Add("Low");
        r1outComboBox->Items->Add("Medium");
        r1outComboBox->Items->Add("High");
        r1outComboBox->Items->Add("VeryHigh");

        r2outComboBox->Items->Clear();
        r2outComboBox->Items->Add("VeryLow");
        r2outComboBox->Items->Add("Low");
        r2outComboBox->Items->Add("Medium");
        r2outComboBox->Items->Add("High");
        r2outComboBox->Items->Add("VeryHigh");

        r3outComboBox->Items->Clear();
        r3outComboBox->Items->Add("VeryLow");
        r3outComboBox->Items->Add("Low");
        r3outComboBox->Items->Add("Medium");
        r3outComboBox->Items->Add("High");
        r3outComboBox->Items->Add("VeryHigh");

        r4outComboBox->Items->Clear();
        r4outComboBox->Items->Add("VeryLow");
        r4outComboBox->Items->Add("Low");
        r4outComboBox->Items->Add("Medium");
        r4outComboBox->Items->Add("High");
        r4outComboBox->Items->Add("VeryHigh");

        r5outComboBox->Items->Clear();
        r5outComboBox->Items->Add("VeryLow");
        r5outComboBox->Items->Add("Low");
        r5outComboBox->Items->Add("Medium");
        r5outComboBox->Items->Add("High");
        r5outComboBox->Items->Add("VeryHigh");

        r6outComboBox->Items->Clear();
        r6outComboBox->Items->Add("VeryLow");
        r6outComboBox->Items->Add("Low");
        r6outComboBox->Items->Add("Medium");
        r6outComboBox->Items->Add("High");
        r6outComboBox->Items->Add("VeryHigh");

        r7outComboBox->Items->Clear();
        r7outComboBox->Items->Add("VeryLow");
        r7outComboBox->Items->Add("Low");
        r7outComboBox->Items->Add("Medium");
        r7outComboBox->Items->Add("High");
        r7outComboBox->Items->Add("VeryHigh");

        r8outComboBox->Items->Clear();
        r8outComboBox->Items->Add("VeryLow");
        r8outComboBox->Items->Add("Low");
        r8outComboBox->Items->Add("Medium");
        r8outComboBox->Items->Add("High");
        r8outComboBox->Items->Add("VeryHigh");

        r9outComboBox->Items->Clear();
        r9outComboBox->Items->Add("VeryLow");
        r9outComboBox->Items->Add("Low");
        r9outComboBox->Items->Add("Medium");
        r9outComboBox->Items->Add("High");
        r9outComboBox->Items->Add("VeryHigh");
    }


    if(FuzzyController != NULL)
    {
        // setup predicate's premises
            r1in1ComboBox->ItemIndex = 0;
            r1opComboBox ->ItemIndex = 0;
            r1in2ComboBox->ItemIndex = 0;

            r2in1ComboBox->ItemIndex = 0;
            r2opComboBox ->ItemIndex = 0;
            r2in2ComboBox->ItemIndex = 1;

            r3in1ComboBox->ItemIndex = 0;
            r3opComboBox ->ItemIndex = 0;
            r3in2ComboBox->ItemIndex = 2;


            r4in1ComboBox->ItemIndex = 1;
            r4opComboBox ->ItemIndex = 0;
            r4in2ComboBox->ItemIndex = 0;

            r5in1ComboBox->ItemIndex = 1;
            r5opComboBox ->ItemIndex = 0;
            r5in2ComboBox->ItemIndex = 1;

            r6in1ComboBox->ItemIndex = 1;
            r6opComboBox ->ItemIndex = 0;
            r6in2ComboBox->ItemIndex = 2;


            r7in1ComboBox->ItemIndex = 2;
            r7opComboBox ->ItemIndex = 0;
            r7in2ComboBox->ItemIndex = 0;

            r8in1ComboBox->ItemIndex = 2;
            r8opComboBox ->ItemIndex = 0;
            r8in2ComboBox->ItemIndex = 1;

            r9in1ComboBox->ItemIndex = 2;
            r9opComboBox ->ItemIndex = 0;
            r9in2ComboBox->ItemIndex = 2;



        if (FuzzyController->rules[0] != NULL)
        {
            r1outComboBox->ItemIndex = -1;
            if (!strcmp(FuzzyController->rules[0]->consequent->premise->fuzzyset->get_name(), "VeryLow"))
                r1outComboBox->ItemIndex = VeryLow;
            else if (!strcmp(FuzzyController->rules[0]->consequent->premise->fuzzyset->get_name(), "Low"))
                r1outComboBox->ItemIndex = Low;
            else if (!strcmp(FuzzyController->rules[0]->consequent->premise->fuzzyset->get_name(), "Medium"))
                r1outComboBox->ItemIndex = Medium;
            else if (!strcmp(FuzzyController->rules[0]->consequent->premise->fuzzyset->get_name(), "High"))
                r1outComboBox->ItemIndex = High;
            else if (!strcmp(FuzzyController->rules[0]->consequent->premise->fuzzyset->get_name(), "VeryHigh"))
                r1outComboBox->ItemIndex = VeryHigh;

            r1alphaCSpinEdit->Value  = 100 * FuzzyController->rules[0]->alphaCut;
            r1weightCSpinEdit->Value = 100 * FuzzyController->rules[0]->weight;
        }
        if (FuzzyController->rules[1] != NULL)
        {
            r2outComboBox->ItemIndex = -1;
            if (!strcmp(FuzzyController->rules[1]->consequent->premise->fuzzyset->get_name(), "VeryLow"))
                r2outComboBox->ItemIndex = VeryLow;
            else if (!strcmp(FuzzyController->rules[1]->consequent->premise->fuzzyset->get_name(), "Low"))
                r2outComboBox->ItemIndex = Low;
            else if (!strcmp(FuzzyController->rules[1]->consequent->premise->fuzzyset->get_name(), "Medium"))
                r2outComboBox->ItemIndex = Medium;
            else if (!strcmp(FuzzyController->rules[1]->consequent->premise->fuzzyset->get_name(), "High"))
                r2outComboBox->ItemIndex = High;
            else if (!strcmp(FuzzyController->rules[1]->consequent->premise->fuzzyset->get_name(), "VeryHigh"))
                r2outComboBox->ItemIndex = VeryHigh;

            r2alphaCSpinEdit->Value  = 100 * FuzzyController->rules[1]->alphaCut;
            r2weightCSpinEdit->Value = 100 * FuzzyController->rules[1]->weight;
        }
        if (FuzzyController->rules[2] != NULL)
        {
            r3outComboBox->ItemIndex = -1;
            if (!strcmp(FuzzyController->rules[2]->consequent->premise->fuzzyset->get_name(), "VeryLow"))
                r3outComboBox->ItemIndex = VeryLow;
            else if (!strcmp(FuzzyController->rules[2]->consequent->premise->fuzzyset->get_name(), "Low"))
                r3outComboBox->ItemIndex = Low;
            else if (!strcmp(FuzzyController->rules[2]->consequent->premise->fuzzyset->get_name(), "Medium"))
                r3outComboBox->ItemIndex = Medium;
            else if (!strcmp(FuzzyController->rules[2]->consequent->premise->fuzzyset->get_name(), "High"))
                r3outComboBox->ItemIndex = High;
            else if (!strcmp(FuzzyController->rules[2]->consequent->premise->fuzzyset->get_name(), "VeryHigh"))
                r3outComboBox->ItemIndex = VeryHigh;

            r3alphaCSpinEdit->Value  = 100 * FuzzyController->rules[2]->alphaCut;
            r3weightCSpinEdit->Value = 100 * FuzzyController->rules[2]->weight;
        }
        if (FuzzyController->rules[3] != NULL)
        {
            r4outComboBox->ItemIndex = -1;
            if (!strcmp(FuzzyController->rules[3]->consequent->premise->fuzzyset->get_name(), "VeryLow"))
                r4outComboBox->ItemIndex = VeryLow;
            else if (!strcmp(FuzzyController->rules[3]->consequent->premise->fuzzyset->get_name(), "Low"))
                r4outComboBox->ItemIndex = Low;
            else if (!strcmp(FuzzyController->rules[3]->consequent->premise->fuzzyset->get_name(), "Medium"))
                r4outComboBox->ItemIndex = Medium;
            else if (!strcmp(FuzzyController->rules[3]->consequent->premise->fuzzyset->get_name(), "High"))
                r4outComboBox->ItemIndex = High;
            else if (!strcmp(FuzzyController->rules[3]->consequent->premise->fuzzyset->get_name(), "VeryHigh"))
                r4outComboBox->ItemIndex = VeryHigh;

            r4alphaCSpinEdit->Value  = 100 * FuzzyController->rules[3]->alphaCut;
            r4weightCSpinEdit->Value = 100 * FuzzyController->rules[3]->weight;
        }
        if (FuzzyController->rules[4] != NULL)
        {
            r5outComboBox->ItemIndex = -1;
            if (!strcmp(FuzzyController->rules[4]->consequent->premise->fuzzyset->get_name(), "VeryLow"))
                r5outComboBox->ItemIndex = VeryLow;
            else if (!strcmp(FuzzyController->rules[4]->consequent->premise->fuzzyset->get_name(), "Low"))
                r5outComboBox->ItemIndex = Low;
            else if (!strcmp(FuzzyController->rules[4]->consequent->premise->fuzzyset->get_name(), "Medium"))
                r5outComboBox->ItemIndex = Medium;
            else if (!strcmp(FuzzyController->rules[4]->consequent->premise->fuzzyset->get_name(), "High"))
                r5outComboBox->ItemIndex = High;
            else if (!strcmp(FuzzyController->rules[4]->consequent->premise->fuzzyset->get_name(), "VeryHigh"))
                r5outComboBox->ItemIndex = VeryHigh;

            r5alphaCSpinEdit->Value  = 100 * FuzzyController->rules[4]->alphaCut;
            r5weightCSpinEdit->Value = 100 * FuzzyController->rules[4]->weight;
        }
        if (FuzzyController->rules[5] != NULL)
        {
            r6outComboBox->ItemIndex = -1;
            if (!strcmp(FuzzyController->rules[5]->consequent->premise->fuzzyset->get_name(), "VeryLow"))
                r6outComboBox->ItemIndex = VeryLow;
            else if (!strcmp(FuzzyController->rules[5]->consequent->premise->fuzzyset->get_name(), "Low"))
                r6outComboBox->ItemIndex = Low;
            else if (!strcmp(FuzzyController->rules[5]->consequent->premise->fuzzyset->get_name(), "Medium"))
                r6outComboBox->ItemIndex = Medium;
            else if (!strcmp(FuzzyController->rules[5]->consequent->premise->fuzzyset->get_name(), "High"))
                r6outComboBox->ItemIndex = High;
            else if (!strcmp(FuzzyController->rules[5]->consequent->premise->fuzzyset->get_name(), "VeryHigh"))
                r6outComboBox->ItemIndex = VeryHigh;

            r6alphaCSpinEdit->Value  = 100 * FuzzyController->rules[5]->alphaCut;
            r6weightCSpinEdit->Value = 100 * FuzzyController->rules[5]->weight;
        }
        if (FuzzyController->rules[6] != NULL)
        {
            r7outComboBox->ItemIndex = -1;
            if (!strcmp(FuzzyController->rules[6]->consequent->premise->fuzzyset->get_name(), "VeryLow"))
                r7outComboBox->ItemIndex = VeryLow;
            else if (!strcmp(FuzzyController->rules[6]->consequent->premise->fuzzyset->get_name(), "Low"))
                r7outComboBox->ItemIndex = Low;
            else if (!strcmp(FuzzyController->rules[6]->consequent->premise->fuzzyset->get_name(), "Medium"))
                r7outComboBox->ItemIndex = Medium;
            else if (!strcmp(FuzzyController->rules[6]->consequent->premise->fuzzyset->get_name(), "High"))
                r7outComboBox->ItemIndex = High;
            else if (!strcmp(FuzzyController->rules[6]->consequent->premise->fuzzyset->get_name(), "VeryHigh"))
                r7outComboBox->ItemIndex = VeryHigh;

            r7alphaCSpinEdit->Value  = 100 * FuzzyController->rules[6]->alphaCut;
            r7weightCSpinEdit->Value = 100 * FuzzyController->rules[6]->weight;
        }
        if (FuzzyController->rules[7] != NULL)
        {
            r8outComboBox->ItemIndex = -1;
            if (!strcmp(FuzzyController->rules[7]->consequent->premise->fuzzyset->get_name(), "VeryLow"))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -