|
@@ -2,11 +2,11 @@
|
|
|
#include <QtMath>
|
|
|
#include <QDebug>
|
|
|
|
|
|
-HierarchicalAnalysis::HierarchicalAnalysis(const QStringList &nodes, const QVector<qreal> &nxnValus)
|
|
|
- : m_nodes(nodes),
|
|
|
- m_sqartnValues(QVector<double>(nodes.count(), 0)),
|
|
|
- m_weights(QVector<double>(nodes.count(), 0)),
|
|
|
- m_averageWeights(QVector<double>(nodes.count(), 0)),
|
|
|
+HierarchicalAnalysis::HierarchicalAnalysis(int columnCount, const QVector<qreal> &nxnValus)
|
|
|
+ : m_columnCount(columnCount),
|
|
|
+ m_sqartnValues(QVector<double>(m_columnCount, 0)),
|
|
|
+ m_weights(QVector<double>(m_columnCount, 0)),
|
|
|
+ m_averageWeights(QVector<double>(m_columnCount, 0)),
|
|
|
m_CI(0),
|
|
|
m_CR(0)
|
|
|
{
|
|
@@ -18,10 +18,10 @@ void HierarchicalAnalysis::calc(const QVector<qreal> &nxnValus)
|
|
|
{
|
|
|
// qDebug() << "HierarchicalAnalysis nxnValus" << nxnValus;
|
|
|
|
|
|
- QVector<qreal> nodeMul(m_nodes.count(), 1);
|
|
|
- for (int m = 0; m < m_nodes.count(); ++m) {
|
|
|
- for (int n = 0; n < m_nodes.count(); ++n) {
|
|
|
- nodeMul[m] *= nxnValus[m * m_nodes.count() + n];
|
|
|
+ QVector<qreal> nodeMul(m_columnCount, 1);
|
|
|
+ for (int m = 0; m < m_columnCount; ++m) {
|
|
|
+ for (int n = 0; n < m_columnCount; ++n) {
|
|
|
+ nodeMul[m] *= nxnValus[m * m_columnCount + n];
|
|
|
}
|
|
|
}
|
|
|
// qDebug() << "nodeMul" << nodeMul;
|
|
@@ -41,33 +41,33 @@ void HierarchicalAnalysis::calc(const QVector<qreal> &nxnValus)
|
|
|
// qDebug() << "weights" << m_weights;
|
|
|
|
|
|
// m0*w0+m1*w1+m2*w2+m3*w3...mn*wn
|
|
|
- for (int m = 0; m < m_nodes.count(); ++m) {
|
|
|
- for (int n = 0; n < m_nodes.count(); ++n) {
|
|
|
- m_averageWeights[m] += nxnValus[m * m_nodes.count() + n] * m_weights[n];
|
|
|
+ for (int m = 0; m < m_columnCount; ++m) {
|
|
|
+ for (int n = 0; n < m_columnCount; ++n) {
|
|
|
+ m_averageWeights[m] += nxnValus[m * m_columnCount + n] * m_weights[n];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// qDebug() << "averageWeights" << m_averageWeights;
|
|
|
|
|
|
// Awi/Wi
|
|
|
- QVector<qreal> awiDividedWi(m_nodes.count(), 0);
|
|
|
+ QVector<qreal> awiDividedWi(m_columnCount, 0);
|
|
|
qreal awiDividedWiAverage = 0;
|
|
|
- for (int m = 0; m < m_nodes.count(); ++m) {
|
|
|
+ for (int m = 0; m < m_columnCount; ++m) {
|
|
|
awiDividedWi[m] = m_averageWeights[m] / m_weights[m];
|
|
|
awiDividedWiAverage += awiDividedWi[m];
|
|
|
}
|
|
|
- awiDividedWiAverage /= m_nodes.count();
|
|
|
+ awiDividedWiAverage /= m_columnCount;
|
|
|
|
|
|
// qDebug() << "awiDividedWi" << awiDividedWi;
|
|
|
|
|
|
// CI=(λ-n)/(n-1)
|
|
|
- m_CI = (awiDividedWiAverage - m_nodes.count()) / (m_nodes.count() - 1);
|
|
|
- qreal result = m_nodes.count() <= 10 ? RI[m_nodes.count() - 1] : RI[9];
|
|
|
+ m_CI = (awiDividedWiAverage - m_columnCount) / (m_columnCount - 1);
|
|
|
+ qreal result = m_columnCount <= 10 ? RI[m_columnCount - 1] : RI[9];
|
|
|
if (qFuzzyCompare(result, 0)) {
|
|
|
m_CR = 0;
|
|
|
} else {
|
|
|
m_CR = m_CI / result;
|
|
|
}
|
|
|
|
|
|
- // qDebug() << RI[m_nodes.count() - 1] << "m_CI" << m_CI << "m_CR" << m_CR;
|
|
|
+ // qDebug() << RI[m_columnCount - 1] << "m_CI" << m_CI << "m_CR" << m_CR;
|
|
|
}
|