第三章 优化理论基础:线性规划、混合整数线性规划、非线性规划基础、求解器介绍
3.1 为什么优化理论是“多能互补”的基石?
做多能互补系统,说白了就是跟“不确定性”和“经济性”较劲。你想想看,光伏出力看天吃饭,储能充放电有寿命损耗,燃气轮机启停有成本,负荷侧还有各种用能需求……这么多变量搅在一起,怎么找到那个“最省钱”或者“最环保”的运行方案?
嗯,这就是优化理论要干的事。我个人习惯把优化问题拆成三块:目标函数(你想最大化什么?利润?还是可再生能源消纳率?)、决策变量(你能控制什么?机组启停?储能功率?)、约束条件(设备容量限制?功率平衡?)。这三块搭好了,剩下的就是数学求解的事。
3.2 线性规划(LP)—— 入门级但最常用
线性规划,我理解就是“所有关系都是直线”。目标函数是线性的,约束条件也是线性的。比如你有一个微电网,光伏和储能联合供电,目标是让总运行成本最低。光伏发电成本几乎为零,储能放电有损耗成本,那最优解大概率是“光伏能发多少发多少,不够的再让储能补”。
我在项目中遇到过一个小型工业园区,用线性规划做日前调度,模型跑起来飞快,几秒钟就出结果。但要注意,线性规划要求变量是连续的,不能有“开/关”这种离散状态。
# 一个简单的线性规划示例(Python + PuLP)
from pulp import *
# 定义问题
prob = LpProblem("Min_Cost", LpMinimize)
# 决策变量(连续)
x1 = LpVariable("PV_Power", 0, 100) # 光伏出力,0-100kW
x2 = LpVariable("Battery_Power", -50, 50) # 储能功率,负值表示充电
# 目标函数:最小化总成本
prob += 0.1 * x1 + 0.2 * x2 # 假设光伏成本0.1元/kWh,储能成本0.2元/kWh
# 约束条件:功率平衡
prob += x1 + x2 == 80 # 负荷需求80kW
# 求解
prob.solve()
print(f"光伏出力: {value(x1)} kW, 储能出力: {value(x2)} kW")
3.3 混合整数线性规划(MILP)—— 更贴近工程实际
线性规划有个硬伤:它处理不了“是/否”的问题。比如燃气轮机要不要启动?储能要不要在某个时段充电?这些都需要整数变量(0或1)。混合整数线性规划,就是在线性规划的基础上,允许部分变量取整数值。
你想想看,一个多能互补系统里,设备启停、档位切换、购售电状态……全是整数变量。所以MILP才是工程界的“主力选手”。我做过一个区域综合能源项目,包含CHP、电锅炉、储热罐,模型里有上百个整数变量,求解时间从几秒到几分钟不等。
| 变量类型 | 典型应用场景 | 求解难度 |
|---|---|---|
| 连续变量 | 光伏出力、储能功率、购电量 | 容易 |
| 整数变量(0-1) | 机组启停、储能充放电状态 | 中等 |
| 整数变量(一般整数) | 变压器档位、机组台数 | 较难 |
3.4 非线性规划(NLP)—— 更精确但更“难搞”
现实世界哪有那么多直线?设备效率随负载率变化、管道压降与流量平方成正比、电池内阻随温度变化……这些都是非线性关系。非线性规划就是用来处理这些“弯弯绕绕”的。
但说实话,我在实际项目中尽量回避非线性。为什么?因为非线性规划求解慢,而且容易陷入局部最优解。你辛辛苦苦建了个模型,结果求解器告诉你“找到了最优解”,但实际可能只是个局部最优,离全局最优差得远。
我的经验是:能线性化就线性化。比如把效率曲线分段线性化,或者用二进制变量表示不同工况。实在不行,再用非线性规划,而且一定要用全局优化求解器(比如BARON、SCIP)。
# 一个简单的非线性规划示例(Python + SciPy)
from scipy.optimize import minimize
# 目标函数:设备效率的非线性函数
def objective(x):
return 0.5 * x[0]**2 + 0.3 * x[1]**2 + 0.1 * x[0] * x[1]
# 约束条件
def constraint(x):
return x[0] + x[1] - 100 # 功率平衡
# 初始猜测
x0 = [50, 50]
# 求解
sol = minimize(objective, x0, constraints={'type': 'eq', 'fun': constraint})
print(f"最优解: {sol.x}")
3.5 求解器介绍—— 你的“数学引擎”
模型建好了,谁来算?求解器就是干这个的。市面上求解器很多,我按使用场景给你分个类:
- 开源求解器: 适合学习和小规模问题。比如
PuLP(LP/MILP)、SCIP(MILP/NLP)、IPOPT(NLP)。优点是免费,缺点是求解大规模问题慢。 - 商业求解器: 适合工程实战。比如
Gurobi、CPLEX、MOSEK。速度快、稳定性好,但需要付费。我所在的公司买了Gurobi的学术版,算一个1000个变量、500个约束的MILP,通常几秒就搞定。 - 专用求解器: 针对特定问题优化。比如
BARON专攻全局非线性优化,HiGHS专攻大规模线性规划。
我个人习惯是:先用开源求解器快速验证模型正确性,再用商业求解器跑正式结果。这样既省钱又高效。
3.6 本章知识体系图
下面这张图帮你理清本章的核心逻辑:
3.7 本章小结
优化理论不是纸上谈兵,它是多能互补系统从“能运行”到“运行得好”的桥梁。线性规划帮你快速入门,混合整数线性规划解决工程中的离散决策,非线性规划处理更精细的物理模型。求解器则是你的“计算引擎”,选对了事半功倍。
嗯,这一章的内容就到这里。记住:模型是骨架,求解器是肌肉,工程经验才是灵魂。下一章我们会把这些理论应用到具体的多能互补场景中,到时候你会看到这些数学工具到底有多强大。