Skip to content

DonJonMao/drive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

机房巡检路径规划与可视化系统

项目概述

本项目是一个基于高德地图API的机房巡检路径规划与可视化系统,主要用于在停电场景下为运维人员规划最优的机房巡检路线。系统采用多层次优先级策略,确保在机房备电耗尽前完成巡检任务,并最大化保障高等级机房的正常运行。

核心功能

1. 智能路径规划

  • 多层次优先级策略:采用严格的等级优先和时间优化相结合的路径选择算法
  • 全路径遍历:生成并评估所有可能的巡检路径组合
  • 停电风险评估:精确计算机房停电风险,优先保障机房正常运行
  • 等待时间优化:在无法避免停电时,最小化机房停电等待时间

2. 实时路径计算

  • 高德地图API集成:使用高德地图驾车路径规划API获取精确的行驶路线
  • 动态路况考虑:实时获取路况信息,计算准确的行驶时间
  • 限流控制:实现API请求限流,避免超出配额限制
  • 分段时间计算:精确计算每段行程的时间和到达时间

3. 可视化地图展示

  • 交互式地图:基于Folium生成交互式HTML地图
  • 路线可视化:显示完整的行驶路线,包括静态路线和动态蚂蚁线效果
  • 机房标记:不同颜色标记正常机房和停电风险机房
  • 详细信息:点击标记可查看机房详细信息和坐标

技术架构

核心模块

  1. test.py - 主程序模块

    • 路径规划算法
    • 机房数据管理
    • API调用控制
    • 时间计算逻辑
    • 优先级评估系统
  2. paint.py - 地图可视化模块

    • 地图生成和渲染
    • 路线绘制
    • 标记点添加
    • Web服务器启动

路径规划方案详解

核心策略

我们的路径规划采用双层优先级策略,确保在复杂停电场景下做出最优决策:

第一优先级:无停电保障策略

算法实现

1. 路径生成算法

# 机房等级分组
等级1机房等级2机房等级3机房

# 路径组合生成
for 等级1机房的所有排列:
    for 等级2机房的所有排列:
        for 等级3机房的所有排列:
            生成完整路径(起点等级1等级2等级3)

2. 路径评估算法

def evaluate_route(route):
    # 获取API路径规划结果
    driving_result = get_driving_route(route)
    
    # 计算各段行程时间和到达时间
    segments = calculate_route_segments(driving_result)
    
    # 停电风险评估
    power_off_dcs = []
    for dc in data_centers:
        power_off_time = 停电开始时间 + dc.备电时长
        if dc.到达时间 > power_off_time:
            power_off_dcs.append(dc)
    
    # 计算等待时间
    waiting_time = sum(dc.到达时间 - power_off_time for dc in power_off_dcs)
    
    # 计算优先级分数
    priority_score = get_route_priority_score(route)
    
    return {
        "valid": len(power_off_dcs) == 0,
        "waiting_time": waiting_time,
        "priority_score": priority_score,
        "total_duration": total_duration
    }

3. 最优路径选择算法

def find_optimal_route():
    # 生成所有可能路径
    all_routes = generate_routes()
    
    # 评估并分类
    valid_routes = []    # 无停电风险路径
    invalid_routes = []  # 有停电风险路径
    
    for route in all_routes:
        result = evaluate_route(route)
        if result["valid"]:
            valid_routes.append(result)
        else:
            invalid_routes.append(result)
    
    # 第一优先级:选择无停电路径中的最优方案
    if valid_routes:
        return min(valid_routes, key=lambda x: (
            x["priority_score"],  # 等级优先
            x["total_duration"]   # 时间最短
        ))
    
    # 第二优先级:选择停电路径中的最优方案
    if invalid_routes:
        return min(invalid_routes, key=lambda x: (
            x["priority_score"],  # 等级优先
            x["waiting_time"],    # 等待时间最短
            x["total_duration"]   # 时间最短
        ))

关键创新点

1. 等待时间计算

等待时间 = Σ(机房到达时间 - 机房停电时间)
# 只计算停电后到达的机房
# 用于衡量停电造成的实际影响时间

2. 优先级分数系统

优先级分数 = (等级1机房数量, 等级2机房数量, 等级3机房数量)
# 元组比较确保等级1机房绝对优先
# 在同等级下比较机房数量

