📄 johnsonreducer.cpp
字号:
//-------------------------------------------------------------------
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Revisions.....:
//===================================================================
#include <stdafx.h> // Precompiled headers.
#include <copyright.h>
#include <kernel/algorithms/johnsonreducer.h>
#include <kernel/algorithms/keyword.h>
#include <kernel/structures/discernibilitymatrix.h>
#include <kernel/utilities/mathkit.h>
//-------------------------------------------------------------------
// Static helpers.
//===================================================================
//-------------------------------------------------------------------
// Method........: StaticGetMaximum
// Author........: Aleksander 豩rn
// Date..........:
// Description...: Returns index with highest weight.
// Comments......: In case of ties, returns the lowest index.
// Revisions.....:
//===================================================================
static int
StaticGetMaximum(const Vector(float) &weights) {
float maximum_w = weights[0];
int maximum_i = 0, i;
for (i = 1; i < weights.size(); i++) {
if (weights[i] > maximum_w) {
maximum_w = weights[i];
maximum_i = i;
}
}
return maximum_i;
}
//-------------------------------------------------------------------
// Methods for class JohnsonReducer.
//===================================================================
//-------------------------------------------------------------------
// Constructors/destructor.
//===================================================================
//-------------------------------------------------------------------
// Method........: Constructor
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......:
// Revisions.....:
//===================================================================
JohnsonReducer::JohnsonReducer() {
ApproximateSolutions(false);
SetHittingFraction(0.95f);
}
JohnsonReducer::~JohnsonReducer() {
}
//-------------------------------------------------------------------
// Methods inherited from Identifier.
//===================================================================
IMPLEMENTIDMETHODS(JohnsonReducer, JOHNSONREDUCER, Reducer)
//-------------------------------------------------------------------
// Methods inherited from Algorithm.
//===================================================================
//-------------------------------------------------------------------
// Method........: GetParameters
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......:
// Revisions.....:
//===================================================================
String
JohnsonReducer::GetParameters() const {
String parameters = Reducer::GetParameters() + Keyword::Separator();
// Approximate solutions.
parameters += Keyword::Approximate();
parameters += Keyword::Assignment();
parameters += String::Format(ApproximateSolutions());
if (ApproximateSolutions()) {
// Hitting fraction.
parameters += Keyword::Separator();
parameters += Keyword::Fraction();
parameters += Keyword::Assignment();
parameters += String::Format(GetHittingFraction());
}
return parameters;
}
//-------------------------------------------------------------------
// Method........: SetParameter
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......:
// Revisions.....:
//===================================================================
bool
JohnsonReducer::SetParameter(const String &keyword, const String &value) {
if (Reducer::SetParameter(keyword, value))
return true;
// Approximate solutions.
if (keyword == Keyword::Approximate() && value.IsBoolean())
return ApproximateSolutions(value.GetBoolean());
// Hitting fraction.
if (keyword == Keyword::Fraction() && value.IsFloat())
return SetHittingFraction(value.GetFloat());
return false;
}
//-------------------------------------------------------------------
// Method........: Apply
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......:
// Revisions.....:
//===================================================================
Structure *
JohnsonReducer::Apply(Structure &structure) const {
return Reducer::Apply(structure);
}
//-------------------------------------------------------------------
// Methods inherited from Reducer.
//===================================================================
//-------------------------------------------------------------------
// Method........: CreateFunction
// Author........: Aleksander 豩rn
// Date..........:
// Description...:
// Comments......: Possible bug: If the matrix is precomputed and
// the simplify flag is set to false, then it has been
// observed that the computed attribute set is
// a superset of the attribute set computed with the
// simplify flag set to true. Intuitively, they should
// be minimal either way.
//
// See also other CreateFunction method.
//
// Revisions.....: A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -