基于MATLAB/yalmip/cplex 的机组最优组合

这篇具有很好参考价值的文章主要介绍了基于MATLAB/yalmip/cplex 的机组最优组合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、绪论

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.符号说明

基于MATLAB/yalmip/cplex 的机组最优组合

2.3.模型建立

根据上述变量定义,建立含安全约束的机组最优组合(SCUC)模型如下:
1)目标函数
目标函数即为最小化成本,包括发电带来的煤耗成本和机组启停产生的开停机成本。
基于MATLAB/yalmip/cplex 的机组最优组合
其中,机组的煤耗函数可用出力的二次函数表述:基于MATLAB/yalmip/cplex 的机组最优组合
2)等式约束条件
此即为系统的功率平衡约束
基于MATLAB/yalmip/cplex 的机组最优组合
3)不等式约束条件
a)热备用约束
基于MATLAB/yalmip/cplex 的机组最优组合
b)机组出力约束
基于MATLAB/yalmip/cplex 的机组最优组合
c)机组爬坡约束
基于MATLAB/yalmip/cplex 的机组最优组合
d)机组起停时间约束
基于MATLAB/yalmip/cplex 的机组最优组合
e)起停费用约束
基于MATLAB/yalmip/cplex 的机组最优组合
f)潮流安全约束基于MATLAB/yalmip/cplex 的机组最优组合
当机组启动最小出力大于爬坡速率,约束将使得所有关停的机组都无法启动,因此改写为

基于MATLAB/yalmip/cplex 的机组最优组合
基于MATLAB/yalmip/cplex 的机组最优组合
其中,为了简化,可以将启动最大升速率和停机最大降速率都取为

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

2.4.模型简化

由上小节构建的机组组合优化模型,煤耗成本采用二次函数,当系统规模较大时(如节点数超过1000),求解起来将消耗大量时间。因此我们可以对原模型进行线性化处理。
将煤耗函数分段线性化,分为m段,将原模型的替换为
基于MATLAB/yalmip/cplex 的机组最优组合
其中,代表分段线性化后煤耗函数各段斜率,表示机组开机并以最小出力运行产生的煤耗,为机组分段的出力,满足
基于MATLAB/yalmip/cplex 的机组最优组合

三、算例介绍

校验程序的算例基于IEEE-30节点标准测试系统,系统接线图如图1。系统包30个节点,6台发电机组。要求确定系统最优机组组合,使得系统各机组总运行成本(煤耗成本+启停成本)最小化。
基于MATLAB/yalmip/cplex 的机组最优组合
已知:给定系统数据包括如下:
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两个求解器的使用,代码在我的资源可找。文章来源地址https://www.toymoban.com/news/detail-412199.html

到了这里,关于基于MATLAB/yalmip/cplex 的机组最优组合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于线性准则的考虑风力发电不确定性的分布鲁棒优化机组组合(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码及文章讲解

    2024年02月12日
    浏览(189)
  • MATLAB|基于改进二进制粒子群算法的含需求响应机组组合问题研究(含文献和源码)

    目录 主要内容      模型研究    1.改进二进制粒子群算法(BPSO) 2.模型分析   结果一览    下载链接 该程序复现《A Modified Binary PSO to solve the Thermal Unit Commitment Problem》,主要做的是一个考虑需求响应的机组组合问题,首先构建了机组组合问题的基本模型,在此基础上

    2024年02月19日
    浏览(27)
  • 双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码)

            上一篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法: 双层优化入门(1)—基本原理与求解方法         这篇博客将介绍使用yalmip的双层优化问题的求解方法。         通过调用yalmip工具箱中的KKT函数,可以直接求出优化问题的KKT条件,省

    2024年02月07日
    浏览(30)
  • 还在被机组组合问题困扰?快来试试这个用处极大的考虑安全约束机组组合模型!

    前言 所谓安全约束机组组合,即在满足电力系统安全性约束的条件下,以系统购电成本最低等为优化目标,制定多时段的机组开停机计划。 机组组合(Unit commitment, Uc)优化问题旨在电力系统运行时,安全给定以及调整发电机组的启/停与实时出力,使发电机组的总运行成本最小

    2024年03月27日
    浏览(43)
  • 求解器解的最优性 | cplex、gurobi和COPT求解器求解出来的一定是最优解吗?有理论证明吗?

    作者: 刘兴禄,清华大学,清华-伯克利深圳学院博士在读 欢迎关注我们的微信公众号 运小筹 之前有人在【运小筹读者2群】里问:cplex、gurobi和COPT求解器求解出来的一定是最优解吗?有理论证明什么的吗? 我给除了下面的回答,我觉得对大家会有用,因此稍加整理分享一下

    2024年02月06日
    浏览(32)
  • 【最优化算法】基于【MATLAB】的最速下降仿真

    无约束问题的求解过程一般都是通过一系列的一维搜索来实现,搜索方向的不同,形成了不同的最优化方法。这篇文章从最速下降法入手,来进行搜索。 最速下降法又叫梯度法,通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。如果我们需要求解损

    2024年02月05日
    浏览(32)
  • 【Matlab】在Matlab中安装优化工具yalmip的方法

    最近博主想做一些关于多目标优化的问题,因为之前对Matlab有一定经验,所以直接在网上查找了如何在Matlab上实现多目标优化的文献,看到有人提到了yamip,于是博主就试着在Matlab中安装yamip,将其中遇到的问题和一些经验和大家分享一下。 1、下载yamip 网上有朋友提到从yal

    2024年01月17日
    浏览(31)
  • 【最优化算法】基于【MATLAB】的共轭梯度法【Conjugate Gradient】分析与推导

    🚀个人主页:欢迎访问Ali.S主页 📆 最近更新:2022年7月19日 ⛽ Java框架学习系列:Mybatis框架 ⛳ Java基础学习系列:面向对象飞机大战 🏆 通信仿真学习系列:【硬件】【通信】【MATLAB】【最优化】 🍄 个人简介:通信工程本硕🌈、Java程序员🚴。目前只会CURD😂 💌 点赞 👍

    2023年04月19日
    浏览(29)
  • Matlab【旅行商问题】—— 基于模拟退火算法的无人机药品配送路线最优化

    某市引进一架专业大型无人机用于紧急状态下的药品投递,每个站点只能投放一次,可选择指派任意站点的无人机起飞出发完成投递任务,但必须在配送完毕后返回原来的站点。站点地理位置坐标(单位为公理)如下图所示。每个站点及容纳的病人数量见附件.mat数据,现要求

    2024年02月12日
    浏览(37)
  • 基于拉格朗日-遗传算法的最优分布式能源DG选址与定容(Matlab代码实现)

    目录 1 概述 2 数学模型 2.1 问题表述 2.2 DG的最佳位置和容量(解析法) 2.3 使用 GA 进行最佳功率因数确定和 DG 分配  3 仿真结果与讨论  3.1 33 节点测试配电系统的仿真 3.2 69 节点测试配电系统仿真  4 结论 为了使系统网损达到最低值,人们提出了多种方法来确定分布式发电机

    2024年02月15日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包