3. 多重排序键

# 无停电路径排序
sort_key = (priority_score, total_duration)

# 停电路径排序  
sort_key = (priority_score, waiting_time, total_duration)

时间计算逻辑

1. 备电时长管理

机房停电时间 = 停电开始时间 + 机房备电时长

2. 到达时间预测

机房到达时间 = 出发时间 + 累计行驶时间

3. 风险评估

if 机房到达时间 > 机房停电时间 and 机房到达时间 < 停电结束时间: 机房存在停电风险 等待时间 = 机房到达时间 - 机房停电时间

配置说明

API配置

  • 高德地图API密钥:需要在test.py中配置有效的API密钥
  • 请求限流:默认每秒最多3个请求,可根据API配额调整

机房配置

data_centers = [
    DataCenter("机房名称", 等级, "经度,纬度", 备电时长分钟),
    # 示例:
    DataCenter("机房A", 1, "108.113967,34.245818", 60),
    DataCenter("机房B", 2, "108.097724,34.215308", 30),
    DataCenter("机房C", 3, "108.097724,34.285308", 15),
]

地图配置

  • 端口设置:默认使用8002端口启动Web服务器
  • 地图样式:使用OpenStreetMap瓦片,可根据需要更换

使用方法

1. 环境准备

pip install folium requests

2. 配置参数

  • test.py中设置API密钥
  • 配置机房信息(名称、等级、坐标、备电时长)
  • 设置起点坐标和停电时间

3. 运行程序

python test.py

4. 查看结果

  • 程序会自动计算最优路径并输出详细信息
  • 自动在浏览器中打开可视化地图
  • 地图文件保存为route_map.html

输出信息

控制台输出

  • 路径选择策略:显示采用的优先级策略(无停电保障/最小损失)
  • 最优路径信息:起点→途径点→终点的完整路径
  • 时间分析:总用时、各段行程详情、等待时间分析
  • 风险评估:机房备电时间和到达时间对比
  • 停电预警:详细的停电风险警告和影响分析

地图可视化

  • 绿色标记:起点
  • 红色标记:终点
  • 紫色标记:正常机房
  • 红色标记:停电风险机房
  • 蓝色路线:静态行驶路线
  • 红色动态线:蚂蚁线效果

算法优势

1. 全局最优

  • 遍历所有可能路径,确保找到全局最优解
  • 避免局部最优陷阱

2. 多目标优化

  • 同时考虑等级优先级、停电风险、行驶时间
  • 平衡多个优化目标

3. 风险可控

  • 优先保障无停电方案
  • 在必要时最小化停电影响

4. 决策透明

  • 详细的评估过程和选择理由
  • 便于运维人员理解和决策

扩展功能

可扩展方向

  1. 动态权重调整:根据实际情况调整等级权重
  2. 多起点支持:支持多个起点的路径规划
  3. 实时路况集成:集成实时路况信息
  4. 路径历史管理:保存和分析历史路径记录
  5. 移动端适配:优化移动设备显示效果
  6. 智能告警系统:集成邮件或短信告警功能

性能优化

  1. 缓存机制:缓存API请求结果
  2. 并发处理:支持多路径并发计算
  3. 算法优化:使用启发式算法减少计算量
  4. 内存优化:优化大规模路径计算的内存使用

注意事项

  1. API配额:注意高德地图API的调用配额限制
  2. 网络依赖:需要稳定的网络连接获取地图数据
  3. 坐标格式:确保坐标格式正确(经度,纬度)
  4. 时间同步:确保系统时间准确,影响停电时间计算
  5. 计算复杂度:机房数量增加时,路径组合数呈指数增长

故障排除

常见问题

  1. 地图无法显示:检查网络连接和端口占用
  2. 路径规划失败:检查API密钥和坐标格式
  3. 标记点位置错误:确认坐标格式为"经度,纬度"
  4. 时间计算异常:检查系统时间和停电时间设置
  5. 路径计算超时:考虑减少机房数量或优化算法

调试建议

  1. 查看控制台输出的错误信息
  2. 验证API密钥有效性
  3. 检查机房坐标的准确性
  4. 确认网络连接状态
  5. 监控API调用频率和配额使用情况

许可证

本项目仅供学习和研究使用,请遵守相关API服务条款。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors