fix: 修复打包后exe程序在无控制台模式下运行时的uvicorn日志配置错误
通过检测sys.frozen判断运行环境,只在打包后的exe程序中禁用日志配置, 避免AttributeError: 'NoneType' object has no attribute 'isatty'错误。 普通Python运行环境保留完整日志功能,方便调试。
This commit is contained in:
142
README.md
142
README.md
@@ -1,116 +1,78 @@
|
||||
# 海上风电场集电系统设计工具
|
||||
# 海上风电场集电系统设计优化工具 (Wind Farm Collector System Optimizer)
|
||||
|
||||
一个用于设计和优化海上风电场集电系统的Python工具,支持多种布局算法和电缆优化方案。
|
||||
一个用于设计和优化海上风电场集电系统拓扑的综合工具。支持多种先进算法,能够根据风机坐标、功率以及海缆规格,自动生成投资成本最低、损耗最小的设计方案。
|
||||
|
||||
## 功能特性
|
||||
## 🌟 主要功能
|
||||
|
||||
- 🌊 多种风机布局生成(随机分布、规则网格)
|
||||
- 🔌 多种集电系统设计算法:
|
||||
- 最小生成树(MST)算法
|
||||
- K-means聚类算法
|
||||
- 容量扫描算法(Capacitated Sweep)
|
||||
- 旋转优化算法(Rotational Sweep)
|
||||
- 📊 多方案对比分析和可视化
|
||||
- 📋 自动导出DXF图纸和Excel报告
|
||||
- 🔧 智能电缆规格选择和成本优化
|
||||
- 🖥️ **交互式 Web 界面**:基于 NiceGUI 开发,支持文件上传、实时日志、方案对比和可视化。
|
||||
- 🌊 **多种布局生成**:内置模拟数据生成器,支持规则网格和随机分布布局。
|
||||
- 🔌 **先进设计算法**:
|
||||
- **MST (Minimum Spanning Tree)**:无容量约束基准方案。
|
||||
- **Capacitated Sweep (Base)**:基础扇区扫描分组。
|
||||
- **Rotational Sweep**:全局最优起始角度旋转扫描优化。
|
||||
- **Esau-Williams**:经典启发式算法,在距离与容量间寻找最优平衡。
|
||||
- 📊 **智能方案对比**:自动运行三大场景(标准方案、含可选电缆方案、限制最大截面方案)并对比结果。
|
||||
- 📋 **数据校验与保障**:严格校验输入数据的有序性及电缆配置规则。
|
||||
- 📁 **多格式导出**:
|
||||
- 自动生成 CAD 图纸 (`.dxf`),按电缆规格分层并着色。
|
||||
- 导出详细的 Excel 对比报告及单方案电缆清册。
|
||||
- 支持一键打包导出所有方案压缩包 (`.zip`)。
|
||||
|
||||
## 安装依赖
|
||||
## 🛠️ 安装依赖
|
||||
|
||||
本项目使用 `uv` 或 `pip` 管理环境。推荐安装依赖:
|
||||
|
||||
```bash
|
||||
pip install numpy pandas matplotlib scikit-learn scipy networkx
|
||||
pip install numpy pandas matplotlib scikit-learn scipy networkx ezdxf nicegui openpyxl
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
## 🚀 使用方法
|
||||
|
||||
### 基本用法
|
||||
### 1. 启动图形化界面 (推荐)
|
||||
|
||||
运行以下命令启动 Web 界面,程序将自动在浏览器中打开:
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
python gui.py
|
||||
```
|
||||
*注:程序默认监听 8080 端口,若被占用将自动尝试后续可用端口。*
|
||||
|
||||
### 指定数据文件
|
||||
### 2. 命令行模式
|
||||
|
||||
```bash
|
||||
python main.py --excel wind_farm_coordinates.xlsx
|
||||
python main.py --excel your_data.xlsx
|
||||
```
|
||||
|
||||
### 覆盖默认簇数
|
||||
## 📝 输入数据规范 (Excel)
|
||||
|
||||
```bash
|
||||
python main.py --clusters 20
|
||||
```
|
||||
为了确保计算结果的准确性,输入 Excel 文件应包含以下两个 Sheet:
|
||||
|
||||
## 算法说明
|
||||
### 1. Coordinates (坐标)
|
||||
| Type | ID | X | Y | Power | PlatformHeight |
|
||||
|------|----|---|---|-------|----------------|
|
||||
| Substation | Sub1 | 4000 | -800 | 0 | 0 |
|
||||
| Turbine | 1 | 0 | 0 | 8.0 | 25 |
|
||||
| ... | ... | ... | ... | ... | ... |
|
||||
|
||||
### 1. MST Method(最小生成树)
|
||||
- 使用最小生成树连接所有风机到海上变电站
|
||||
- 简单高效,适合初步设计
|
||||
### 2. Cables (电缆)
|
||||
**必须遵守以下规则:**
|
||||
- **单调递增性**:电缆必须按截面从小到大排列,且对应的额定载流量也必须严格递增。
|
||||
- **可选电缆规则**:
|
||||
- `Optional` 列标记为 'Y' 的电缆最多只能有一条。
|
||||
- 若存在可选电缆,它必须是列表中截面最大的一条。
|
||||
|
||||
### 2. K-means Clustering
|
||||
- 将风机分组到多个回路中
|
||||
- 平衡每回路的功率分配
|
||||
## 📈 场景说明 (Scenarios)
|
||||
|
||||
### 3. Capacitated Sweep(容量扫描)
|
||||
- 考虑电缆容量约束的智能分组
|
||||
- 支持多种电缆规格自动选择
|
||||
1. **Scenario 1 (Standard)**:仅使用非可选(标准)电缆进行优化。
|
||||
2. **Scenario 2 (With Optional)**:包含标记为 'Y' 的大型电缆,适用于尝试增加单回路容量的场景。
|
||||
3. **Scenario 3 (No Max)**:排除最大截面电缆,测试在电缆供应受限时的最优拓扑。
|
||||
|
||||
### 4. Rotational Sweep(旋转优化)
|
||||
- 在容量扫描基础上进行旋转优化
|
||||
- 进一步降低总成本和损耗
|
||||
## 📂 输出文件说明
|
||||
|
||||
## 输出文件
|
||||
- **Excel 报告**:`[文件名]_result.xlsx` 包含所有方案的总览及详细连接清单。
|
||||
- **CAD 图纸**:`design_[方案名].dxf` 包含分层分色的拓扑图。
|
||||
- **全部方案**:`[文件名]_result.zip` 包含所有图纸及 Excel 报告。
|
||||
|
||||
1. **可视化图片**:`wind_farm_design_comparison.png`
|
||||
- 不同算法的设计方案对比图
|
||||
## ⚖️ 许可证
|
||||
|
||||
2. **CAD图纸**:`wind_farm_design.dxf`
|
||||
- 可导入CAD软件的详细设计图纸
|
||||
|
||||
3. **数据报告**:`wind_farm_design.xlsx`
|
||||
- 包含所有方案的详细技术参数和成本分析
|
||||
|
||||
## 关键参数说明
|
||||
|
||||
可以在 `main.py` 中调整以下核心常量以适配不同项目:
|
||||
|
||||
```python
|
||||
VOLTAGE_LEVEL = 66000 # 集电系统电压 (V)
|
||||
POWER_FACTOR = 0.95 # 功率因数
|
||||
cost_multiplier = 5.0 # 海缆相对于陆缆的成本倍数
|
||||
```
|
||||
|
||||
## 电缆规格配置
|
||||
|
||||
项目支持多种电缆规格,可在 `generate_template.py` 中配置:
|
||||
|
||||
| 截面积(mm²) | 容量(MW) | 电阻(Ω/km) | 成本(元/m) |
|
||||
|-------------|----------|------------|------------|
|
||||
| 35 | 150 | 0.524 | 80 |
|
||||
| 70 | 215 | 0.268 | 120 |
|
||||
| 95 | 260 | 0.193 | 150 |
|
||||
| 120 | 295 | 0.153 | 180 |
|
||||
| 150 | 330 | 0.124 | 220 |
|
||||
| 185 | 370 | 0.0991 | 270 |
|
||||
| 240 | 425 | 0.0754 | 350 |
|
||||
| 300 | 500 | 0.0601 | 450 |
|
||||
| 400 | 580 | 0.0470 | 600 |
|
||||
|
||||
## 输出示例
|
||||
|
||||
```text
|
||||
===== 开始比较电缆方案 =====
|
||||
|
||||
--- All Cables (Base) ---
|
||||
[Base] Cost: ¥12,456,789.12 | Loss: 234.56 kW
|
||||
[Rotational] Cost: ¥12,234,567.89 | Loss: 223.45 kW
|
||||
|
||||
--- High Current (Base) ---
|
||||
[Base] Cost: ¥11,987,654.32 | Loss: 245.67 kW
|
||||
[Rotational] Cost: ¥11,876,543.21 | Loss: 234.56 kW
|
||||
|
||||
推荐方案: High Current (Rotational) (默认)
|
||||
```
|
||||
|
||||
## 许可证
|
||||
|
||||
本项目仅供学习和研究使用。
|
||||
本项目仅供工程学习、研究和初步设计评估使用。详细计算应以专业设计院规范为准。
|
||||
Reference in New Issue
Block a user