# 海上风电场集电系统设计优化工具 (Wind Farm Collector System Optimizer)

一个用于设计和优化海上风电场集电系统拓扑的综合工具。支持多种先进算法，能够根据风机坐标、功率以及海缆规格，自动生成投资成本最低、损耗最小的设计方案。

## 🌟 主要功能

- 🖥️ **原生桌面体验**：支持 Native 模式运行，提供类似本地应用的流畅体验（基于 NiceGUI & PyWebview）。
- 🌊 **多种布局生成**：内置模拟数据生成器，支持规则网格和随机分布布局。
- 🔌 **先进设计算法**：
  - **MST (Minimum Spanning Tree)**：无容量约束基准方案。
  - **Capacitated Sweep (Base)**：基础扇区扫描分组。
  - **Rotational Sweep**：全局最优起始角度旋转扫描优化。
  - **Esau-Williams**：经典启发式算法，在距离与容量间寻找最优平衡。
- ⚙️ **灵活参数配置**：支持通过 Excel 自定义系统电压、功率因数及详细电缆规格。
- 📊 **智能方案对比**：自动运行三大场景（标准方案、含可选电缆方案、限制最大截面方案）并对比结果。
- 📁 **多格式导出**：
  - 自动生成 CAD 图纸 (`.dxf`)，按电缆规格分层并着色。
  - 导出详细的 Excel 对比报告及单方案电缆清册。
  - 支持一键打包导出所有方案压缩包 (`.zip`)。

## 🛠️ 安装依赖

本项目使用 `uv` 或 `pip` 管理环境。推荐安装依赖：

```bash
pip install numpy pandas matplotlib scikit-learn scipy networkx ezdxf nicegui openpyxl pywebview
```
*注：`pywebview` 用于支持原生窗口模式。*

## 🚀 使用方法

### 1. 启动图形化界面 (推荐)

运行以下命令启动应用，程序将自动弹出独立窗口：

```bash
python gui.py
```

**GUI 特性：**
- **模板导出**：点击界面上的 "导出 Excel 模板" 按钮可获取标准输入格式文件。
- **参数概览**：上传文件后自动解析并显示系统参数及电缆规格。
- **交互式分析**：点击结果表格中的行，可实时查看对应方案的拓扑图。

### 2. 命令行模式

```bash
python main.py --excel your_data.xlsx
```

## 📝 输入数据规范 (Excel)

为了确保计算结果的准确性，输入 Excel 文件应包含以下 Sheet（推荐使用 GUI 导出模板）：

### 1. Coordinates (坐标)
| Type | ID | X | Y | Power | PlatformHeight |
|------|----|---|---|-------|----------------|
| Substation | Sub1 | 4000 | -800 | 0 | 0 |
| Turbine | 1 | 0 | 0 | 8.0 | 25 |
| ... | ... | ... | ... | ... | ... |

### 2. Cables (电缆)
**必须遵守以下规则：**
- **单调递增性**：电缆必须按截面从小到大排列，且对应的额定载流量也必须严格递增。
- **可选电缆规则**：
  - `Optional` 列标记为 'Y' 的电缆最多只能有一条。
  - 若存在可选电缆，它必须是列表中截面最大的一条。

### 3. Parameters (参数) [可选]
可自定义系统级参数，若不提供则使用默认值。

| Parameter | Value | 说明 |
|-----------|-------|------|
| Voltage (kV) | 66 | 系统电压，支持 `Voltage` 或 `System Voltage`。若 key 包含 `kV` 则自动 *1000。 |
| Power Factor | 0.95 | 功率因数 (0-1)。 |

## 📈 场景说明 (Scenarios)

1.  **Scenario 1 (Standard)**：仅使用非可选（标准）电缆进行优化。
2.  **Scenario 2 (With Optional)**：包含标记为 'Y' 的大型电缆，适用于尝试增加单回路容量的场景。
3.  **Scenario 3 (No Max)**：排除最大截面电缆，测试在电缆供应受限时的最优拓扑。

## 📂 输出文件说明

- **Excel 报告**：`[文件名]_result.xlsx` 包含所有方案的总览及详细连接清单。
- **CAD 图纸**：`design_[方案名].dxf` 包含分层分色的拓扑图。
- **全部方案**：`[文件名]_result.zip` 包含所有图纸及 Excel 报告。

## ⚖️ 许可证

本项目仅供工程学习、研究和初步设计评估使用。详细计算应以专业设计院规范为准。