首页
看点啥
插画图片
首页 看点啥 如何使用workbuddy实现能源站仿真的运行优化:实现运行费用最优(纯代码小白开始)

如何使用workbuddy实现能源站仿真的运行优化:实现运行费用最优(纯代码小白开始)

2026-07-08 0

标签:#WorkBuddy #人工智能 #能源系统优化 #工程仿真 #Python

如何使用workbuddy实现能源站仿真的运行优化,实现运行费用最优(纯代码小白开始)

一、先说结论

我是森兰能源中心制冷系统项目的负责人,日常工作是根据用户侧随机负荷,以"单位供能成本最低"为目标做运行优化调度——核心抓手是分时电价 冰蓄冷削峰填谷。

过去这类事,要么自己啃论文写模型,要么等外包排期,平均两周起步。最近一个月我把活儿交给 WorkBuddy,真实体感是:仿真脚本搭建一下午搞定,调参和优化迭代半天,报告自动出。它不是"聊天机器人",是真的能动手干活的桌面搭子。

下面用我真实做过的一个任务,讲清完整链路。


二、一个真实任务:冰蓄冷 分时电价的负荷匹配优化

任务背景

冷负荷:日内随机波动,夏季峰值高、夜间谷电便宜目标函数:全天单位供能成本最低约束:制冷机组出力上限、蓄冰槽容量、电网契约容量手段:谷电时段多制冰蓄冷,峰电时段融冰供冷削峰

我怎么下指令(口语化即可,不用写代码)

WorkBuddy 直接:

拆解成「数据生成 → 建模 → 求解 → 可视化」四步写出完整可运行脚本(含注释)跑通后把三张图(负荷曲线、机组出力、成本构成)一并交付

关键点是——我全程没打开 IDE 写一行代码,只看了结果和调整了参数。

下面就是 WorkBuddy 实际产出、我已在本机跑通的完整脚本(依赖 numpy / scipy / matplotlib,Python 3.11 可直接运行):

python

代码语言:javascript

复制

import numpy as npimport matplotlib.pyplot as pltfrom scipy.optimize import linprog# ========== 1. 基础参数 ==========H = 24dt = 1.0 # 小时COP = 4.0# 制冷机能效比# 上海商业分时电价(元/kWh):谷(0.30) / 平(0.80) / 峰(1.30)price = np.array([0.30,0.30,0.30,0.30,0.30,0.30, # 0-6谷0.80,0.80,# 6-8平1.30,1.30,1.30, # 8-11 峰0.80,0.80,0.80,0.80,0.80,0.80,0.80, # 11-18 平1.30,1.30,1.30, # 18-21 峰0.80, # 21-22 平0.30,0.30 # 22-24 谷])# 设备约束(统一用冷量 kW 表示)chiller_cap = 1200.0 # 制冷机最大冷量出力ice_charge_max= 800.0# 最大蓄冰速率ice_discharge_max = 1000.0 # 最大融冰速率S_max = 4000.0 # 蓄冰槽容量# ========== 2. 模拟 24h 冷负荷(随机波动) ==========rng = np.random.default_rng(42)base = 300 900 * np.exp(-((np.arange(H)-14)**2)/(2*5**2))# 午后峰值noise = rng.normal(0, 60, H)load = np.clip(base noise, 100, None)load = np.round(load, 1)# ========== 3. 建模:最小化全天购电成本 ==========# 变量顺序: q(24)制冷机冷量, c(24)蓄冰, d(24)融冰, s(24)蓄冰槽存量n = 4 * Hdef idx(k, h): return k * H hc_obj = np.zeros(n)for h in range(H):c_obj[idx(0, h)] = price[h] / COP# 电费 = 电价 × 电功率(=冷量/COP)A_eq, b_eq = [], []# 能量平衡: q d - c = loadfor h in range(H):row = np.zeros(n)row[idx(0, h)] = 1; row[idx(2, h)] = 1; row[idx(1, h)] = -1A_eq.append(row); b_eq.append(load[h])# 蓄冰动态: s[h] = s[h-1] c[h] - d[h]for h in range(H):row = np.zeros(n)row[idx(3, h)] = 1if h > 0:row[idx(3, h-1)] = -1row[idx(1, h)] = -1row[idx(2, h)] = 1A_eq.append(row); b_eq.append(0.0)# 初始蓄冰槽为空row0 = np.zeros(n); row0[idx(3, 0)] = 1A_eq.append(row0); b_eq.append(0.0)bounds = []for k in range(4):for _ in range(H):if k == 0: lo, hi = 0, chiller_capelif k == 1: lo, hi = 0, ice_charge_maxelif k == 2: lo, hi = 0, ice_discharge_maxelse:lo, hi = 0, S_maxbounds.append((lo, hi))res = linprog(c_obj, A_eq=A_eq, b_eq=b_eq, bounds=bounds, method='highs')assert res.success, res.messageq = res.x[idx(0, 0):idx(0, 24)] # 制冷机冷量出力c_ = res.x[idx(1, 0):idx(1, 24)]# 蓄冰d = res.x[idx(2, 0):idx(2, 24)] # 融冰s = res.x[idx(3, 0):idx(3, 24)] # 蓄冰槽存量elec = q / COP # 对应电功率total_cost = float(np.sum(elec * price * dt))peak_cost= float(np.sum(elec[price == price.max()] * price.max()))print(f"全天最低购电成本: {total_cost:,.0f} 元")print(f"峰段电费占比: {peak_cost/total_cost*100:.1f}%")print(f"蓄冰槽峰值存量: {s.max():.0f} / {S_max:.0f}")# ========== 4. 可视化 ==========hours = np.arange(H)fig, ax = plt.subplots(3, 1, figsize=(10, 9), sharex=True)ax[0].plot(hours, load, 'k--', label='冷负荷')ax[0].plot(hours, q, 'b', label='制冷机出力')ax[0].plot(hours, d, 'g', label='融冰供冷')ax[0].plot(hours, c_, 'orange', label='蓄冰')ax[0].legend(); ax[0].set_ylabel('冷量 kW'); ax[0].set_title('制冷机出力与蓄冰动作')ax[1].plot(hours, s, 'purple')ax[1].fill_between(hours, s, alpha=0.3, color='purple')ax[1].set_ylabel('蓄冰量 kWh冷'); ax[1].set_title('蓄冰槽存量变化')cost_h = elec * pricecolors = ['green' if p == price.min() else ('red' if p == price.max() else 'gray') for p in price]ax[2].bar(hours, cost_h, color=colors)ax[2].set_ylabel('电费 元'); ax[2].set_xlabel('小时')ax[2].set_title('逐时电费(绿=谷 红=峰 灰=平)')plt.tight_layout(); plt.show()

跑出来的关键结论(我本机实测):全天最低购电成本约 2810 元,其中峰段电费占比被压到 8.1%——也就是靠「谷电制冰 峰电融冰」把最贵那部分负荷基本挪走了。这正好印证了项目「单位供能成本最低」的调度目标。


三、进阶玩法:让它"多想一步"

真正拉开差距的是多轮追问,而不是一次交付。我常用的几个追问:

追问方式

效果

"把电价改成上海商业分时电价真实档位再算一次"

模型立刻贴合实际

"加一个敏感性分析:蓄冰槽容量从 1000 到 5000 变化的成本曲线"

直接出决策依据图

"把结论整理成一页给领导的汇报 PPT"

自动产出可演示文件

"写一段给运维看的运行策略说明(非技术语言)"

一份运营 SOP 就出来了

这等于一个任务同时产出:模型代码 分析图 决策建议 领导汇报 运维手册,以前要找五个人干一周。


四、它和"普通 AI 对话"的本质区别

我用下来最直观的三点:

能操作本地文件:直接读我的 Excel 负荷数据、CSV 历史曲线,改完写回,不用复制粘贴来回倒。多模态交付:文档、表格、PPT、数据分析一起给,而不是一段文字建议。自主规划:我说"目标",它拆"步骤"再执行,不像传统对话只会等我问下一步。


五、给新手的实操建议(照着做就能上手)

从"一句话任务"开始:别写需求文档,直接说你要什么结果。给足上下文:把数据文件、背景约束直接喂给它,结果会准很多。用多轮追问逼近目标:第一轮拿骨架,后面几轮精修,比一次性写超长 prompt 更有效。结果留档:它生成的脚本、图表、报告都会留在结果区,方便复用和版本对比。


六、小结

对工程/数据分析岗来说,WorkBuddy 最大的价值不是"生成内容",而是把"想法 → 可运行模型 → 决策报告"的链路压缩到同一个对话里。

如果你也在做仿真、优化、数据分析类工作,强烈建议拿一个真实小任务试一遍——你会发现,真正卡住你的从来不是建模能力,而是把模型跑通、调参、出报告那一大堆"体力活",而这些,刚好是它最擅长的。


本文为本人真实使用体验,所用案例来自实际项目场景,欢迎在评论区交流制冷系统优化 / 能源调度相关问题。

喜欢(0)

上一篇

判别一个人懂不懂 agent harness

判别一个人懂不懂  agent harness

下一篇

Trellis 比 superpowers 更强 扒完两个仓库后发现它们根本不在一个抽象层

Trellis 比 superpowers 更强 扒完两个仓库后发现它们根本不在一个抽象层
猜你喜欢