双模反渗透模型

zoumuyu ee0c9918f4 更新 'Jenkinsfile' 10 tháng trước cách đây
.idea 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
__pycache__ 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
analysis_logs 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
cip 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
fouling_model_0922 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
Dockerfile e0381ce447 更新 'Dockerfile' 10 tháng trước cách đây
Jenkinsfile ee0c9918f4 更新 'Jenkinsfile' 10 tháng trước cách đây
README_simple.md 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
build.sh 522b02556d update 10 tháng trước cách đây
config.json 9697541451 1:修正 CIP预测时间,现阶段为手动触发,修改 config.json文件的时间 10 tháng trước cách đây
config_simple.yaml 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
docker-compose.yaml 522b02556d update 10 tháng trước cách đây
logging_system.py 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
main_simple.py 9697541451 1:修正 CIP预测时间,现阶段为手动触发,修改 config.json文件的时间 10 tháng trước cách đây
requirements.txt 195f05b0e3 Initial commit with all files 10 tháng trước cách đây
smart_monitor.py 9697541451 1:修正 CIP预测时间,现阶段为手动触发,修改 config.json文件的时间 10 tháng trước cách đây

README_simple.md

RO膜污染监控与CIP预测系统

系统简介

基于压差预测数据分析膜污染速率,自动计算最优CIP清洗时机。

核心原理

  • 通过滑动窗口计算污染速率 k 值(压差上升速度)
  • 识别 k 值持续上升的时间段,找出污染最严重的时机
  • 综合一段、二段数据,给出最优CIP建议

主要功能

  • 支持 RO1-RO4 四个机组同时分析
  • 提供 4 种决策策略(最早/最晚/加权/严重度)
  • 自动生成日志、图表、HTML报告
  • 支持 API 回调推送决策结果

快速开始

1. 基本运行

from main_simple import main

# 使用默认参数(策略3-加权平均,当前时间,所有机组)
result_df = main()

# 指定策略和时间
result_df = main(strategy=3, start_date='2025-08-26 00:00:00')

# 只分析特定机组
result_df = main(strategy=1, unit_filter='RO1')

2. 自动监控模式

# 自动持续监控,到期触发预测
python smart_monitor.py

监控系统会:

  • 检查 config.json 中的 CIP 历史时间
  • 到期自动运行预测并更新下次时间
  • 循环监控,无需人工干预

3. 策略说明

策略 说明 适用场景
1 最早时机 - 取一段/二段中较早的 保守维护
2 最晚时机 - 取一段/二段中较晚的 最大化运行时间
3 加权平均 - 根据k值加权(推荐) 平衡维护和运行
4 污染严重 - 选k值最大的段 基于实际污染程度

配置文件 (config.json)

{
  "api": {
    "base_url": "http://example.com",
    "callback_endpoint": "/api/cip/callback",
    "jwt_token": "your_token"
  },
  "scada": {
    "project_id": "12345"
  },
  "cip_history": {
    "RO1": "2025-08-05 10:00:00",
    "RO2": "2025-07-20 15:00:00",
    "RO3": "2025-08-01 08:00:00",
    "RO4": "2025-07-15 12:00:00"
  }
}

说明

  • cip_history:记录各机组最近一次CIP时间,用于计算预测周期
  • api:可选,配置后会自动推送决策结果到回调接口
  • scada.project_id:项目标识,用于API回调

算法原理

核心逻辑

  1. 获取预测数据 → 从污染预测模型获取未来压差数据
  2. 计算k值 → 7天滑动窗口线性回归,得到污染速率序列
  3. 识别上升段 → 找出k值连续上升的时间段
  4. 应用约束 → 至少距离起点30天(避免过早CIP)
  5. 找最优点 → 在有效时间段内选k值最大的点
  6. 策略综合 → 对一段、二段按策略综合决策

参数调整

核心参数在 OptimalCIPPredictor 类中:

  • window_days=7:k值计算窗口,增大平滑噪声,减小提高敏感度
  • min_continuous_rising=3:k值连续上升最小点数,增大避免误报
  • min_delay_days=30:最小延迟天数,根据实际CIP周期调整

输出示例

控制台输出

分析机组 RO1
  预测天数: 90天
  找到RO1压差列: 2个
  C.M.RO1_DB@DPT_1_pred: 2025-10-15 18:00:00 (第71天, k=0.000234)
  C.M.RO1_DB@DPT_2_pred: 2025-10-18 12:00:00 (第75天, k=0.000198)
  RO1最优CIP时机: 2025-10-16 08:00:00

==================================================
分析完成
==================================================
机组类型           CIP时机              策略说明
   RO1  2025-10-16 08:00:00  加权平均策略 (第72天)
   RO2  2025-11-04 06:00:00  加权平均策略 (第91天)
   RO3  2025-10-28 14:00:00  加权平均策略 (第84天)
   RO4              None      无有效CIP时机

日志与图表

系统自动生成完整的分析记录,保存在 analysis_logs/ 目录:

目录结构

analysis_logs/
├── CIP_Analysis_20251015_095138.log              # 主日志
├── data/                                          # 数据文件
│   ├── CIP_Analysis_20251015_095138_prediction_data.csv    # 原始预测数据
│   ├── CIP_Analysis_20251015_095138_RO1_pressure_data.csv  # RO1压差数据
│   ├── CIP_Analysis_20251015_095138_RO2_pressure_data.csv
│   └── CIP_Analysis_20251015_095138_final_results.csv      # 最终结果
├── plots/                                         # 图表
│   ├── CIP_Analysis_20251015_095138_pressure_trends.png    # 压差趋势图
│   └── CIP_Analysis_20251015_095138_unit_comparison.png    # 机组对比图
└── reports/                                       # 报告
    ├── CIP_Analysis_20251015_095138_analysis_data.json     # 完整分析数据
    └── CIP_Analysis_20251015_095138_report.html            # HTML报告

主要输出

1. 压差趋势图 (pressure_trends.png)

  • 4个子图,分别展示RO1-RO4的压差变化
  • 一段、二段压差曲线对比
  • 自动截取到各机组预测周期

2. 机组对比图 (unit_comparison.png)

  • 左图:各机组预测周期对比(柱状图)
  • 右图:CIP建议时机分布(距起点天数)

3. HTML报告 (report.html)

  • 会话信息、输入参数、分析结果
  • 带样式的表格展示
  • 适合分享和存档

4. 主日志 (.log)

  • 详细记录每个机组的分析过程
  • k值计算、时间段识别、策略选择
  • API调用结果、耗时统计

系统集成

API回调

配置了API的话,系统会自动推送决策结果:

推送格式

{
  "list": [
    {
      "type": "RO1",
      "project_id": "12345",
      "ctime": "2025-10-16 08:00:00"
    }
  ]
}

失败会自动重试3次,间隔10秒。

依赖模块

  • fouling_model_0922.predict.Predictor:压差预测模型
  • cip.run_this.main:计算各机组预测周期
  • logging_system.CIPAnalysisLogger:日志和图表生成

注意事项

  1. 预测周期不够:确保预测数据至少覆盖30天以上
  2. 频繁无结果:可以降低 min_continuous_risingmin_delay_days
  3. 结果不合理:检查预测模型质量,或尝试不同策略
  4. 查看详细过程:打开 analysis_logs/ 目录下的日志文件