亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rsesreducts.cpp

?? 粗慥集成算法集合 ,并有詳細(xì)的文檔資料和測試數(shù)據(jù)處
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		Handle<Structure> child = GetChild(j);

		// Make sure it's a RSES rule set.
		if (!child->IsA(RSESRULES))
			continue;

		Handle<RSESRules> rules = dynamic_cast(RSESRules *, child.GetPointer());

		// Check that the embedded TRedRulMem objects are the same.
		if (rules->rules_ != reducts_)
			continue;

		// Remove all rules.
		if (!rules->RemoveAllStructures()) {
			Message::Error("Failed to remove all rules from RSES rule set child.");
			return false;
		}

	}

	return true;

}

//-------------------------------------------------------------------
// Method........: DuplicateStructure
// Author........: Aleksander 豩rn
// Date..........:
// Description...: Duplicates only a specified reduct in the reduct
//                 set.
// Comments......: Duplicates any associated rules as well.
//                 Stuff higher up (e.g. annotations) is not
//                 duplicated.
// Revisions.....:
//===================================================================

Structures *
RSESReducts::DuplicateStructure(int i) const {

	// Check argument.
	if (i < 0 || i >= GetNoReducts())
		return NULL;

	Handle<RSESReducts> rsesreducts = Creator::RSESReducts();

	// Duplicate specified reduct wrapper (duplicates associated rules as well).
	try {

			// Get the reduct wrapper.
			Handle<RSESReduct> wrapper = dynamic_cast(RSESReduct *, GetStructure(i));

			// Duplicate the embedded RSES reduct.
			TReduct *duplicate  = new TReduct();
			TReduct *rsesreduct = wrapper->reduct_;

			*duplicate = *rsesreduct;

			// Add it to the embedded set to return.
			rsesreducts->reducts_->AddRed(duplicate);

	}

	// Catch any RSES exceptions.
	catch (Error &error) {
		Message::RSESError("Failed to duplicate embedded RSES reduct.", error.GetMessage());
		return NULL;
	}

	// Build wrappers.
	if (!rsesreducts->BuildWrappers())
		return NULL;

	return rsesreducts.Release();

}

//-------------------------------------------------------------------
// Methods inherited from Reducts.
//===================================================================

//-------------------------------------------------------------------
// Method........: Sort
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......: Sorts the wrappers only.
// Revisions.....:
//===================================================================

bool
RSESReducts::Sort(int property, bool ascending) {
	return Reducts::Sort(property, ascending);
}

//-------------------------------------------------------------------
// Method........: PostCreation
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......: Typically invoked after all the calls to the
//                 AppendReduct method have been made.
// Revisions.....:
//===================================================================

bool
RSESReducts::PostCreation(const DecisionTable &table, const Discerner &discerner, bool modulo) {

	MessageProxy message;

#ifdef _DEBUG
	// Is the RSES object instantiated?
	if (reducts_ == NULL) {
		Message::Error("Embedded RSES object not instantiated.");
		return false;
	}
#endif

	// Check compatibility.
	if (!table.IsA(RSESDECISIONTABLE))
		return false;

	// Cast to correct type.
	RSESDecisionTable *rsestable = dynamic_cast(RSESDecisionTable *, const_cast(DecisionTable *, &table));

	message.Notify("Computing statistics...");

	// Issue warnings?
	if (discerner.HasIDGs()) {
		Message::Warning("Support counts with IDGs not implemented by RSES.", false);
		if (modulo)
			Message::Warning("Generalized decisions with IDGs not implemented by RSES.", false);
	}

	// Let RSES create the rules/patterns.
	try {
		reducts_->UpDateRules(rsestable->decisiontable_, modulo, 0);
	}
	catch (Error &error) {
		Message::RSESError("Failed to update the embedded RSES reduct and rule memory.", error.GetMessage());
		return false;
	}

	return BuildWrappers(NULL);

}

//-------------------------------------------------------------------
// Method........: AppendReduct
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......: After all the calls to this method have been made,
//                 a call MUST be made to BuildWrappers if consistency
//                 between reduct wrappers and RSES reducts is to be
//                 ensured. (The system may crash otherwise, if you're
//                 unlucky.) The reason for this is that the AddRed
//                 method may *delete* the reduct we want to add,
//                 if an indentical reduct already exists. Thus, we
//                 can end up with a wrapper with a dangling pointer.
//
//                 RSES requires verifies uniqueness anyway (and
//                 does a deletion!), regardless of the state of
//                 the verify flag.
//
// Revisions.....:
//===================================================================

