1 主要内容
该程序复现文章《市场模式下光伏用户群的电能共享与需求响应模型》,为了使光伏用户群内各经济主体能实现有序的电能交易,提出了一种基于光伏电能供需比(SDR)的内部价格模型。在考虑经济性和舒适度的基础上,提出了用户参与需求响应(DR)的效用成本模型。由于内部电价是以各时段光伏用户群内的供需比为基础,用户之间针对电价的需求响应行为可构成非合作博弈,在证明该博弈问题存在纳什均衡解的基础上,提出了分布式优化算法对用户的纳什均衡策略进行求解。最后,通过实际算例验证了所提模型在减少用电成本、提高光功率互用水平上的有效性。程序采用matlab编制,该程序注释较少,适合于有编程经验的同学进一步学习提升!
对于分布式光伏用户,首选光功率自消纳,光功率过剩时由服务商按内部购电电价收购,光伏功率不足时从服务商按内部售电电价购电。对于邻近的分布式光伏用户,其光照和温度等外部环境相同,导致光功率输出特性大致相同,但是由于不同用户间 的负荷特性普遍存在差异,因此净功率的差异为光 功率互用提供了基础条件。
2 部分代码
clear ; clc; load RU2; RU2 = RU2(:,[1 3 4 2 5]); s1 = [0;0;0;0;0;0;0.04;1.276;3.66;4.72;5.52;5.6;5.4;5.28;5.16;4.48;3.48;1.24;0.04;0;0;0;0;0]; s2 = [0;0;0;0;0;0;0;0;0.17;0.69;1.38;3.11;4.67;5.01;5.01;4.84;5.36;4.67;2.07;0.69;0.17;0;0;0]; s3 = [0;0;0;0;0;0;0;0;0.105;2.385;3.681;4.716;5.91;5.7;5.55;5.07;4.05;1.92;0.21;0;0;0;0;0]; s4 = [0;0;0;0;0;0;0;0;1.01;2.53;3.7;4.55;5.06;5.08;4.65;3.79;2.6;0.55;0.05;0;0;0;0;0]; s5 = [0;0;0;0;0;0;0.018;0.97;2.255;3.465;4.552;5.29;5.57;5.45;5.225;4.33;3.06;1.75;0.378;0;0;0;0;0]; % psell = [0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.8 0.8 0.8 1.3 1.3 1.3 1.3 0.8 0.8 0.8 0.8 1.3 1.3 1.3 0.8 0.8]; % load solar; % solar = solar'; solar = [40*s1,20*s2,40*s3,30*s4,60*s5]; solar = solar(:,[1 3 4 2 5]); % RU2 = RU2/1000; % solar = solar/1000; %solar = solar*5; % global p;% k ; Load = RU2 - solar;%[RU2(:,1)-40*s1,RU2(:,2)-20*s2,RU2(:,3)-40*s3,RU2(:,4)-30*s4,RU2(:,5)-60*s5];%设置光伏装配数量 % p = p*1000; t_start = tic; MAX_ITER = 40; ABSTOL = 0.01; RELTOL = 1e-3; N = 5;% x = zeros(24,N); % k = 1; u = zeros(24,N); rs = zeros(2,MAX_ITER); totfeerecord = zeros(1,MAX_ITER); pSrecord = zeros(24,MAX_ITER); pBrecord = zeros(24,MAX_ITER); x1record = zeros(24,MAX_ITER); x2record = zeros(24,MAX_ITER); x3record = zeros(24,MAX_ITER); x4record = zeros(24,MAX_ITER); x5record = zeros(24,MAX_ITER); x1record(:,1) = RU2(:,1); x2record(:,1) = RU2(:,2); x3record(:,1) = RU2(:,3); x4record(:,1) = RU2(:,4); x5record(:,1) = RU2(:,5); pSrecord(:,1) = 0.4*ones(24,1); pBrecord(:,1) = ones(24,1); x1L = zeros(24,MAX_ITER); x2L = zeros(24,MAX_ITER); x3L = zeros(24,MAX_ITER); x4L= zeros(24,MAX_ITER); x5L = zeros(24,MAX_ITER); % exitfalgrecord = zeros(N,96); p = getPrice(Load);%集群买卖电价 pacture = p; for i=2:MAX_ITER pSrecord(:,i) = p(:,1); pBrecord(:,i) = p(:,2); [x,exitflag] = update_x(x,RU2,solar,p); %Load = [x(:,1)-25*s1,x(:,2)-30*s2,x(:,3)-10*s3];%设置光伏装配数量
3 程序结果
部分原文结果