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

📄 savgeneticreducer.cpp

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

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

#include <kernel/sav/algorithms/savgeneticreducer.h>

#include <kernel/sav/library/hits/Hits.h>

#include <kernel/algorithms/keyword.h>

#include <kernel/structures/decisiontable.h>

#include <kernel/utilities/mathkit.h>

#include <kernel/basic/message.h>

//-------------------------------------------------------------------
// Methods for class SAVGeneticReducer.
//===================================================================

//-------------------------------------------------------------------
// Constructors/destructor.
//===================================================================

//-------------------------------------------------------------------
// Method........: Constructor
// Author........: Aleksander 豩rn/Staal Vinterbo
// Date..........:
// Description...: Sets sensible default parameter values.
// Comments......:
// Revisions.....:
//===================================================================

SAVGeneticReducer::SAVGeneticReducer() {
	ScaleFitness(true);
	GenerateReport(false);
	ReplacementSampling(true);
	UseElitism(true);
	SetVariation(VARIATION_MODIFIED);
	SetScaling(SCALING_BOLTZMANN);
	SetSeed(12345);
	SetKeepSize(256);
	SetPopulationSize(70);
	SetGenerationGap(30);
	UseFitnessStopping(true);
	UseKeepListStopping(true);
	SetCrossoverProbability(0.3f);
	SetMutationProbability(0.05f);
	SetInversionProbability(0.05f);
	SetNoCrossoverPoints(1);
	SetNoMutations(1);
	SetNoTranspositions(1);
	SetBias(0.4f);
	UseCosts(false);
	SetCostFilename(Undefined::String());
	SetMinimumLifetime(1);
	SetMaximumLifetime(6);
	SetStartTemperature(6.45f);
	SetStopTemperature(1.45f);
	SetDeltaTemperature(0.02f);
	ApproximateSolutions(false);
	SetHittingFraction(0.8f);
	SetNoKeepSteps(3);
}

SAVGeneticReducer::~SAVGeneticReducer() {
}

//-------------------------------------------------------------------
// Methods inherited from Identifier.
//===================================================================

IMPLEMENTIDMETHODS(SAVGeneticReducer, SAVGENETICREDUCER, Reducer)

//-------------------------------------------------------------------
// Methods inherited from Algorithm.
//===================================================================

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

String
SAVGeneticReducer::GetParameters() const {

	String parameters = Reducer::GetParameters() + Keyword::Separator();

	// Algorithm variation.
	parameters += Keyword::Algorithm();
	parameters += Keyword::Assignment();
	parameters += GetString(GetVariation());

	if (GetVariation() == VARIATION_VARIABLE) {

		// Lifetime, min.
		parameters += Keyword::Separator();
		parameters += Keyword::Lifetime() + Keyword::Dot() + Keyword::Lower();
		parameters += Keyword::Assignment();
		parameters += String::Format(GetMinimumLifetime());

		parameters += Keyword::Separator();

		// Lifetime, max.
		parameters += Keyword::Lifetime() + Keyword::Dot() + Keyword::Upper();
		parameters += Keyword::Assignment();
		parameters += String::Format(GetMaximumLifetime());

	}

	parameters += Keyword::Separator();

	// Scale fitness.
	parameters += Keyword::Scaling();
	parameters += Keyword::Assignment();
	parameters += String::Format(ScaleFitness());

	if (ScaleFitness()) {

		// Scaling type.
		parameters += Keyword::Separator();
		parameters += Keyword::Scaling() + Keyword::Dot() + Keyword::Type();
		parameters += Keyword::Assignment();
		parameters += GetString(GetScaling());

		if (GetScaling() == SCALING_BOLTZMANN) {

			// Temperature, start.
			parameters += Keyword::Separator();
			parameters += Keyword::Temperature() + Keyword::Dot() + Keyword::Upper();
			parameters += Keyword::Assignment();
			parameters += String::Format(GetStartTemperature());

			parameters += Keyword::Separator();

			// Temperature, stop.
			parameters += Keyword::Temperature() + Keyword::Dot() + Keyword::Lower();
			parameters += Keyword::Assignment();
			parameters += String::Format(GetStopTemperature());

			parameters += Keyword::Separator();

			// Temperature, delta.
			parameters += Keyword::Temperature() + Keyword::Dot() + Keyword::Delta();
			parameters += Keyword::Assignment();
			parameters += String::Format(GetDeltaTemperature());

		}

	}

	parameters += Keyword::Separator();

	// Report.
	parameters += Keyword::Report();
	parameters += Keyword::Assignment();
	parameters += String::Format(GenerateReport());

	parameters += Keyword::Separator();

	// Replacement sampling.
	parameters += Keyword::Replace();
	parameters += Keyword::Assignment();
	parameters += String::Format(ReplacementSampling());

	parameters += Keyword::Separator();

	// Elitism.
	parameters += Keyword::Elitism();
	parameters += Keyword::Assignment();
	parameters += String::Format(UseElitism());

	parameters += Keyword::Separator();

	// Seed.
	parameters += Keyword::Seed();
	parameters += Keyword::Assignment();
	parameters += String::Format(GetSeed());

	parameters += Keyword::Separator();

	// Size, keeplist.
	parameters += Keyword::Size() + Keyword::Dot() + Keyword::Keep();
	parameters += Keyword::Assignment();
	parameters += String::Format(GetKeepSize());

	parameters += Keyword::Separator();

	// Size, population.
	parameters += Keyword::Size() + Keyword::Dot() + Keyword::Population();
	parameters += Keyword::Assignment();
	parameters += String::Format(GetPopulationSize());

	parameters += Keyword::Separator();

	// Gap, generation.
	parameters += Keyword::Gap() + Keyword::Dot() + Keyword::Generation();
	parameters += Keyword::Assignment();
	parameters += String::Format(GetGenerationGap());

	parameters += Keyword::Separator();

	// Stopping, fitness.
	parameters += Keyword::Stop() + Keyword::Dot() + Keyword::Fitness();
	parameters += Keyword::Assignment();
	parameters += String::Format(UseFitnessStopping());

	parameters += Keyword::Separator();

	// Stopping, keeplist.
	parameters += Keyword::Stop() + Keyword::Dot() + Keyword::Keep();
	parameters += Keyword::Assignment();
	parameters += String::Format(UseKeepListStopping());

	parameters += Keyword::Separator();

	// Probability, crossover.
	parameters += Keyword::Probability() + Keyword::Dot() + Keyword::Crossover();
	parameters += Keyword::Assignment();
	parameters += String::Format(GetCrossoverProbability());

	parameters += Keyword::Separator();

	// Probability, mutation.
	parameters += Keyword::Probability() + Keyword::Dot() + Keyword::Mutation();
	parameters += Keyword::Assignment();
	parameters += String::Format(GetMutationProbability());

	parameters += Keyword::Separator();

	// Probability, inversion.
	parameters += Keyword::Probability() + Keyword::Dot() + Keyword::Inversion();
	parameters += Keyword::Assignment();
	parameters += String::Format(GetInversionProbability());

	parameters += Keyword::Separator();

	// Number, crossover.
	parameters += Keyword::Number() + Keyword::Dot() + Keyword::Crossover();
	parameters += Keyword::Assignment();
	parameters += String::Format(GetNoCrossoverPoints());

⌨️ 快捷键说明

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