bool
RSESReducts::AppendReduct(Reduct *reduct, const DecisionTable &table, int object_no, bool /*masked*/, bool modulo, bool /*verify*/) {

#ifdef _DEBUG
	// Is the RSES object instantiated?
	if (reducts_ == NULL) {
		Message::Error("Embedded RSES object not instantiated.");
		return false;
	}
#endif

	// Check compatibility.
	if (reduct == NULL || !reduct->IsA(RSESREDUCT) || !table.IsA(RSESDECISIONTABLE))
		return false;

	// Cast to correct type.
	RSESReduct        *rsesreduct = dynamic_cast(RSESReduct *, reduct);
	RSESDecisionTable *rsestable  = dynamic_cast(RSESDecisionTable *, const_cast(DecisionTable *, &table));

	bool did_delete = false;

	// Add the embedded RSES reduct to the embedded reduct and rule memory.
	try {
		TDTable *tmp1 = reducts_->CurrentTable;
		int      tmp2 = reducts_->DecTable;
		reducts_->SetCurrentTable(rsestable->decisiontable_);
		reducts_->SetDecTable(modulo);
		did_delete = (reducts_->AddRed(rsesreduct->reduct_, object_no) != rsesreduct->reduct_);
		reducts_->SetCurrentTable(tmp1);
		reducts_->SetDecTable(tmp2);
	}
	catch (Error &error) {
		Message::RSESError("Failed to add the embedded RSES reduct to the embedded reduct and rule memory.", error.GetMessage());
		return false;
	}

	// Do something if the reduct was deleted. Return false, perhaps?
	if (did_delete) {
		// ...
	}

	// The embedded reduct and rule memory takes ownership of the embedded reduct.
	rsesreduct->is_owner_ = false;

	// Add the wrapper structure to the (wrapper) structure container, avoiding recursion.
	return Structures::InsertStructure(reduct, Structures::GetNoStructures());

}

//-------------------------------------------------------------------
// Local methods.
//===================================================================

//-------------------------------------------------------------------
// Method........: BuildWrappers
// Author........: Aleksander 豩rn
// Date..........:
// Description...: Creates wrappers for individual embedded reduct
//                 and rule objects from the RSES library.
//
//                 Wrappers are created so there is a one-to-one
//                 correspondence between the indices of the wrappers
//                 and the indices into the embedded TRedRulMem object.
//
// Comments......: Structures::InsertStructures used to avoid
//                 adding an embedded reduct to the embedded reduct
//                 memory when it is already a member.
//
//                 For similar reasons, the Structures:: qualifier is
//                 used when appropriate.
// Revisions.....:
//===================================================================

bool
RSESReducts::BuildWrappers(RSESRules *rules) {

	// Does an embedded RSES library object exist?
	if (reducts_ == NULL)
		return false;

	int i, no_reducts = GetNoStructures();

	// Remove any wrappers already present (keeping the embedded objects).
	if (no_reducts > 0) {
		for (i = no_reducts	- 1; i >= 0; i--) {
			if (!Structures::RemoveStructure(i)) {
				Message::Error("Failed to remove existing wrapper before building new ones.");
				return false;
			}
		}
	}

	// Create wrappers for individual reducts.
	try {

		// Determine how many wrappers to build.
		no_reducts = reducts_->NoReducts();

		// Build wrappers.
		for (i = 0; i < no_reducts; i++) {

			// Get the RSES reduct to embed.
			TReduct *embedded = reducts_->GetRed(i);

			// Instantiate a wrapper.
			Handle<RSESReduct> wrapper = Creator::RSESReduct();

			// Delete the default embedded reduct of the wrapper, and substitute it with the new one.
			delete wrapper->reduct_;
			wrapper->reduct_   = embedded;
			wrapper->is_owner_ = false;

			// Insert the wrapper into the wrapper list.
			if (!Structures::InsertStructure(const_cast(RSESReduct *, wrapper.GetPointer()), Structures::GetNoStructures())) {
				Message::Error("Error inserting individual reduct wrapper.");
				return false;
			}

		}

	}
	catch (Error &error) {
		Message::RSESError("Error accessing embedded RSES object, wrappers not properly built.", error.GetMessage());
		return false;
	}

	int no_rules;

	// Are there any rules associated with the embedded RSES reduct and rule memory?
	try {
		no_rules = reducts_->NoRules();
	}
	catch (Error &error) {
		Message::RSESError("Error accessing embedded RSES reduct and rule memory, only partial wrapping performed.", error.GetMessage());
		return false;
	}

	// No rules, we're done.
	if (no_rules == 0)
		return true;

	Handle<RSESRules> child;

	// Create a rule set wrapper, or use the one supplied.
	if (rules == NULL)
		child = Creator::RSESRules();
	else
		child = rules;

	// Append the rule set as a child.
	if (!AppendChild(child.GetPointer())) {
		Message::Error("Failed to append the set of RSES rules to the list of children.");
		return false;
	}

	// Set common embedded pointer to RSES reduct and rule memory.
	child->rules_ = reducts_;
	child->is_owner_ = !is_owner_;

	// Build wrappers for the rules.
	if (!child->BuildWrappers()) {
		Message::Error("Failed to create wrappers for individual RSES rules.");
		return false;
	}

	return true;

}

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

