文章目录

  • 一、绪论
    • 1.研究目的
    • 2.背景概述
  • 二、机组组合优化数学模型
    • 2.1.问题分析
    • 2.2.符号说明
    • 2.3.模型建立
    • 2.4.模型简化
  • 三、算例介绍
  • 总结

一、绪论

1.研究目的

(1).熟练掌握MATLAB及CPLEX的使用。
(2).初步了解优化问题的基本形式和求解方法。
(3).掌握对既定数学模型进行编程求解的能力。
(4).掌握运用Cplex解决电力系统机组组合(含经济调度)问题的方法。

2.背景概述

MATLAB是是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,是科研中不可缺少的建模工具。
IBM CPLEX ILOG是IBM公司开发的优化引擎,可用于求解大规模数学规划问题。通过在MATLAB中调用CPLEX工具箱,就能方便地利用MATLAB平台进行模型的求解,并为模型文件提供了求解、分析、操作及写入/读出的方法。同时通过引入Yalmip工具箱,能够大大简化程序格式,提高程序可读性。
为了实现电力供需的平衡,并最合理地利用发电资源,预先对发电机组的启停和出力进行调度安排就是非常必要的,这就是机组组合问题(Unit Commitment, UC)。机组组合问题问题是一类混合整数规划问题(Mixed Integer Programming, MIP),能过通过MATLAB/CPLEX得到求解。
评注:现在做电力系统优化最主流的方法就是Matlabp+CPlex(含Yalmip)

二、机组组合优化数学模型

2.1.问题分析

机组组合问题要求基于已知的系统数据,求解计划时间内机组决策变量的最优组合,使得系统总成本达到最小。该问题的决策变量由两类,一类是各时段机组的启停状态,为整数变量,0表示关停,1表示启动;另一类是各时段机组的出力,为连续变量。
机组组合问题属于规划问题,即要在决策变量的可行解空间里找到一组最优解,使得目标函数尽可能取得极值。对于混合整数规划,常用的方法有分支定界法,benders分解等。CPLEX提供了快速的MIP求解方法,对于数学模型已知的问题,只需要按照程序规范在MATLAB中编写程序化模型,调用CPLEX求解器,即可进行求解。
下文介绍机组组合优化的数学模型。

2.2.符号说明

2.3.模型建立

根据上述变量定义,建立含安全约束的机组最优组合(SCUC)模型如下:
1)目标函数
目标函数即为最小化成本,包括发电带来的煤耗成本和机组启停产生的开停机成本。

其中,机组的煤耗函数可用出力的二次函数表述:
2)等式约束条件
此即为系统的功率平衡约束

3)不等式约束条件
a)热备用约束

b)机组出力约束

c)机组爬坡约束

d)机组起停时间约束

e)起停费用约束

f)潮流安全约束
当机组启动最小出力大于爬坡速率,约束将使得所有关停的机组都无法启动,因此改写为



其中,为了简化,可以将启动最大升速率和停机最大降速率都取为


计算潮流的转移分布因子矩阵,将改写为

其中描述节点i的注入功率对于线路l产生的影响。则简化模型的变量为和,在满足-,-的约束下,最小化目标函数。(转移分布因子矩阵计算较为繁琐,开始时可先忽略此约束)

2.4.模型简化

由上小节构建的机组组合优化模型,煤耗成本采用二次函数,当系统规模较大时(如节点数超过1000),求解起来将消耗大量时间。因此我们可以对原模型进行线性化处理。
将煤耗函数分段线性化,分为m段,将原模型的替换为

其中,代表分段线性化后煤耗函数各段斜率,表示机组开机并以最小出力运行产生的煤耗,为机组分段的出力,满足

三、算例介绍

校验程序的算例基于IEEE-30节点标准测试系统,系统接线图如图1。系统包30个节点,6台发电机组。要求确定系统最优机组组合,使得系统各机组总运行成本(煤耗成本+启停成本)最小化。

