先定义CSP的核心变量
67-考虑光热电站的综合能源系统优化调度模型 摘要代码主要做的是含有光热电站的综合能源系统优化调度模型共做了四个算例分别对比了目标函数一次、二次、考虑弃风弃光、碳排放等四个算例综合能源系统主要设备包括光热电站、风光机组以及热电联产机组其中对光热电站的建模较为详细约束包括爬坡约束、功率平衡约束等是学习光热电站和综合能源系统的入门级且包括多个算例对比从而可以形成体系供学习理解刷到西北电网去年夏季某周的新闻截图就气笑白天河西走廊的光伏板晒得发烫弃光电量堆得够给兰州城关区开三天空调晚上7点到10点饭点通勤高峰刚结束、空调电视全开的档口火电满负荷还得喊援疆煤支援现货电价一度冲到一块五——风光就像“脾气爆的间歇性朋友”喊它干活的时候摸鱼没人用的时候玩命造这时候带储热罐的光热电站CSP就登场了简直是能源圈的“贴心管家稳定供货商”。今天就扒一个入门级但很全的综合能源系统IES优化调度模型连代码带四个不同算例的对比都有新手直接跟着跑一遍就能搞懂IES调度咋回事CSP在里面为啥香。先搭个架子这套IES有啥宝贝设备别搞太复杂的多能流耦合入门先抓电-热双核心就行毕竟现在国内搞的最多的就是带热用户的园区级IES。模型里放了这几个光伏PV、风电WT间歇性朋友风光大发是烦恼也是潜在省钱项带储热罐的抛物槽式光热电站CSP今天的主角白天可以选“直接发电/把太阳能存进储热罐/一半存一半发”晚上或者风光不够的时候掏储热罐里的熔盐加热水/油发电还能直接抽点高温蒸汽给热用户供暖夏天就抽一部分转制冷不过代码里为了简化先算冬季场景热电联产机组CHP煤改气后园区常用的“以热定电”或者“以电定热”都行但入门选“以热定电”更贴近实际工程供暖不能断电锅炉EB应急补热的白天电价低、弃风光多的时候开把废电变废宝电网、热网可以和大电网买/卖电热网是自己的小区域不用买/卖。入门先看核心代码逻辑CSP建模是重点代码用的是Python的Gurobi库新手如果没有License换成免费的CPLEX Community Edition或者PuLP改改约束变量就行逻辑一样。直接上最关键的CSP约束片段# P_csp_genCSP直接/间接用储热发的电功率MW # Q_csp_col抛物槽集热场收集的太阳热能MW # Q_csp_to_tes集热场存进储热罐的热能MW # Q_tes_to_csp储热罐掏给CSP发电的热能MW # Q_tes_to_load储热罐直接掏给热用户的热能MW # E_tes储热罐里的储热量MWh相当于储能的SOC但这里是热单位 # 约束1集热场的能量守恒——收集的太阳能要么发电要么存 for t in range(T): model.addConstr(Q_csp_col[t] P_csp_gen[t] * eta_csp_gen Q_csp_to_tes[t] slack_q_csp_col[t], namefCSP_col_energy_{t}) # eta_csp_genCSP的热电转换效率一般抛物槽式是0.35-0.4 # slack_q_csp_col松弛变量万一集热场收集的太少Gurobi不会报错但我们会在目标函数里给它加个大惩罚模拟浪费的太阳能可惜但不算弃光弃风考核项 # 约束2储热罐的能量守恒——当前储热上一刻储热存的-掏的-损耗 for t in range(1, T): model.addConstr(E_tes[t] E_tes[t-1] * (1 - delta_tes) Q_csp_to_tes[t-1] * eta_tes_in - Q_tes_to_csp[t-1] / eta_tes_out - Q_tes_to_load[t-1] / eta_tes_out, namefTES_energy_{t}) # delta_tes储热罐的小时损耗率一般保温好的话是0.01-0.02 # eta_tes_in/out储热罐的进/出热效率一般0.95以上 # 约束3储热罐的容量和爬坡约束不能一下子存满/掏光不然熔盐泵坏得快 for t in range(T): model.addConstr(E_tes_min E_tes[t] E_tes_max, namefTES_cap_{t}) model.addConstr(Q_csp_to_tes[t] Q_tes_in_max, namefTES_in_max_{t}) model.addConstr(Q_tes_to_csp[t] Q_tes_to_load[t] Q_tes_out_max, namefTES_out_max_{t})这段代码的核心思想就是把CSP的储热罐当成“热电池”用——白天风光好电价低甚至弃光弃光要扣钱的时候我们尽量让风光自己发电卖如果允许或者自己用不够再让CSP直接发多余的太阳能全存进储热罐晚上风光差电价高的时候掏储热罐发电补缺口顺便掏点补热减少CHP和电锅炉的消耗这俩费钱/费天然气啊。四个算例对比才是灵魂能直观看到CSP的好处算例选的是北方某工业园区冬季典型日24小时热负荷从早8到晚10高其他时间低电负荷早7到晚11高风光白天10-16点高晚上几乎没有。直接上算例设计和对比结果的“人话翻译”算例1最简单的成本模型——目标函数只有一次运行成本一次运行成本就是买天然气给CHP烧的钱从大电网买电的钱-卖给大电网的钱。运行结果CSP白天直接发满电因为光电转换效率固定存起来好像没差不对是因为算例1没考虑弃光弃风考核也没考虑二次成本比如设备启停、爬坡的损耗CHP也只烧最便宜的基荷天然气。风光白天发的电自己用不完就卖给电网但是园区小电网接入口容量有限卖不了多少——算例1总运行成本大概28万块。算例2加了二次成本——目标函数是一次二次二次成本就是CHP的爬坡成本CSP的爬坡成本模拟设备频繁调负荷的维修损耗电锅炉的启停成本。67-考虑光热电站的综合能源系统优化调度模型 摘要代码主要做的是含有光热电站的综合能源系统优化调度模型共做了四个算例分别对比了目标函数一次、二次、考虑弃风弃光、碳排放等四个算例综合能源系统主要设备包括光热电站、风光机组以及热电联产机组其中对光热电站的建模较为详细约束包括爬坡约束、功率平衡约束等是学习光热电站和综合能源系统的入门级且包括多个算例对比从而可以形成体系供学习理解运行结果CSP白天不直接发满了而是发一部分基荷剩下的存进储热罐——晚上风光没了用储热罐慢慢掏出来发电补CHP的基荷调峰缺口不用CHP频繁爬坡CHP爬坡成本挺高的大概每MW·h调峰加200块。算例2总运行成本反而降到了26.5万块——二次成本加了但一次成本降得更多算例3加了弃风弃光考核——目标函数是一次二次考核弃光弃光考核是每MW·h弃光扣500块每MW·h弃风扣600块风考核更严因为风更难预测。运行结果CSP白天集热场直接拉满收集太阳能风光发的电全自己用包括园区电负荷、电锅炉补热实在用不完再给CSP集热场加个辅助电加热器哦不对代码里集热场只有太阳能但可以让CSP白天少发电甚至不发电集热场存的热翻倍晚上掏出来发电补所有缺口连CHP都只烧最低基荷满足热负荷就行——算例3没有弃风弃光总运行成本降到了25.8万块爽啊算例4终极环保模型——目标函数是一次二次考核碳排放成本碳排放成本是每kgCO₂扣0.1块模拟国内碳交易市场的价格烧1m³天然气大概排2kgCO₂。运行结果和算例3差不多但CSP直接掏储热给热用户的比例更高了CHP几乎只烧到满足最低“电热比”以热定电的电热比一般是1.2-1.5的天然气量连电锅炉都只在风光实在用不完的12-14点开——算例4碳排放只有算例1的30%总运行成本略涨一点26.2万块但环保贡献拉满未来碳交易价格涨上去的话肯定赚。最后说点新手踩过的坑储热罐的容量别选太大或太小太大占地方费钱太小存不住多余的太阳能入门选“能存白天集热场收集的40%热能”就行松弛变量的惩罚系数要给够不然Gurobi会为了省一点钱浪费大量的太阳能或者弃光弃风算例对比的时候除了看总运行成本还要看各设备的出力曲线比如算例3的CHP出力是平的说明CSP帮它调峰了这才是CSP的核心价值。这个模型的完整代码我放在GitHub的Gist上了直接搜“含CSP的IES入门调度模型4算例”就能找到新手直接复制粘贴改改风光出力、负荷数据、价格参数就能跑。赶紧去试试吧