HierarchicalAnalysis.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef CONSISTENCYCHECK_H
  2. #define CONSISTENCYCHECK_H
  3. #include <QString>
  4. #include <QVector>
  5. /**
  6. * @brief 专家输入数据校验
  7. */
  8. class HierarchicalAnalysis
  9. {
  10. public:
  11. /**
  12. * @brief 构造函数
  13. * @param 输入节点信息
  14. * @param 输入节点列表,必须满足n^2
  15. * @example:
  16. * QStringList ll = { "展开时间", "撤收时间", "携行重量", "操作人数", "防护能力", "保密能力" };
  17. * QVector<qreal> nn = { 1, 1.0 / 3.0, 1.0 / 5.0, 1.0 / 3.0, 1.0 / 5.0, 1.0 / 3.0, 3, 1,
  18. * 1.0 / 3.0, 3, 1.0/ 5.0, 1.0 / 3.0, 5, 3, 1, 5, 3, 3, 3, 1.0 / 3.0,
  19. * 1.0 / 5.0, 1, 1.0 / 7.0, 1.0 / 3.0, 5, 5, 1.0 / 3.0, 7, 1, 3, 3,
  20. * 3,1.0 / 3.0, 3, 1.0 / 3.0, 1 };
  21. * HierarchicalAnalysis cc(ll, nn);
  22. * qDebug() << cc.consitst();
  23. */
  24. HierarchicalAnalysis(const QStringList& nodes, const QVector<qreal>& nxnValus);
  25. const QVector<qreal>& getWieghts() const
  26. {
  27. return m_weights;
  28. }
  29. const QVector<qreal>& getaverageWeights() const
  30. {
  31. return m_averageWeights;
  32. }
  33. const QStringList& getNodes() const
  34. {
  35. return m_nodes;
  36. }
  37. qreal CI() const
  38. {
  39. return m_CI;
  40. }
  41. qreal CR() const
  42. {
  43. return m_CR;
  44. }
  45. /**
  46. * @brief 一致性判断
  47. */
  48. bool consitst() const
  49. {
  50. return true; // return m_CR < thd;
  51. }
  52. private:
  53. const qreal RI[10] = {0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49};
  54. const qreal thd = 0.1;
  55. void calc(const QVector<qreal>& nxnValus);
  56. QStringList m_nodes;
  57. QVector<qreal> m_sqartnValues;
  58. QVector<qreal> m_weights;
  59. QVector<qreal> m_averageWeights;
  60. qreal m_CI;
  61. qreal m_CR;
  62. };
  63. #endif // CONSISTENCYCHECK_H