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

📄 rules.cpp

📁 粗糙集应用软件
💻 CPP
字号:
//-------------------------------------------------------------------
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Revisions.....:
//===================================================================

#include <stdafx.h> // Precompiled headers.
#include <copyright.h>

#include <kernel/structures/rules.h>
#include <kernel/structures/informationvector.h>
#include <kernel/structures/reducts.h>

#include <kernel/algorithms/ruleevaluator.h>

#include <kernel/utilities/partitionkit.h>
#include <kernel/utilities/creator.h>
#include <kernel/utilities/discerner.h>

#include <kernel/basic/vector.h>
#include <kernel/basic/map.h>
#include <kernel/basic/bits.h>
#include <kernel/basic/algorithm.h>
#include <kernel/basic/message.h>

//-------------------------------------------------------------------
// Static stuff (file scope). Hack to use STL sorting.
//===================================================================

static bool         static_compare_ascending_     = true;
static int          static_compare_property_      = 0;
static int          static_compare_no_objects_    = 0;
static Vector(int) *static_compare_decisions_     = NULL;
static Vector(int) *static_compare_cardinalities_ = NULL;

//-------------------------------------------------------------------
// Method........: StaticCreateVectors
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......:
// Revisions.....:
//===================================================================

static bool
StaticCreateVectors(const DecisionTable &table, bool masked) {

	// Instantiate vectors?
	if (static_compare_decisions_ == NULL)
		static_compare_decisions_ = new Vector(int);

	if (static_compare_cardinalities_ == NULL)
		static_compare_cardinalities_ = new Vector(int);

	// Clear current contents.
	static_compare_decisions_->erase(static_compare_decisions_->begin(), static_compare_decisions_->end());
	static_compare_cardinalities_->erase(static_compare_cardinalities_->begin(), static_compare_cardinalities_->end());

	// Determine decision attribute.
	int decision_attribute = table.GetDecisionAttribute(masked);

	if (decision_attribute == Undefined::Integer())
		return false;

	// Fill vectors.
	if (!table.GetValueSet(*static_compare_decisions_, *static_compare_cardinalities_, decision_attribute, masked))
		return false;

	return true;

}

//-------------------------------------------------------------------
// Method........: StaticDestroyVectors
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......:
// Revisions.....:
//===================================================================

static void
StaticDestroyVectors() {

#if 0 // Causes some weird debug assertion...
	if (static_compare_decisions_ != NULL)
		delete static_compare_decisions_;

	if (static_compare_cardinalities_ != NULL)
		delete static_compare_cardinalities_;
#endif

}

//-------------------------------------------------------------------
// STL comparator methods.
//===================================================================

//-------------------------------------------------------------------
// Method........: Comparison operator
// Author........: Aleksander 豩rn
// Date..........:
// Description...: Compares two rules according to the value of
//                 one of their specified properties.
// Comments......: Assumes static stuff has been properly set.
// Revisions.....: A

⌨️ 快捷键说明

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