?? savgeneticreducer.cpp
字號:
//-------------------------------------------------------------------
// 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());
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -