Ref T298, matcher setup improvements (score only)

This commit is contained in:
Klaus Basan
2018-08-15 01:07:04 +02:00
parent f9b2304e1a
commit f2b6b093e4
2 changed files with 49 additions and 36 deletions

View File

@@ -16,7 +16,7 @@ namespace BlackMisc
{ {
CAircraftMatcherSetup::CAircraftMatcherSetup() CAircraftMatcherSetup::CAircraftMatcherSetup()
{ {
this->reset(MatchingScoreBased); this->reset(MatchingStepwiseReducePlusScoreBased);
} }
CAircraftMatcherSetup::CAircraftMatcherSetup(CAircraftMatcherSetup::MatchingAlgorithm algorithm) CAircraftMatcherSetup::CAircraftMatcherSetup(CAircraftMatcherSetup::MatchingAlgorithm algorithm)
@@ -50,7 +50,7 @@ namespace BlackMisc
Q_UNUSED(i18n); Q_UNUSED(i18n);
return QStringLiteral("algorithm: '") % this->getMatchingAlgorithmAsString() % return QStringLiteral("algorithm: '") % this->getMatchingAlgorithmAsString() %
QStringLiteral("' mode: '") % this->getMatchingModeAsString() % QStringLiteral("' mode: '") % this->getMatchingModeAsString() %
QStringLiteral("' strategy: ") % this->getPickStrategyAsString() % QStringLiteral("' strategy: '") % this->getPickStrategyAsString() %
QStringLiteral("'"); QStringLiteral("'");
} }
@@ -92,9 +92,12 @@ namespace BlackMisc
mode = ModeDefaultReduce; mode = ModeDefaultReduce;
break; break;
case MatchingScoreBased: case MatchingScoreBased:
default:
mode = ModeDefaultScore; mode = ModeDefaultScore;
break; break;
case MatchingStepwiseReducePlusScoreBased:
default:
mode = ModeDefaultReducePlusScore;
break;
} }
this->setMatchingMode(mode); this->setMatchingMode(mode);
this->setPickStrategy(PickByOrder); this->setPickStrategy(PickByOrder);
@@ -102,15 +105,17 @@ namespace BlackMisc
const QString &CAircraftMatcherSetup::algorithmToString(CAircraftMatcherSetup::MatchingAlgorithm algorithm) const QString &CAircraftMatcherSetup::algorithmToString(CAircraftMatcherSetup::MatchingAlgorithm algorithm)
{ {
static const QString rs("reduce + score based");
static const QString s("score based"); static const QString s("score based");
static const QString r("stepwise reduce"); static const QString r("stepwise reduce");
switch (algorithm) switch (algorithm)
{ {
case MatchingStepwiseReduce: return r; case MatchingStepwiseReduce: return r;
case MatchingScoreBased: case MatchingScoreBased: return s;
case MatchingStepwiseReducePlusScoreBased:
default: break; default: break;
} }
return s; return rs;
} }
const QString &CAircraftMatcherSetup::modeFlagToString(MatchingModeFlag modeFlag) const QString &CAircraftMatcherSetup::modeFlagToString(MatchingModeFlag modeFlag)
@@ -121,20 +126,20 @@ namespace BlackMisc
static const QString icaoAirline("by ICAO, airline first"); static const QString icaoAirline("by ICAO, airline first");
static const QString family("by family"); static const QString family("by family");
static const QString livery("by livery"); static const QString livery("by livery");
static const QString combined("by combined combined"); static const QString combined("by combined code");
static const QString noZeros("scoring, ignore zero scores"); static const QString noZeros("scoring, ignore zero scores");
static const QString preferColorLiveries("scoring, prefer color liveries"); static const QString preferColorLiveries("scoring, prefer color liveries");
switch (modeFlag) switch (modeFlag)
{ {
case ByModelString: return ms; case ByModelString: return ms;
case ByIcaoData: return icao; case ByIcaoData: return icao;
case ByFamily: return family; case ByFamily: return family;
case ByLivery: return livery; case ByLivery: return livery;
case ByCombinedType: return combined; case ByCombinedType: return combined;
case ByIcaoOrderAircraftFirst: return icaoAircraft; case ByIcaoOrderAircraftFirst: return icaoAircraft;
case ByIcaoOrderAirlineFirst: return icaoAirline; case ByIcaoOrderAirlineFirst: return icaoAirline;
case ScoreIgnoreZeros: return noZeros; case ScoreIgnoreZeros: return noZeros;
case ScorePreferColorLiveries: return preferColorLiveries; case ScorePreferColorLiveries: return preferColorLiveries;
default: break; default: break;
} }
@@ -146,8 +151,8 @@ namespace BlackMisc
QString CAircraftMatcherSetup::modeToString(MatchingMode mode) QString CAircraftMatcherSetup::modeToString(MatchingMode mode)
{ {
QStringList modes; QStringList modes;
if (mode.testFlag(ByModelString)) { modes << modeFlagToString(ByModelString); } if (mode.testFlag(ByModelString)) { modes << modeFlagToString(ByModelString); }
if (mode.testFlag(ByIcaoData)) { modes << modeFlagToString(ByIcaoData); } if (mode.testFlag(ByIcaoData)) { modes << modeFlagToString(ByIcaoData); }
if (mode.testFlag(ByIcaoOrderAircraftFirst)) { modes << modeFlagToString(ByIcaoOrderAircraftFirst); } if (mode.testFlag(ByIcaoOrderAircraftFirst)) { modes << modeFlagToString(ByIcaoOrderAircraftFirst); }
if (mode.testFlag(ByIcaoOrderAirlineFirst)) { modes << modeFlagToString(ByIcaoOrderAirlineFirst); } if (mode.testFlag(ByIcaoOrderAirlineFirst)) { modes << modeFlagToString(ByIcaoOrderAirlineFirst); }
if (mode.testFlag(ByFamily)) { modes << modeFlagToString(ByFamily); } if (mode.testFlag(ByFamily)) { modes << modeFlagToString(ByFamily); }
@@ -166,9 +171,9 @@ namespace BlackMisc
switch (strategy) switch (strategy)
{ {
case PickFirst: return f; case PickFirst: return f;
case PickByOrder: return o; case PickByOrder: return o;
case PickRandom: return r; case PickRandom: return r;
default: break; default: break;
} }
@@ -178,15 +183,18 @@ namespace BlackMisc
CAircraftMatcherSetup::MatchingMode CAircraftMatcherSetup::matchingMode( CAircraftMatcherSetup::MatchingMode CAircraftMatcherSetup::matchingMode(
bool byModelString, bool byIcaoDataAircraft1st, bool byIcaoDataAirline1st, bool byFamily, bool byLivery, bool byCombinedType, bool byModelString, bool byIcaoDataAircraft1st, bool byIcaoDataAirline1st, bool byFamily, bool byLivery, bool byCombinedType,
bool byMilitary, bool byVtol,
bool scoreIgnoreZeros, bool scorePreferColorLiveries) bool scoreIgnoreZeros, bool scorePreferColorLiveries)
{ {
MatchingMode mode = byModelString ? ByModelString : ModeNone; MatchingMode mode = byModelString ? ByModelString : ModeNone;
if (byIcaoDataAircraft1st) { mode |= ByIcaoOrderAircraftFirst; } if (byIcaoDataAircraft1st) { mode |= ByIcaoOrderAircraftFirst; }
if (byIcaoDataAirline1st) { mode |= ByIcaoOrderAirlineFirst; } if (byIcaoDataAirline1st) { mode |= ByIcaoOrderAirlineFirst; }
if (byFamily) { mode |= ByFamily; } if (byFamily) { mode |= ByFamily; }
if (byLivery) { mode |= ByLivery; } if (byLivery) { mode |= ByLivery; }
if (byCombinedType) { mode |= ByCombinedType; } if (byCombinedType) { mode |= ByCombinedType; }
if (scoreIgnoreZeros) { mode |= ScoreIgnoreZeros; } if (byMilitary) { mode |= ByMilitary; }
if (byVtol) { mode |= ByVtol; }
if (scoreIgnoreZeros) { mode |= ScoreIgnoreZeros; }
if (scorePreferColorLiveries) { mode |= ScorePreferColorLiveries; } if (scorePreferColorLiveries) { mode |= ScorePreferColorLiveries; }
return mode; return mode;
} }

View File

@@ -28,6 +28,7 @@ namespace BlackMisc
enum MatchingAlgorithm enum MatchingAlgorithm
{ {
MatchingScoreBased, MatchingScoreBased,
MatchingStepwiseReducePlusScoreBased,
MatchingStepwiseReduce MatchingStepwiseReduce
}; };
@@ -39,16 +40,20 @@ namespace BlackMisc
ByFamily = 1 << 2, ByFamily = 1 << 2,
ByLivery = 1 << 3, ByLivery = 1 << 3,
ByCombinedType = 1 << 4, ByCombinedType = 1 << 4,
ByIcaoOrderAircraftFirst = (1 << 5) | ByIcaoData, ByManufacturer = 1 << 5,
ByIcaoOrderAirlineFirst = (1 << 6) | ByIcaoData, ByMilitary = 1 << 6,
ByVtol = 1 << 7,
ByIcaoOrderAircraftFirst = (1 << 8) | ByIcaoData,
ByIcaoOrderAirlineFirst = (1 << 9) | ByIcaoData,
// --- score based matching --- // --- score based matching ---
ScoreIgnoreZeros = 1 << 7, //!< zero scores are ignored ScoreIgnoreZeros = 1 << 10, //!< zero scores are ignored
ScorePreferColorLiveries = 1 << 8, //!< prefer color liveries ScorePreferColorLiveries = 1 << 11, //!< prefer color liveries
// --- others --- // --- others ---
ModeNone = 0, ModeNone = 0,
ModeScoreDefault = ScoreIgnoreZeros | ScorePreferColorLiveries, ModeByFLags = ByMilitary | ByVtol,
ModeDefaultScore = ByIcaoOrderAircraftFirst | ByModelString | ByCombinedType | ModeScoreDefault, ModeDefaultScore = ScoreIgnoreZeros | ScorePreferColorLiveries,
ModeDefaultReduce = ByModelString | ByFamily | ByLivery | ByCombinedType | ByIcaoOrderAircraftFirst ModeDefaultReduce = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ByLivery,
ModeDefaultReducePlusScore = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ModeDefaultScore,
}; };
Q_DECLARE_FLAGS(MatchingMode, MatchingModeFlag) Q_DECLARE_FLAGS(MatchingMode, MatchingModeFlag)
@@ -129,13 +134,13 @@ namespace BlackMisc
static const QString &strategyToString(PickSimilarStrategy strategy); static const QString &strategyToString(PickSimilarStrategy strategy);
//! Mode by flags //! Mode by flags
static MatchingMode matchingMode( static MatchingMode matchingMode(bool byModelString, bool byIcaoDataAircraft1st, bool byIcaoDataAirline1st,
bool byModelString, bool byIcaoDataAircraft1st, bool byIcaoDataAirline1st, bool byFamily, bool byLivery, bool byCombinedType, bool byFamily, bool byLivery, bool byCombinedType, bool byMilitary, bool byVtol,
bool scoreIgnoreZeros, bool scorePreferColorLiveries); bool scoreIgnoreZeros, bool scorePreferColorLiveries);
private: private:
int m_algorithm = static_cast<int>(MatchingScoreBased); int m_algorithm = static_cast<int>(MatchingStepwiseReducePlusScoreBased);
int m_mode = static_cast<int>(ModeDefaultScore); int m_mode = static_cast<int>(ModeDefaultReducePlusScore);
int m_strategy = static_cast<int>(PickByOrder); int m_strategy = static_cast<int>(PickByOrder);
BLACK_METACLASS( BLACK_METACLASS(