void
RSESReducts::TakeOwnership(bool ownership) {

	// Set ownership flag for the TRedRulMem structure.
	is_owner_ = ownership;

	int i, no_reducts = GetNoReducts();

	// None of the wrappers own the embedded TReduct objects, the TRedRulMem object
	// takes ownership once a TReduct is added to the pool.
	for (i = 0; i < no_reducts; i++) {

		// Get wrapper around RSES reduct.
		Handle<RSESReduct> wrapper = dynamic_cast(RSESReduct *, GetReduct(i));

		// Set ownership flag for the embedded TReduct structure.
		wrapper->is_owner_ = false;

	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线91免费看| 国产在线视频不卡二| 94色蜜桃网一区二区三区| 中文字幕一区二区三区四区不卡 | 青青草国产成人av片免费| 欧美年轻男男videosbes| 日本少妇一区二区| 精品福利在线导航| 成人性生交大片免费| ...中文天堂在线一区| 日本精品视频一区二区| 三级成人在线视频| 精品捆绑美女sm三区| 不卡的av网站| 亚洲国产欧美在线| 亚洲精品在线网站| 99国产精品久久| 性做久久久久久| 久久久.com| 日本精品裸体写真集在线观看| 五月天一区二区| 久久久无码精品亚洲日韩按摩| av日韩在线网站| 亚洲电影一级黄| 久久婷婷国产综合精品青草| 91小视频免费观看| 免费成人在线网站| 国产精品久久久久一区| 在线成人av网站| 成人一区二区三区中文字幕| 亚洲高清在线视频| 中文av字幕一区| 欧美一区二区三区视频在线| 成人午夜私人影院| 人人超碰91尤物精品国产| 中文字幕第一区第二区| 69av一区二区三区| av在线不卡免费看| 久久电影国产免费久久电影 | 国产精品久久久久一区| 91精品国产综合久久久蜜臀图片 | www.亚洲国产| 麻豆成人免费电影| 玉足女爽爽91| 亚洲精品在线观看视频| 欧美优质美女网站| 国产成人精品综合在线观看| 天堂久久久久va久久久久| 国产欧美视频一区二区| 日韩欧美一级精品久久| 欧美日韩一区久久| 不卡av在线免费观看| 国产剧情在线观看一区二区| 日韩av电影免费观看高清完整版在线观看| 中文字幕av不卡| 精品国产精品一区二区夜夜嗨| 在线观看av一区二区| 成人a级免费电影| 国产精品1区二区.| 精品亚洲国产成人av制服丝袜| 亚洲午夜精品一区二区三区他趣| 国产精品久久久久一区| 久久久久青草大香线综合精品| 宅男噜噜噜66一区二区66| 色欧美乱欧美15图片| 97se亚洲国产综合自在线| 国产成人在线视频免费播放| 国产一区二区三区在线观看免费 | 日韩午夜激情视频| 欧美日韩亚洲国产综合| 色噜噜偷拍精品综合在线| 国产激情视频一区二区在线观看| 免费高清成人在线| 日本美女一区二区三区视频| 婷婷丁香激情综合| 亚洲电影第三页| 五月婷婷综合网| 视频一区在线视频| 日本免费在线视频不卡一不卡二| 日韩在线卡一卡二| 青青草精品视频| 欧美视频你懂的| 欧美写真视频网站| 欧美蜜桃一区二区三区| 91精品国产综合久久精品| 91麻豆精品国产91久久久久久| 欧美一区二区三区在线视频| 这里只有精品免费| 精品日产卡一卡二卡麻豆| 久久一区二区三区国产精品| 久久久一区二区三区捆绑**| 亚洲国产高清在线观看视频| 中文字幕一区二| 亚洲在线观看免费| 蜜桃91丨九色丨蝌蚪91桃色| 精品亚洲porn| 成人免费av网站| 色综合激情久久| 欧美日韩在线精品一区二区三区激情| 欧美精品在线一区二区| 欧美精品一区二区三区蜜桃视频| 久久久精品一品道一区| 1区2区3区欧美| 亚洲午夜羞羞片| 九一久久久久久| 99久久婷婷国产综合精品电影| 91浏览器打开| 欧美一区二区免费视频| 久久蜜桃av一区精品变态类天堂| 国产欧美日韩视频一区二区 | 91一区二区三区在线观看| 欧美视频在线播放| 欧美精品一区二区不卡| 亚洲欧洲三级电影| 蜜桃视频在线观看一区| 成人久久久精品乱码一区二区三区| 色猫猫国产区一区二在线视频| 日韩精品一区二区三区视频在线观看| 久久精品这里都是精品| 亚洲国产精品久久人人爱| 国产精品一区一区| 欧美日韩免费高清一区色橹橹 | 久久男人中文字幕资源站| 亚洲欧美日韩久久| 久久成人精品无人区| 色婷婷综合五月| 2020国产精品| 亚洲狠狠丁香婷婷综合久久久| 久久99精品国产91久久来源| 色综合久久66| 精品久久久久久久久久久久包黑料| 综合久久综合久久| 国产在线精品一区二区三区不卡| 色欲综合视频天天天| 久久精品亚洲麻豆av一区二区| 性做久久久久久免费观看 | 日韩欧美中文字幕制服| 国产精品久久久久一区| 蜜臀国产一区二区三区在线播放 | 精品视频一区三区九区| 国产精品成人免费在线| 九一久久久久久| 欧美精品久久一区二区三区| 国产精品色婷婷久久58| 美女视频网站久久| 精品视频一区二区不卡| 亚洲欧洲成人精品av97| 国产精品夜夜爽| 精品国产乱码久久| 麻豆精品一区二区三区| 欧美人动与zoxxxx乱| 亚洲精品国产a久久久久久| 成人av免费在线观看| 国产亚洲视频系列| 国内久久精品视频| 日韩精品一区二区三区三区免费 | 免费成人在线网站| 欧美综合久久久| 亚洲制服欧美中文字幕中文字幕| av资源站一区| 亚洲日穴在线视频| 成人av电影在线播放| 国产精品色婷婷久久58| 国产不卡视频在线播放| 国产日产欧美一区二区三区| 国产乱子轮精品视频| 精品国产免费视频| 久久国产尿小便嘘嘘尿| 精品国产第一区二区三区观看体验 | 人妖欧美一区二区| 欧美一级在线视频| 老司机午夜精品| 久久综合久久综合亚洲| 韩国理伦片一区二区三区在线播放| 欧美大尺度电影在线| 精品影视av免费| 欧美精品一区二区三区视频 | 国产激情视频一区二区在线观看| 久久久精品国产免大香伊| 国产成人免费在线| 国产精品成人免费精品自在线观看| 成人成人成人在线视频| 亚洲欧洲日本在线| 欧美性生活一区| 日韩不卡一区二区三区| 久久一留热品黄| 99久久久精品| 亚洲国产欧美在线| 日韩精品一区二区三区在线观看| 蜜臂av日日欢夜夜爽一区| 2欧美一区二区三区在线观看视频| 国产呦萝稀缺另类资源| 亚洲欧洲精品天堂一级 | 欧美色图12p| 奇米影视一区二区三区小说| 欧美一区二区三区免费大片| 国产美女精品在线| 亚洲精品日韩专区silk| 欧美一级高清大全免费观看| 国产在线国偷精品免费看|