已知:给定系统数据包括如下:
1)线路网络参数
2)机组参数
3)各节点各时段负荷曲线(24小时)
注意:附件中的数据均基于标幺化系统得到,因此电力电量参数、网络参数等都为标幺值,无量纲。还要注意附件中煤耗系数a,b,c的单位为吨,因此计算煤耗成本还需换算为价格,设燃煤价格为100$/吨。
求解:机组组合结果,即机组各时段启停计划、机组各时段最优出力,以及内含的各时段的直流潮流等。

系统参数部分代码如下(示例):

%% 系统参数
%所有参数均用有名值表示
paragen=xlsread('~~~','机组参数');
loadcurve=xlsread('~~~','负荷曲线');
netpara=xlsread('~~~','网络参数');
branch_num=size(netpara);%网络中的支路
branch_num=branch_num(1,1);
PL_max=netpara(:,6);%线路最大负荷
PL_min=netpara(:,7);%线路最小负荷
limit=paragen(:,3:4);%机组出力上下限//limit(:,1)表示上限,limit(:,2)表示下限
para=paragen(:,5:7);%成本系数//para(:,1)表示系数a,para(:,2)表示系数b,para(:,3)表示系数c。
price=100;
para=price*para;%价格换算
lasttime=paragen(:,9);%持续时间
Rud=paragen(:,8);%上下爬坡速率//因题中简化上坡下坡速度相同
H=paragen(:,10);%启动成本
J=paragen(:,11);%关停成本
u0=[1 1 1 1 1 1];%初始状态
%% 规模变量
%机组数
gennum=size(paragen);
gennum=gennum(1,1);
%节点数
numnodes=size(loadcurve);
numnodes=numnodes(1,1)-1;
%时间范围
T=size(loadcurve);
T=T(1,2)-1;
%线性化分段数(按需要更改)
m=4;
%各时刻节点总负荷
PL=loadcurve(numnodes+1,2:T+1);
%%
%决策变量
u=binvar(gennum,T,'full');%状态变量
p=sdpvar(gennum,T,'full');%即各机组实时功率p(i,t)
Ps=sdpvar(gennum,T,m,'full');%分段出力
costH=sdpvar(gennum,T,'full');%启动成本
costJ=sdpvar(gennum,T,'full');%关停成本
sum_PowerGSDF=sdpvar(T,branch_num,numnodes,'full');%发电机的输出功率转移总和

求解部分代码如下(示例):

%% 求解
ops=sdpsettings('solver', 'cplex');
result=solvesdp(st,totalcost);

总结

以上就是今天要讲基于MATLAB/yalmip/cplex 的机组最优组合的内容,本文仅仅简单介绍了yalmip/cplex两个求解器的使用,代码在我的资源可找。

