双模反渗透模型

wmy 3d24dda126 1:新增一段二段逻辑 1 週間 前
.idea 195f05b0e3 Initial commit with all files 1 ヶ月 前
__pycache__ 195f05b0e3 Initial commit with all files 1 ヶ月 前
analysis_logs 195f05b0e3 Initial commit with all files 1 ヶ月 前
cip 195f05b0e3 Initial commit with all files 1 ヶ月 前
fouling_model_0922 3d24dda126 1:新增一段二段逻辑 1 週間 前
Dockerfile e0381ce447 更新 'Dockerfile' 3 週間 前
Jenkinsfile ee0c9918f4 更新 'Jenkinsfile' 3 週間 前
README_simple.md 195f05b0e3 Initial commit with all files 1 ヶ月 前
build.sh 522b02556d update 3 週間 前
config.json 3d24dda126 1:新增一段二段逻辑 1 週間 前
config_simple.yaml 195f05b0e3 Initial commit with all files 1 ヶ月 前
docker-compose.yaml 522b02556d update 3 週間 前
get_api_data.py 3d24dda126 1:新增一段二段逻辑 1 週間 前
logging_system.py 3d24dda126 1:新增一段二段逻辑 1 週間 前
main_simple.py 3d24dda126 1:新增一段二段逻辑 1 週間 前
requirements.txt 195f05b0e3 Initial commit with all files 1 ヶ月 前
smart_monitor.py 3d24dda126 1:新增一段二段逻辑 1 週間 前

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/ 目录下的日志文件