2004年数学建模电力市场的输电阻塞管理部分代码

本文介绍了一种通过输入负荷需求来确定最优电力出力方案的函数,包括了通过查找表的方式处理边界条件和连续区间,以及如何根据负荷需求分配机组出力,确保满足需求并实现成本最小化。

通过出力方案得到段价:

function y = select(x)
dj = [ -505  -505   124   124   124   252   252   252   252   489
  -560  -560   182   203   245   300   320   320   320   495
  -610  -610   152   152   233   233   308   356   356   500
  -500   150   170   200   255   302   325   325   325   800
  -590     0   116   116   188   215   215   310   396   510
  -607  -607   159   173   173   252   305   380   380   520
  -500   120   180   251   260   306   315   335   348   548
  -800  -800   183   183   253   253   303   318   400   800];
drl = [    70    70   120   120   120   150   150   150   150   190
    30    30    50    58    73    79    81    81    81    89
   110   110   150   150   180   180   200   240   240   280
    55    60    70    80    90   100   115   115   115   116
    75    80    95    95   110   125   125   135   145   155
    95    95   105   125   125   140   150   170   170   180
    50    65    70    85    95   105   110   120   123   125
    70    70    90    90   110   110   130   140   155   160];
[m,n]=size(drl);
for i = 1:m
    ch = x(i);
    for j=1:n
        if j==1
            if ch<=drl(i,j)
              y(i) = dj(i,j);
              break;
            elseif ch>drl(i,j)&&ch<drl(i,j+1)
                y(i) = dj(i,j+1);
                break;
            end
        elseif j==n
            if ch>=drl(i,j)
                y(i) = dj(i,j);
                break;
            elseif ch>drl(i,j-1)&&ch<drl(i,j)
                y(i) = dj(i,j);
                break;
            end
        else
            if ch==drl(i,j)
                y(i) = dj(i,j);
                break;
            elseif ch>drl(i,j)
                for k = j+1:n-1
                    if ch<dj(i,k)
                        y(i) = dj(i,k);
                        break;
                    end
                end 
        end
    end
    end
 
end

通过负荷得到基本出力方案:

clear;clc;
drl = [70	0	50	0	0	30	0	0	0	40
30	0	20	8	15	6	2	0	0	8
110	0	40	0	30	0	20	40	0	40
55	5	10	10	10	10	15	0	0	1
75	5	15	0	15	15	0	10	10	10
95	0	10	20	0	15	10	20	0	10
50	15	5	15	10	10	5	10	3	2
70	0	20	0	20	0	20	10	15	5
];
dj = [-505	0	124	168	210	252	312	330	363	489
      -560	0	182	203	245	300	320	360	410	495
      -610	0	152	189	233	258	308	356	415	500
      -500	150	170	200	255	302	325	380	435	800
      -590	0	116	146	188	215	250	310	396	510
      -607	0	159	173	205	252	305	380	405	520
      -500	120	180	251	260	306	315	335	348	548
      -800	153	183	233	253	283	303	318	400	800];
Fh = input('请输入负荷需求量(MW):');
S = 0;
pri = 0;
A = [dj(:) drl(:)];
AA = sortrows(A,1);
SS = zeros(1,8);
v = [2.2	1	3.2	1.3	1.8	2	1.4     1.8];
g = [120	73	180	80	125	125	81.1	90];
gmax = g+v*15;
gmin = g-v*15;
for i = 1:80
    if sum(SS)<Fh
        pri = pri+AA(i,1);
        [row,~] = (find((AA(i,1)==dj)&(AA(i,2)==drl)));
        for j =1:length(row)
            if (SS(row(j))<gmax(row(j)))&&(SS(row(j)) + AA(i,2))<gmax(row(j))
                SS(row(j)) = SS(row(j)) + AA(i,2);
                
            elseif (SS(row(j))<gmax(row(j)))&&(SS(row(j)) + AA(i,2))>=gmax(row(j))
                SS(row(j)) = gmax(row(j));
                
            end
        end
    else
        disp('清算价为:')
        qs = AA(i-1,1)
        break;
        
    end
end
 remain = sum(SS)-Fh;
 [row1,~] = (find((AA(i-1,1)==dj)&(AA(i-1,2)==drl)));
 SS(row1) = SS(row1) - remain;
 disp('各个机组出力为:')
 SS
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抽象带篮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值