1. 项目概述
天然气压力能利用系统综合性评价平台是一个基于Python和PyQt5开发的桌面应用程序,旨在对天然气压力能利用系统进行科学、全面的评价。该平台集成了AHP(层次分析法)和模糊综合评价算法,提供从数据输入、权重计算、模糊评价到结果可视化的完整解决方案。
项目采用模块化设计,具有良好的可扩展性和可维护性。通过直观的图形界面,用户无需编程背景即可轻松完成复杂的评价过程,适用于工程设计、项目评估和决策支持等多个领域。
2. 功能特点
-
完整的评价流程:从方案数据输入、AHP判别矩阵构建、模糊综合评价到结果展示,提供一站式评价流程。
-
多算法集成:结合AHP层次分析法和模糊综合评价算法,确保评价的科学性和准确性。
-
现代化界面:基于PyQt5开发,界面美观、操作简便,支持高DPI显示。
-
丰富可视化:提供权重柱状图、得分对比图、雷达图等多种图表,直观展示评价结果。
-
数据导出:支持将评价结果导出为Excel文件,方便进一步分析和存档。
-
数据验证:内置完善的数据验证机制,确保输入数据的合法性和一致性。
3. 系统架构
3.1 项目结构
NaturalGasEvaluationPlatform/
├── main.py # 主程序入口
├── app.py # 主应用程序类
├── widgets/ # 界面组件
│ ├── login_window.py # 登录窗口
│ ├── main_window.py # 主窗口
│ ├── scheme_input.py # 方案数据输入
│ ├── ahp_input.py # AHP矩阵输入
│ └── results_display.py # 结果显示
├── algorithms/ # 算法模块
│ ├── ahp_calculator.py # AHP计算
│ ├── fuzzy_evaluator.py # 模糊评价
│ ├── data_processor.py # 数据处理
│ ├── chart_generator.py # 图表生成
│ ├── entropy_weight.py # 熵权法计算器
│ └── integrated_evaluator.py# 综合评估器
├── utils/ # 工具模块
│ ├── validators.py # 数据验证
│ └── constants.py # 常量定义
└── resources/ # 资源文件
├── university_logo.png # 校徽图片
└── styles.qss # 样式表
3.2 技术栈
-
编程语言:Python 3.9+
-
GUI框架:PyQt5
-
科学计算:NumPy
-
数据可视化:Matplotlib
-
数据处理:Pandas
-
Excel导出:OpenPyXL
4. 安装与使用
4.1 安装依赖
确保已安装Python 3.9或更高版本,然后安装所需依赖:
bash
pip install PyQt5 numpy matplotlib pandas openpyxl
4.2 运行程序
运行主程序文件即可启动应用程序:
python main.py
4.3 使用步骤
-
登录系统:使用默认账号(admin)和密码(123456)登录。
-
输入方案数据:在主菜单中选择一级膨胀方案或二级膨胀方案,输入16个指标的数据和隶属度矩阵。
-
AHP判别矩阵输入:依次输入准则层和指标层的判别矩阵,系统会自动计算权重并进行一致性检验。
-
综合评价:完成数据输入后,返回主菜单进行综合评价,系统将计算两个方案的得分并给出评价等级。
-
查看结果:在结果展示页面,可以查看权重分布、得分对比和详细结果,并支持导出为Excel文件。
5. 核心算法
5.1 AHP层次分析法
AHP(Analytic Hierarchy Process)是一种多准则决策方法,通过构建判别矩阵计算各层次指标的权重。本平台实现了算术平均法、几何平均法和特征值法三种权重计算方法,并包含一致性检验功能。
5.2 模糊综合评价
模糊综合评价基于模糊数学理论,将定性评价转化为定量评价。平台通过隶属度矩阵和权重向量计算最终得分,并根据得分划分等级(优秀、较好、一般、较差、差)。
5.3 熵权法
熵权法是一种客观赋权方法,根据指标的变异程度确定权重。平台将熵权法与AHP权重相结合,得到更科学的组合权重。
6. 关键代码解析
6.1 AHP权重计算
在ahp_calculator.py中,calculate_weights函数实现了AHP权重计算的核心逻辑:
python
def calculate_weights(self, matrix):
n = len(matrix)
A = np.array(matrix, dtype=float)
# 特征值法求权重
weights, max_eigenvalue = self._eigenvalue_method(A)
# 一致性检验
ci, cr, passed = self._consistency_check(A, weights, max_eigenvalue)
return weights.tolist(), ci, cr, passed
6.2 模糊综合评价
在fuzzy_evaluator.py中,evaluate函数执行模糊评价:
python
def evaluate(self, membership_data, criteria_weights, indicator_weights):
# 提取各指标层的隶属度矩阵
R_system_efficiency = self._extract_membership_matrix(membership_data, 0, 5)
# ... 其他矩阵提取
# 计算各指标层的模糊综合评价结果
B_system_efficiency = self._fuzzy_composition(W_system_efficiency, R_system_efficiency)
# ... 其他指标层计算
# 总模糊评价
B_total = W_criteria @ np.vstack([...])
# 转换为百分制得分
final_score = B_total @ self.SCORE_LEVELS
return float(final_score), grade
6.3 综合评估器
integrated_evaluator.py中的IntegratedEvaluator类整合了AHP、熵权法和模糊评价,实现了完整的评价流程:
python
def evaluate_schemes(self, first_level_data, second_level_data,
first_membership, second_membership, ahp_matrices):
# 计算AHP权重
ahp_weights = self.calculate_ahp_weights(ahp_matrices)
# 计算熵权和组合权重
combined_weights = self.calculate_combined_weights(
first_level_data, second_level_data, ahp_weights
)
# 进行模糊综合评价
first_score, first_grade = self.fuzzy_evaluator.evaluate(...)
second_score, second_grade = self.fuzzy_evaluator.evaluate(...)
# 准备结果显示数据
results = self.prepare_results(...)
return results
7. 总结与展望
天然气压力能利用系统综合性评价平台成功将AHP和模糊综合评价算法集成到易用的桌面应用程序中,为天然气压力能利用系统的评价提供了有力的工具。平台具有以下优势:
-
用户友好:图形界面简化了复杂的评价过程,无需用户具备编程或数学背景。
-
科学可靠:采用成熟的评价算法,确保评价结果的科学性和可靠性。
-
灵活扩展:模块化设计便于添加新的评价算法或修改现有算法。
未来,平台可以进一步扩展,例如增加更多评价算法、支持更多方案类型、添加数据库存储功能等,以满足更广泛的应用需求。
8. 资源
声明:本项目为学术研究用途,评价结果仅供参考。