赞
踩
通过出力方案得到段价:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。