本文主要讲述使用MindOpt工具优化智慧楼宇多目标调度问题
视频讲解👈👈👈👈👈👈👈👈👈
一、 案例场景
智慧楼宇多目标调度是指利用智能化技术和优化算法,综合考虑楼宇内多个目标,如能耗最小化、舒适度最大化、设备健康维度等,对楼宇内的各个设备和系统进行调度和管理的过程。
应用场景有:一是商业办公楼,有大量的设备和系统,如照明系统、空调系统、电梯系统等等,通过智慧楼宇多目标调度可实现能源自由调度,以降低能耗和成本,提高舒适度,并延长设备寿命。
二是酒店和旅游业,智慧楼宇多目标调度可用于优化客房的能源使用,提高客人住房舒适度,同时还可通过灵活调度负荷,参与能源市场,实现能源成本的优化。
三是医疗机构,通常需要保持稳定的室内环境,如室内的温度、湿度等,并确保医疗设备的正常运行,智慧楼宇多目标调度可以帮助医疗机构实现能源的优化调度,保证室内环境舒适的同时,确保医疗设备的正常运行和设备寿命的延长。
其次还有大型商场和购物中心,以及本次讲述虚拟电厂的场景。
二、 虚拟电厂
作为一个区域性多能源聚合形式,实现了可再生能源大量接入电力系统运行,推动城市能源绿色高效发展。有效聚合电源、负荷、储能等各类资源,参与电力市场,响应价格信号,为电网提供调峰、调频、调压与备用等辅助服务。
总的来说,结合多个分布式光组合系统形成一个虚拟电厂。通过集中调度虚拟电厂可在电力市场中像传统电厂一样进行电力交易和提供电力服务。
在实际的情况下,考虑去电厂的问题难点主要包括两点:一是不确定性,可再生能源、储能以及负荷等单独运行时,电容量较小,并具有较大随机性、波动性、间歇性。比如在发电功率上,从生产原理来看,光伏、风电的发电和天气息息相关,具有不稳定性;还有在用电负荷上,用户端用电规律会随着时间变化;同时不同的用电场景,比如居民楼、商业楼、写字楼等具有不同的负荷特性。
二是多目标优化,在并网状态下,虚拟电厂与大电网同步运行,在过往的状态下,虚拟电厂需要自动控制电压和频率的平衡。在用电设备可控的情况下,可以联合调解用电负荷和智能设备,实现虚拟电厂内部设备的协同和电网的互动。但是在这个案例中,为了不影响居民或者产业正常用电,我们希望在不消减负荷需求的情况下,通过控制虚拟电厂的储能单元,确保电力系统经济低碳安全的运行。
三、 数学规划
智慧楼宇多目标调度也可使用数学规划的方法。数学规划是一种数据优化方法,主要是寻找变量的取值在特定的约束情况下,使决策目标得到一个最大或者最小的决策。数学规划最常见的有线性规划以及整数规划,还有非线性规划。使用数学规划的方法,首先是需确定问题的目标、约束以及变量的取值范围,建立数学模型,然后将数学模型转化为代码进行求解,最后得出的结果就是最优决策。在求解过程中会使用到优化解器工具,可以帮助计算大规模数学规划问题。
四、 问题描述
在保证社区负荷需求的情况下,通过储能设备的指令控制,以用电经济性、环保性和对电网稳定性为综合目标的一直调度场景。社区用电来源可以包括光伏设备发电、储能设备放电和向公网购买。我们考虑多时段、多目标优化问题,通过资源协调利用,在满足设备功率约束和能量状态条件约束下提供调度决策参考。
主要考虑以下几点:一是调度需确保社区的负荷需求得到满足,确保供电能满足社区的用电需求。
二是调度使用储存设备的指令控制,包括充电和放电的操作,通过合理控制储存设备的充放电,可以优化用电经济性、环保性和电网稳定性。
三是考虑社区的用电来源,光伏设备发电也是一个重要因素,可合理利用光伏设备的发电能力,满足一部分社区的负荷需求。
四是当社区的负荷需求,无法通过储能设备和光伏设备满足时,需要从公网购买电力来弥补不足。
五是考虑到不同时段用电情况和目标的多样调度需要进行多时段多目标的优化,以及在不同时段中平衡经济性、环保性。
六是电网冷链状态约束,以确保储能设备的正常运营。
五、代码解析
在案例中,我们对这个问题进行数学建模和代码转化,用到MindOpt云上建模求解平台(一个页面版的线上开发环境,可在线的开发调试代码)、以及达摩院研发的建模语言MindOpt APL,与学公式非常贴近。
工具:
- MindOpt Studio 云建模平台,在线开发调试,免下载
- MindOpt APL(MAPL)建模语言编程,代数建模语言,语法与数学公式相近
- MindOpt优化求解器:帮我们求解大规模数据的数学规划问题。
声明集合
set I := 1..2;
定义建筑物集I
为 1 和 2。set T := 1..24;
定义时间周期集T
为 1 到 24。set T0 := 1..23;
定义时间周期集T0
为 1 到 23,用于表示T
时间段内的状态点。set T1 := 1..25;
定义时间周期集T1
为 1 到 25,用于表示T
时间段前后的状态点。
参数定义
- 负荷矩阵
load_matrix[I*T]
:
- 定义了每个建筑物在各个时间段的负荷需求。
- 单位电价
price[T]
:
- 定义了每个时间段的电价。
- 碳排放价格
emission[T]
:
- 定义了每个时间段的碳排放价格。
- 充放电效率
charge_efficiency
,discharge_efficiency
:
- 分别定义了充电效率和放电效率。
- 储能单次充放电限制
nominal_power
:
- 定义了储能设备单次充放电的最大功率限制。
- 基准值
direct_cost_base
,emission_charge_base
,ramping_charge_base
:
- 定义了在不使用储能的情况下,直接成本、碳排放成本和爬坡成本的基准值。
声明变量
var x[I*T] >= 0 <= nominal_power;
充电变量,表示每个建筑物在各个时间段的充电功率。var y[I*T] <= 0 >= - nominal_power;
放电变量,表示每个建筑物在各个时间段的放电功率。var soc[I*T1] >= 0 <= 1;
储能设备状态(State-of-Charge),表示每个建筑物在各个时间段的状态。var vu[I*T] >= 0;
楼宇净消费电量,表示每个建筑物在各个时间段的净用电量。var mu[T] >= 0;
区域净消费电量,表示整个区域在各个时间段的净用电量。var w[T0] >= 0;
区域爬坡电量,表示整个区域在相邻时间段的净用电量变化。
声明目标
优化目标是由三部分组成,每部分权重为1/3,使得他们在计算平均成本时具有同等的重要性。第一部分是电力成本,对于每个时段的净消费电量mu*电价/直接电力成本进行加权求和,第二部分是碳排放成本,计算每个楼宇在每个时间段的净消费电量vu*碳排放价格/碳排放成本的基本值进行加权求和。第三部分是功率变化成本,对哪个时段的去功率变化w/功率变化成本的基本值,通过加权和整合三个不同指标来最小化智慧楼宇调度的总平均成本。
声明约束
- 对于每个时间点
t
,区域净消费电量mu[t]
减去所有建筑物的总充电功率sum {i in I} x[i,t]
再减去所有建筑物的总放电功率- sum{i in I} y[i,t]
必须大于等于所有建筑物在该时间点的总负荷需求sum{i in I} load_matrix[i, t]
。
示例: 假设 t=1
,则有:
mu[1]
: 区域净消费电量。x[1,1] + x[2,1]
: 所有建筑物在t=1
的总充电功率。y[1,1] + y[2,1]
: 所有建筑物在t=1
的总放电功率。load_matrix[1,1] + load_matrix[2,1]
: 所有建筑物在t=1
的总负荷需求。
因此,约束条件变为: [ mu[1] - (x[1,1] + x[2,1]) - (y[1,1] + y[2,1]) >= (load_matrix[1,1] + load_matrix[2,1]) ]
- 对于每个建筑物
i
和每个时间点t
,楼宇净消费电量vu[i,t]
减去该建筑物在该时间点的充电功率x[i,t]
加上放电功率y[i,t]
必须大于等于该建筑物在该时间点的负荷需求load_matrix[i, t]
。
示例: 假设 i=1
且 t=1
,则有:
vu[1,1]
: 第 1 座建筑物在t=1
的净消费电量。x[1,1]
: 第 1 座建筑物在t=1
的充电功率。y[1,1]
: 第 1 座建筑物在 `t=1] 的放电功率。load_matrix[1,1]
: 第 1 座建筑物在t=1
的负荷需求。
因此,约束条件变为: [ vu[1,1] - (x[1,1] + y[1,1]) >= load_matrix[1,1] ]
- 对于每个时间点
t
(除了最后一个时间点),区域爬坡电量w[t]
必须大于等于区域净消费电量从t
到t+1
的变化量的绝对值。
示例: 假设 t=1
,则有:
w[1]
: 第 1 个时间点的区域爬坡电量。mu[2]
: 第 2 个时间点的区域净消费电量。mu[1]
: 第 1 个时间点的区域净消费电量。
因此,约束条件变为: [ w[1] - (mu[2] - mu[1]) >= 0 ] [ w[1] - (mu[1] - mu[2]) >= 0 ]
这意味着 w[1]
必须大于等于 |mu[2] - mu[1]|
。
- 对于每个建筑物
i
,储能设备在第 1 个时间点的状态soc[i,1]
必须为 0。
示例: 假设 i=1
,则有:
soc[1,1]
: 第 1 座建筑物在第 1 个时间点的状态。
因此,约束条件变为: [ soc[1,1] == 0 ]
- 对于每个建筑物
i
和每个时间点t
,储能设备在下一个时间点的状态soc[i,t+1]
等于当前时间点的状态soc[i,t]
加上该时间点的充电功率乘以充电效率charge_efficiency
再加上放电功率除以放电效率discharge_efficiency
。
示例: 假设 i=1
且 t=1
,则有:
soc[1,2]
: 第 1 座建筑物在第 2 个时间点的状态。soc[1,1]
: 第 1 座建筑物在第 1 个时间点的状态。x[1,1]
: 第 1 座建筑物在第 1 个时间点的充电功率。y[1,1]
: 第 1 座建筑物在第 1 个时间点的放电功率。charge_efficiency
: 充电效率。discharge_efficiency
: 放电效率。
因此,约束条件变为: [ soc[1,2] == soc[1,1] + x[1,1] * charge_efficiency + y[1,1] / discharge_efficiency ]
结果解析
然后就可用求解指令进行求解。最后得出的结果是0.52,我们在使用储能设备对比不使用储能设备的情况下节省了大概48%的成本。
六、 内容回顾
本期主要讲在虚拟电厂场景下优化智慧楼宇多目标调度问题——最小化调度的平均总成本。使用到的工具是MindOpt求解平台,网址是opt.aliyun.com。
获取案例源代码