复现国赛数学建模题目解法第一弹——2004年B题:电力市场的输电阻塞管理

本文主要是介绍复现国赛数学建模题目解法第一弹——2004年B题:电力市场的输电阻塞管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python/C++/matlab三选二复现题目解法

 

国赛历年赛题下载地址:全国大学生数学建模竞赛 (mcm.edu.cn)


一、概括题目要求,写出大致思路

此题题目如下,截取一些关键信息:

 

 

整理一下思维导图,大概是这么一个过程 

私以为,

其中第一问线性规划

第二问设计全局思路

第三问规划得出方程

第四问单目标规划列表达式

第五问多目标规划

这是一个典型的优化问题,第二问是全局设计的灵魂

二、与相关论文思路进行比对与思路更正

参考了相关的博文和当年的优秀论文,发现自己思考不细致,也有错漏之处,在此进行说明

第一问两篇优秀博文采用的都是多元线性回归的方式,原因是数据太多,没有变量数据,可以直接通过数据拟合方程。

第二问主要就是语言表述,定下解决问题的方案,需要利用费用分摊法,或者是自己建立苏纳法

第三问是单目标规划模型,需要建立两个模型,一个是阻塞费用计算模型,一个是可消除输电阻塞的调整方案的非线性规划模型

第四问我们加入了安全裕度输电的非线性规划模型,给出安全与经济约束下的调整模型,这是一个多目标规划模型

第五问其实是对第三问第四问解法的验证与补充,为此我们需要再建立一个拉闸限电模型,防止用其他模型也找不到输电阻塞的出力分配方案

我们发掘有如下几个难点:

1.八个机组和六个各线路潮流值的关系

2.由段容量确定段价

3.由段价求出清算价

4.读懂输电阻塞规则

三、复现论文解法

matlab版:

第一问:多元线性回归

所谓多元线性回归,其实就是数据拟合之后进行统计分析。我们需要找到表一和表二数据之间的关系,因为是要求有功潮流对各发电机组出力的表达式,我们可以列6个式子,其中每个式子具有8个参数。这里我们采用regress()进行拟合。

 

 

可以看出我们两个表格都是有32个方案,方案0属于对照组,可以用它来进行验证。

我们可以把两个表格合在一起分析。y是各线路的有功潮流值,x1到x8代表8个机组,系数由这32个方案决定。下面的代码是算y1时列的,其他同理。

clc;
clear all;
data1=xlsread('2004_b1.xlsx');
x1=xlsread('2004_b1.xlsx','B3:B34');
x2=xlsread('2004_b1.xlsx','C3:C34');
x3=xlsread('2004_b1.xlsx','D3:D34');
x4=xlsread('2004_b1.xlsx','E3:E34');
x5=xlsread('2004_b1.xlsx','F3:F34');
x6=xlsread('2004_b1.xlsx','G3:G34');
x7=xlsread('2004_b1.xlsx','H3:H34');
x8=xlsread('2004_b1.xlsx','I3:I34');
y=xlsread('2004_b2.xlsx','B3:B34');
%在这里各个机组之间其实是互不影响的,所以没必要计算具有交互效应项的线性模型的回归系数(向量点乘),这里列下式子不予运行
%X1=[ones(size(x1)) x1 x2 x1.*x2];
%X2=[ones(size(x3)) x3 x4 x3.*x4];
%X3=[ones(size(x5)) x5 x6 x5.*x6];
%X4=[ones(size(x5)) x7 x8 x7.*x8];
%但各个方案之间是影响的,所以要计算它们之间的回归系数
X1=[ones(32,1),x1];
X2=[ones(32,1),x2];
X3=[ones(32,1),x3];
X4=[ones(32,1),x4];
X5=[ones(32,1),x5];
X6=[ones(32,1),x6];
X7=[ones(32,1),x7];
X8=[ones(32,1),x8];
b1=regress(y,X1);
b2=regress(y,X2);
b3=regress(y,X3);
b4=regress(y,X4);
b5=regress(y,X5);
b6=regress(y,X6);
b7=regress(y,X7);
b8=regress(y,X8);
b_1=[b1(1)+b2(1)+b3(1)+b4(1)+b5(1)+b6(1)+b7(1)+b8(1)]/8
x1fit = min(x1):32:max(x1);
x2fit = min(x2):32:max(x2);
x3fit = min(x3):32:max(x3);
x4fit = min(x4):32:max(x4);
x5fit = min(x5):32:max(x5);
x6fit = min(x6):32:max(x6);
x7fit = min(x7):32:max(x7);
x8fit = min(x8):32:max(x8);
YFIT = b_1 + b1(2)*x1fit + b2(2)*x2fit +b3(2)*x3fit + b4(2)*x4fit+b5(2)*x5fit + b6(2)*x6fit +b7(2)*x7fit + b8(2)*x8fit

算出的拟合式子为:

y1=159.4155+0.0735x1+0.0133x2+0.0448x3+0.1148x4-0.0491x5+0.108x6+0.1687x7-0.0243x8

y2=140.8116-0.0714x1+0.1168x2-0.0082x3+0.0301x4+0.0845x5-0.1427x6-0.0016x7+0.0966x8

 另外四个式子也是这么列出来的

我发现算出的结果其实比方案0的值大,比如说方案0中,线路1的值是160,但我们算出来的总结果是200。对照示例论文中的式子发现是b_1值偏差比较大,但我也没想到解决方式,因为理应来说b1(1)到b8(1)的值都比120大,但我发现示例论文的b_1值居然才110多,所以一直没想懂哪出现了问题,欢迎评论区指正

算出的结果与方案0结果比较:

方案0:

算出的结果:

通道数(潮流值)123456
算出的结果200.2359  204.0222142.6112  140.0648 -156.7545 -162.9327145.2540  150.3254138.7074  136.4516183.3939  188.6894

 


之后还会补充文章继续复现,敬请期待

 

这篇关于复现国赛数学建模题目解法第一弹——2004年B题:电力市场的输电阻塞管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言