💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥
📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文,算法,机器学习和人工智能学习。
🚀支持:🎁🎁🎁如果觉得博主的文章还不错或者您用得到的话,可以关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!目录
1 概述
本文提出一种确定机组组合的降维半解析动态规划方法,可以与其他经济调度算法相结合,用以解决多种约束条件下的机组组合问题。该方法通过比较各时段负荷及机组参数,剔除各时段下不满足要求的组合状态,从而减少动态规划中的状态点数;根据机组的最小连续运行、停运时间限制,以及机组功率上升、下降速度的约束,剔除了状态点间的无效路径,从而减少了动态规划的路径个数,达到降维的目的;在确定机组启停状态后,再采用解析法进行机组的功率分配,可以大大提高动态规划方法的效率。
2 知识点学习
机组组合问题我们前面都总结过:
电力系统机组组合优化调度是一个复杂的问题,它涉及到在满足电力需求的同时,优化发电机的启停状态以及输出功率,以最小化运行成本、满足系统约束(如功率平衡、机组出力限制、网络传输限制等),并考虑系统的可靠性和稳定性。IEEE 14节点、IEEE 30节点和IEEE 118节点系统模型是电力系统研究中常用的测试系统,用于模拟和验证不同的优化算法和策略。
研究步骤
- 系统建模:
- 网络模型:包括节点、线路、变压器等元件的参数。
- 发电机模型:每台发电机的成本函数(通常是二次函数)、最小/最大出力限制、启停成本、爬坡速率等。
- 负荷模型:各节点的负荷预测值。
- 问题定义:
- 目标函数:通常是最小化总运行成本,包括发电成本和启停成本。
- 约束条件:
- 功率平衡约束:每个节点的注入功率等于负荷。
- 线路传输容量约束:确保线路上的潮流不超过其最大容量。
- 发电机出力约束:每台发电机的输出功率在其最小和最大限制之间。
- 爬坡速率约束:发电机输出功率的变化率有限制。
- 启停时间约束:发电机从停机到启动或从运行到停机需要一定时间。
- 优化算法选择:
- 混合整数线性规划(MILP):将问题中的非线性部分线性化,使用商业求解器(如CPLEX、Gurobi)求解。
- 动态规划:适用于小规模系统,可以处理复杂的约束和状态转移。
- 启发式算法:如遗传算法、粒子群优化、模拟退火等,适用于大规模系统,但可能无法保证找到最优解。
- 拉格朗日松弛法:将复杂约束松弛到目标函数中,通过迭代求解。
- 数据准备与仿真:
- 使用MATLAB、Python(如使用Pyomo库结合CPLEX或Gurobi求解器)等工具进行编程。
- 加载IEEE 14节点、IEEE 30节点或IEEE 118节点的系统数据。
- 设定仿真参数,如时间步长、仿真时长等。
- 结果分析:
- 分析优化后的机组启停计划和出力计划。
- 比较不同算法的性能,如求解时间、成本节约等。
- 评估系统的可靠性和稳定性,如是否满足所有约束条件。
- 优化与改进:
- 根据仿真结果调整算法参数或优化模型。
- 尝试新的优化策略或算法。
3 运行结果
3.1 算例1——IEEE14节点
3.2 算例2——IEEE30节点
3.3 算例3——IEEE118节点
3.4 二阶锥松弛法
%发电机费用曲线 二次函数分段线性化
P_nl = sdpvar(n_gen, n_L, n_T);
% for i = 1: n_gen
for t = 1: n_T
C = [C,
gen_P(gen(:,GEN_BUS),t) == sum(P_nl(:,:,t), 2)+gen(:,GEN_PMIN).*u_state(gen(:,GEN_BUS),t)/baseMVA,
];
% for l = 1: n_L
C = [C,
0 <= P_nl(:,:,t) <= (gen(:, GEN_PMAX)-gen(:, GEN_PMIN))/n_L/baseMVA*ones(1,n_L),
];
% end
end
% end
%%
% 机组开机费用 Cjk
cost_up = sdpvar(n_gen, n_T);
C = [C, cost_up >= 0];
for k = 1: n_T
for t = 1: k-1
C = [C,
cost_up(:,k) >= start_cost(:,t).*(u_state(gen(:,GEN_BUS),k) - sum(u_state(gen(:,GEN_BUS),[k-t: k-1]),2))
];
end
end
for i = 1: n_gen
if (init_state(gen(i,GEN_BUS)) == 0)
C = [C,
cost_up(i,1) >= start_cost(i,init_down(i))*(u_state(gen(i,GEN_BUS),1)-init_down(i)*init_state(gen(i,GEN_BUS)))
];
end
end
%发电机费用曲线 二次函数分段线性化
P_nl = sdpvar(n_gen, n_L, n_T);
% for i = 1: n_gen
for t = 1: n_T
C = [C,
gen_P(gen(:,GEN_BUS),t) == sum(P_nl(:,:,t), 2)+gen(:,GEN_PMIN).*u_state(gen(:,GEN_BUS),t)/baseMVA,
];
% for l = 1: n_L
C = [C,
0 <= P_nl(:,:,t) <= (gen(:, GEN_PMAX)-gen(:, GEN_PMIN))/n_L/baseMVA*ones(1,n_L),
];
% end
end
% end
%%
% 机组开机费用 Cjk
cost_up = sdpvar(n_gen, n_T);
C = [C, cost_up >= 0];
for k = 1: n_T
for t = 1: k-1
C = [C,
cost_up(:,k) >= start_cost(:,t).*(u_state(gen(:,GEN_BUS),k) - sum(u_state(gen(:,GEN_BUS),[k-t: k-1]),2))
];
end
end
for i = 1: n_gen
if (init_state(gen(i,GEN_BUS)) == 0)
C = [C,
cost_up(i,1) >= start_cost(i,init_down(i))*(u_state(gen(i,GEN_BUS),1)-init_down(i)*init_state(gen(i,GEN_BUS)))
];
end
end
👨🎓博主课外兴趣:中西方哲学,送予读者:
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。在我这个专栏记录我有空时的一些哲学思考和科研笔记:科研和哲思。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“真理”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
部分理论引用网络文献,若有侵权请联系博主删除。
4 参考文献
[1]刘严,谭忠富,韩勇,乞建勋. 机组组合优化问题的一种改进的动态规划方法[C]//.中国优选法统筹法与经济数学研究会第七届全国会员代表大会暨第七届中国管理科学学术年会论文集.,2005:374-378.
[2]王成文,韩勇,谭忠富,刘严,杨力俊.一种求解机组组合优化问题的降维半解析动态规划方法(英文)[J].电工技术学报,2006(05):110-116.DOI:10.19595/j.cnki.1000-6753.tces.2006.05.020.
[3]周俊. 机会约束规划下含风电场的机组组合优化[D].广东工业大学,2014.