基于MATLAB/yalmip/cplex 的机组最优组合相关推荐

  1. 基于MATLAB yalmip/cplex/gurobi编程实现综合能源系统规划、优化调度等。 含风电、光伏、热电联产、电锅炉等各种设备模型

    基于MATLAB yalmip/cplex/gurobi编程实现综合能源系统规划.优化调度等. 含风电.光伏.热电联产.电锅炉等各种设备模型,适合初学者学习,没有涉及复杂的调度或规划原则,是个有一定基 ...

  2. 【电力系统】基于matlab YALMIP+CPLEX求解带储能的微电网优化调度问题【含Matlab源码 2175期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[电力系统]基于matlab YALMIP+CPLEX求解带储能的微电网优化调度问题[含Matlab源码 2175期] 点击上面蓝色字体, ...

  3. 基于MATLABCPLEX 的机组最优组合,成功求解表格化,图示化的机组组合结果(学习参考)

    背景概述 MATLAB是是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,是科研中不可缺少的建模工具. IBM CPLEX ...

  4. 程序基于MATLAB yalmip 开发,做了一个简单的微网优化调度模型,模型中含有蓄电池储能、风电、光伏等发电单元,程序运行结果良好

    微网 优化调度 机组组合 YALMIP cplex 编程语言:MATLAB平台 主题:基于YALMIP 的微网优化调度模型 内容简介:程序基于MATLAB yalmip 开发,做了一个简单的微网优化调 ...

  5. Matlab程序代码,智能微电网PSO优化算法,多目标调度,粒子群算法,综合能源系统优化,机组最优组合,光伏出力预测

    Matlab程序代码,智能微电网PSO优化算法,多目标调度,粒子群算法,综合能源系统优化,机组最优组合,光伏出力预测,神经网络简单应用,多目标优化,冷热电联供型综合能源系统优化调度模型,求解采用的是M ...

  6. 一次调频matlab仿真,基于Matlab的大型火电机组一次调频特性仿真.pdf

    第 33 卷 第 14 期 电 网 技 术 Vol. 33 No. 14 2009 年 7 月 Power System Technology Jul. 2009 文章编号:1000-3673 (20 ...

  7. Matlab+YALMIP+CPLEX解决带储能的微电网调度优化

    Matlab+YALMIP+CPLEX解决带储能的微电网优化调度问题,以微电网运行成本最小为目标函数,能量设备包含风电.光伏以及蓄电池,同时考虑到电价和与电网的交互,约束条件包含蓄电池SOC约束.交换 ...

  8. 【微电网优化】基于matlab YALMIP求解微网(光伏+风电+蓄电池+微电网+柴油机)优化调度问题【含Matlab源码 2266期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[微电网优化]基于matlab YALMIP求解微网(光伏+风电+蓄电池+微电网+柴油机)优化调度问题[含Matlab源码 2266期] ...

  9. MATLAB+yalmip+cplex 整数规划

      整数规划问题的解决实践.本文将简单介绍整数规划问题是什么,如何配置环境以及如何在MATLAB上通过工具箱yalmip调用外部解析器cplex解决整数规划问题. 文章目录 1. 整数规划问题 2. ...

最新文章

  1. 新松机器人BG总裁高峰_新松与民航物流公司签署战略合作协议
  2. Cortex M3寄存器组
  3. RTOS原理及功能简介
  4. 用户画像-撸一部分代码啊
  5. Spring核心之对 IOC的理解
  6. 命令行下mysql新建用户及分配权限
  7. [Java] 蓝桥杯ADV-194 算法提高 盾神与积木游戏
  8. Java将对象保存到文件中/从文件中读取对象
  9. 知识图谱表示学习-TransE算法
  10. java8新特性-过滤
  11. 联想电脑无法进入计算机,联想电脑进不去主界面怎么办
  12. android 悬浮球简书,Android-悬浮窗效果FloatingView
  13. 解读PMP考点:质量管理中规划质量、实施质量保证、实施质量控制的对比
  14. 湖南天才少女姚婷:刚毕业就被华为156万年薪邀请,来历不简单
  15. 华硕主板Z97-A无法识别intel M.2 NVME固态硬盘的解决方案
  16. 用计算机进行文本信息的加工处理,前面我们已经学了用计算机进行文本信息的加工与表达过程.ppt...
  17. 计算机网络第一章笔记呕心沥血之作 值得收藏
  18. WEB前端关于SPA、MPA的区别
  19. python读word文档计算字数,Python 实现word count 简单计算源代码中的字符数、词数、行数。...
  20. 京东主图视频上传,如何关联商品投放?

热门文章

  1. DIJ(单源次短路) - Two Paths - HDU 6181
  2. 1637_fgets函数的功能
  3. axios(尚硅谷)
  4. Android实现渐色变圆形
  5. JavaScript的pop()
  6. 最优化学习 最速下降法(steepest Descent)
  7. LruCache源码浅析
  8. WinSCP 以预设密码进行验证 拒绝访问
  9. DP(动态规划)基础
  10. 前序遍历、中序遍历、后序遍历