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

📄 tfuzzysystem.cpp

📁 人工智能中模糊逻辑算法 FuzzyLib 2.0 is a comprehensive C++ Fuzzy Logic library for constructing fuzzy logic sy
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////
#include "TFuzzySystem.h"
////////////////////////////////////////////////////////////////////////////////


TFuzzySystem::TFuzzySystem()
{
    for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
    {
    	controllers[i] = NULL;
    }
    for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
    {
		output_sets[i] 	= NULL;
	    outputs[i]		= INVALID_DOMAIN;
	}
}


TFuzzySystem::~TFuzzySystem()
{
	clear_controllers();
   	clear_output_sets();
   	clear_outputs();
}




void TFuzzySystem::clear_controllers()
{
    for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
    {
    	if (controllers[i] != NULL) delete controllers[i];
    	controllers[i] = NULL;
    }
}

void TFuzzySystem::add_controller(TFuzzyController* controller)
{
  for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
  {
  	if (controllers[i] == NULL)
    {
		controllers[i] = controller;
  	    break;
    }
  }
}

void TFuzzySystem::remove_controller(TFuzzyController* controller)
{
  for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
  {
  	if (*(controllers[i]) == *controller)
    {
		delete controllers[i];
		// shift up
	    for (int j=i; j<MAX_CONTROLLERS_PER_SYSTEM-1; j++)
    	{
			controllers[j] = controllers[j+1];
	    }
		// invalidate last
        controllers[MAX_CONTROLLERS_PER_SYSTEM-1] = NULL;
        break;
    }
  }
}


void TFuzzySystem::clear_output_sets()
{
    for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
    {
    	if (output_sets[i] != NULL) delete output_sets[i];
		output_sets[i] 	= NULL;
	}
}

void TFuzzySystem::clear_outputs()
{
    for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
    {
    	outputs[i] = INVALID_DOMAIN;
	}
}




void TFuzzySystem::Run(
							int aggregation_method,		// ZADEH, MEAN, ... PRODUCT, BONDEDSUM
                            int correlation_method,		// TRUNCATE, SCALE
				   			int alphaCut_type,			// STRONG, WEAK
                            int composition_method,		// ZADEH, MEAN, ... PRODUCT, BONDEDSUM
                            int defuzzification_method  // CENTROID, MAXIMUM_HIGHT, ...
						)
{
    // reset all
    for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
    {
		output_sets[i] 	= NULL;
	    outputs[i]		= INVALID_DOMAIN;
	}

    // run system
    for (int i=0; i<MAX_CONTROLLERS_PER_SYSTEM; i++)
    {
		if (controllers[i] != NULL)
		{
			output_sets[i] = controllers[i]->GenerateOutputSet(aggregation_method, correlation_method, alphaCut_type, composition_method);
			outputs[i]     = output_sets[i]->defuzzify(defuzzification_method);
		}
		else
		{
			break;
		}
	}
}
////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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