机会约束转化为确定性约束-- 样本均值法

2024-08-31 15:12

本文主要是介绍机会约束转化为确定性约束-- 样本均值法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 当涉及到新能源消纳的机会约束规划时,我们需要深入理解其背后的原理和采用的方法。以下是对上文内容的更详细且更贴切的展开解释:

机会约束转化为确定性约束-- 样本均值法代码获取戳此处代码获取戳此处代码获取戳此处

新能源消纳的机会约束

新能源(如风电、光伏等)的出力具有显著的波动性和不确定性,这使得电网运营商在规划电力生产和消纳时面临挑战。机会约束规划(Chance-Constrained Programming, CCP)提供了一种处理这种不确定性的框架,它允许在给定概率水平下满足某些约束条件。

忽略概率较小的极端场景

在机会约束规划中,通常不是所有可能的场景都需要被考虑。特别是那些概率极低但可能产生极端影响的场景,在规划时可能会被忽略或赋予较低的权重。这样做的原因是为了简化问题,减少计算量,并同时保持系统的鲁棒性和经济性。

场景采样与混合整数线性规划

为了将不确定的新能源出力转化为可处理的确定性问题,我们采用场景采样的方法。通过生成一系列代表性的场景(即可能的出力情况),我们可以将原始的机会约束优化问题转化为基于这些场景的混合整数线性规划(MILP)问题。MILP允许我们同时处理线性约束和整数变量,这在电力系统优化中非常常见。

场景指示变量与Big-M形式

在将机会约束转换为MILP问题时,我们通常会引入场景指示变量。这些变量用于标识每个场景是否被选中,并据此调整相关的约束条件。Big-M形式是一种常见的转换方法,它通过在约束条件中引入一个大的常数M来允许约束条件在某种程度上的松弛。

然而,Big-M参数的取值是一个关键问题。如果M的值设置得太大,约束条件可能会变得过于松弛,导致求解结果的精度降低;如果M的值设置得太小,约束条件可能会变得过于严格,使得问题无解或求解困难。此外,当场景指示变量取值为1时,Big-M形式仍会保留与该场景相关的所有约束,这会增加问题的规模并降低求解的速率。

双线性形式近似

为了克服Big-M形式的局限性,可以采用双线性形式来近似机会约束。双线性形式是一种更为灵活的数学表达,它允许约束条件中的变量以乘积的形式出现。通过精心选择双线性项的系数和结构,我们可以更准确地捕捉新能源出力的不确定性,并在保持问题规模可控的同时提高求解的精度和效率。

306机会约束转化为确定性约束-- 样本均值法
新能源消纳机会约束通过忽略部分概率较小的极端场景,同时保证问题的鲁棒性和经济性。机会约束可通过场景采样的方式近似,将机会约束优化问题转换为基于场景的混合整数线性规划问题 。在采样后,可通过引入场景指示变量 将机会约束转换 为 Big-M 形式。Big-M 形式可通过采样平均近似算法生成任意多个场景进行计算,但 Big-M 参 数的取值将会影响约束是否是一个紧的形式,进而影响求解精度,且 Big-M 形式中场景指示变量取值 为 1 时仍会保留部分约束,增加了优化问题的规模, 降低求解速率,使得在大规模场景近似上无法实现 。这里采用的双线性形式近似机会约束

%% 结果证明

% 模型表述为简单的pg+pw==pload

% pr{pw<=PW}>=0.5

% 单时刻问题中,目标函数加入zs,舍弃掉糟糕场景(zs)

% 为了保证至少存在5个场景,也就是保留最优的5个场景,舍弃最糟糕的五个场景

这篇关于机会约束转化为确定性约束-- 样本均值法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124258

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

POJ 1364差分约束

给出n个变量,m个约束公式 Sa + Sa+1 + .... + Sa+b < ki or > ki ,叫你判断是否存在着解满足这m组约束公式。 Sa + Sa+1   +   .+ Sa+b =  Sum[a+b] - Sum[a-1]  . 注意加入源点n+1 。 public class Main {public static void main(Strin

创建表时添加约束

查询表中的约束信息: SHOW KEYS FROM 表名; 示例: 创建depts表包含department_id该列为主键自动增长,department_name列不允许重复,location_id列不允许有空值。 create table depts(department_id int primary key auto_increment,department_name varcha

5.1声道转化为左右声道

5.1声道转化为左右声道downmix http://szfzafa.blog.163.com/blog/static/11895416720120724729214/ 标题: Downmix 5.1ch to 2ch in AVS   最简单: function Dmix6Stereo(clip a) {  # 6 Channels L,R,C,LFE,SL,SR   f

关于字符串转化为数字的深度优化两种算法

最近在做项目,在实际操作中发现自己在VC环境下写的字符串转化为整型的函数还是太过理想化了,或者说只能在window平台下软件环境中运行,重新给大家发两种函数方法: 第一个,就是理想化的函数,在VC环境下充分利用指针的优越性,对字符串转化为整型(同时也回答了某位网友的答案吖),实验检验通过: #include <stdio.h> #include <string.h> int rayatoi(c

非空约束(Not Null)

修改表添加非空约束 使用DDL语句添加非空约束 ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL; 示例: 向emp表中的salary添加非空约束。 alter table emp modify salary float(8,2) not NULL; 删除非空约束 使用DDL语句删除非空约束 ALTER TABLE 表名 MODIFY 列名 类型 NULL;