二阶锥松弛化在无功优化中的应用分析

需积分: 0 1 下载量 115 浏览量 更新于2024-10-03 收藏 709KB ZIP 举报
资源摘要信息:"二阶锥松弛化的无功优化代码针对电力系统中的无功优化问题,特别是考虑到储能系统(ESS)、有载调压分接头(OLTC)、离散电容器(CB)和静止无功补偿器(SVC)的设备约束。优化的目标是最小化购电成本和网损成本。该代码采用IEEE 33节点测试系统进行仿真分析,并运用二阶锥松弛技术将原本非线性的优化问题转化为线性问题,以提高求解效率和准确性。代码的编写使用了yalmip和cplex以及gurobi这类高级数学建模工具和求解器,确保了问题模型的准确构建和高效求解。文档内容可能涵盖了无功优化的理论基础、二阶锥松弛技术的介绍、相关设备的约束条件、成本函数的构建以及仿真结果的分析等多个方面。" 知识点详细说明: 1. 无功优化概念:无功优化是电力系统运行中的一项重要任务,目的是在满足系统运行约束的前提下,通过调整系统中的无功功率设备,如发电机、静止无功补偿器(SVC)、离散电容器(CB)等,使得系统运行在最佳或较优的状态,提高系统的运行效率,降低损耗。 2. 储能系统(ESS):储能系统是指能够存储和释放电能的设备或系统,如电池、飞轮储能、超级电容器等。在电力系统中,ESS可以平滑可再生能源的输出波动,提高电力系统的稳定性和可靠性。 3. 有载调压分接头(OLTC):OLTC是一种能够在带负荷情况下自动调节变压器分接头位置的设备,用以控制母线电压,维持电压在规定范围内。 4. 静止无功补偿器(SVC):SVC是一种用于提供动态无功功率补偿的装置,能够在很短的时间内响应系统负载变化,调节无功功率,以改善电力系统的功率因数和电压稳定。 5. 离散电容器(CB):电容器可以提供无功功率,离散电容器通常指那些可以进行投切操作的电容器组,通过投入和切除电容器来调节电网无功功率,通常用于配电网电压控制。 6. 二阶锥松弛化技术:在数学优化领域,二阶锥松弛是一种将非线性优化问题转化为凸优化问题的技术,适用于处理含有二次项的约束条件。通过这种技术,原问题的求解变得更加高效和稳定。 7. IEEE 33节点测试系统:这是一个常用的电力系统测试网络,被广泛用于研究和教学中,模拟一个典型的配电网系统,用于验证电力系统的各种理论和算法。 8. yalmip与cplex、gurobi求解器:yalmip是一个高级建模语言,用于处理优化问题;cplex和gurobi是高性能的数学规划求解器,能够求解线性规划、整数规划和二阶锥规划问题。这些工具的结合使用有助于构建和求解复杂的电力系统优化模型。 以上知识点覆盖了无功优化中的关键技术和概念,以及在电力系统中实现这些技术的方法和工具。通过二阶锥松弛化技术的应用,可以将复杂的非线性无功优化问题转换为可由商用求解器有效求解的线性或凸优化问题,从而优化购电和网损成本。

解释一下这段代码gamma=[0.37*ones(1,32),1.36*ones(1,16),0.82*ones(1,20),1.36*ones(1,16),0.82*ones(1,12)]; %电网的"峰-平-谷"电价 delta=0.33*ones(17,96); %从共享储能电站购电的价格 delta_s=0.25*ones(1,96); %向共享储能电站售电的价格 P_load(1,:)=xlsread('fuhe.xlsx','sheet1','A1:CR1'); P_load(2,:)=xlsread('fuhe.xlsx','sheet1','A2:CR2'); P_pv(1,:)=xlsread('fuhe.xlsx','sheet1','A3:CR3'); P_pv(2,:)=xlsread('fuhe.xlsx','sheet1','A3:CR3'); P_ess_s(1,:)=xlsread('P-ess-s.xlsx','sheet1','A1:CR1'); P_ess_s(2,:)=xlsread('P-ess-s.xlsx','sheet1','A2:CR2'); P_ess_b(1,:)=xlsread('P-ess-b.xlsx','sheet1','A1:CR1'); P_ess_b(2,:)=xlsread('P-ess-b.xlsx','sheet1','A2:CR2'); P_grid(1,:)=xlsread('P-grid.xlsx','sheet1','A1:CR1'); P_grid(2,:)=xlsread('P-grid.xlsx','sheet1','A2:CR2'); g=0.03; i0=0.1; P_max=2161.4878 ; E_max=39700.8022 ; %%约束条件 %%目标函数 B1=(sum(delta_s.*P_ess_s(1,:))+sum(delta_s.*P_ess_s(2,:)))*365;%年卖弃光收益 C0=(sum(gamma.*P_load(1,:))+sum(gamma.*P_load(2,:)))*365; %年用户群不使用储能的情况下从电网购电费用(不是很懂) C1=(sum(gamma.*P_grid(1,:))+sum(gamma.*P_grid(2,:)))*365; %年用户群从电网购电费用 C2=(sum(delta.*P_ess_b(1,:))+sum(delta.*P_ess_b(2,:)))*365; %年用户群从储能电站购电 Cinv= [1000*sum(P_max)+1100*sum(E_max)] + [0] * (19); Copr=72*sum(P_max);%年运维成本 max_t = -1; max_v = -Inf; for t = 1:20 V_t = sum((1+g)^t/(1+i0)^t.*(B1+C0-C1-C2-Cinv-Copr)); %求解净现值 if V_t > 0 if V_t > max_v max_v = V_t; max_t = t; end end end if max_t == -1 % 净现值始终小于0 disp('净现值始终小于0'); else % 净现值大于0 disp(['净现值大于0的年份为: ', num2str(max_t),' 年']); % 输出相应的变量值 fprintf('销售弃光电价: %f\n', B1); fprintf('用户配置储能前从电网购电费用: %f\n', C0); fprintf('用户配置储能后从电网购电费用: %f\n', C1); fprintf('储能总投资成本: %f\n', Cinv(1)); fprintf('年运维成本: %f\n', Copr); end

2023-06-01 上传

解释一下这段代码delta_s=[0.1:0.02:0.37]; %向共享储能电站售电的价格[0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37] t_list = zeros(size(delta_s)); % 对应的t值 for i=1:length(delta_s);%1:length(delta_s) delta_1 = delta_s(i); B1=(sum(delta_1.*P_ess_s(1,:))+sum(delta_1.*P_ess_s(2,:)))*365;%年卖弃光收益 B2(i)=B1; C0=(sum(gamma.*P_load(1,:))+sum(gamma.*P_load(2,:)))*365; %年用户群不使用储能的情况下从电网购电费用(不是很懂) C1=(sum(gamma.*P_grid(1,:))+sum(gamma.*P_grid(2,:)))*365; %年用户群从电网购电费用 C2=(sum(delta.*P_ess_b(1,:))+sum(delta.*P_ess_b(2,:)))*365; %年用户群从储能电站购电 Copr=72*sum(P_max);%年运维成本 Cinv = @(t) (t==1)*(1000*sum(P_max)+1100*sum(E_max)); % 在t=1时为f(t),否则为0 max_t = -1; max_v = -Inf; for t = 1:20 V_t = sum(((1+g).^(1:t)./(1+i0).^(1:t)).*(B1+C0-Cinv(1:t)-C1-C2-Copr));%净现值 V_t = sum(((1+g).^(1:t)./(1+i0).^(1:t))*(B1+C0-Cinv(1:t)-C1-C2-Copr)); if V_t >0 if max_t == -1 % 第一次发现 V_t 大于0 max_t = t; % 记录最初的年份 max_v = V_t; end end end t_list(i) = max_t; P_t =max_t-1+abs((sum(1+g).^(1:max_t-1)./(1+i0).^(1:max_t-1)).*(B1(max_t-1)+C0(max_t-1)-Cinv(1)-C1(max_t-1)-C2(max_t-1)-Copr(max_t-1)))/(((1+g).^max_t./(1+i0).^max_t).*(B1(max_t)+C0(max_t)-Cinv(1)-C1(max_t)-C2(max_t)-Copr(max_t)));%动态回收期 end disp(['delta_s = ', num2str(delta_s)]); disp(['净现值大于0的最初年份为: ', num2str(t_list),' 年']); disp(['动态回收期为: ', num2str(P_t),' 年']);

2023-06-02 上传

修改这段代码,将向共享储能电站售电的价格改为一个从0.2到0.37间隔为0.1的变量 gamma=[0.37*ones(1,32),1.36*ones(1,16),0.82*ones(1,20),1.36*ones(1,16),0.82*ones(1,12)]; %电网的"峰-平-谷"电价 delta=0.33*ones(1,96); %从共享储能电站购电的价格 delta_s=0.25*ones(1,96); %向共享储能电站售电的价格 P_load(1,:)=xlsread('fuhe.xlsx','sheet1','A1:CR1'); P_load(2,:)=xlsread('fuhe.xlsx','sheet1','A2:CR2'); P_pv(1,:)=xlsread('fuhe.xlsx','sheet1','A3:CR3'); P_pv(2,:)=xlsread('fuhe.xlsx','sheet1','A3:CR3'); P_ess_s(1,:)=xlsread('P-ess-s.xlsx','sheet1','A1:CR1'); P_ess_s(2,:)=xlsread('P-ess-s.xlsx','sheet1','A2:CR2'); P_ess_b(1,:)=xlsread('P-ess-b.xlsx','sheet1','A1:CR1'); P_ess_b(2,:)=xlsread('P-ess-b.xlsx','sheet1','A2:CR2'); P_grid(1,:)=xlsread('P-grid.xlsx','sheet1','A1:CR1'); P_grid(2,:)=xlsread('P-grid.xlsx','sheet1','A2:CR2'); g=0.03; i0=0.1; P_max=2161.4878 ; E_max=39700.8022 ; %%约束条件 %%目标函数 B1=(sum(delta_s.*P_ess_s(1,:))+sum(delta_s.*P_ess_s(2,:)))*365;%年卖弃光收益 C0=(sum(gamma.*P_load(1,:))+sum(gamma.*P_load(2,:)))*365; %年用户群不使用储能的情况下从电网购电费用(不是很懂) C1=(sum(gamma.*P_grid(1,:))+sum(gamma.*P_grid(2,:)))*365; %年用户群从电网购电费用 C2=(sum(delta.*P_ess_b(1,:))+sum(delta.*P_ess_b(2,:)))*365; %年用户群从储能电站购电 Copr=72*sum(P_max);%年运维成本 Cinv = @(t) (t==1)*(1000*sum(P_max)+1100*sum(E_max)); % 在t=1时为f(t),否则为0 max_t = -1; max_v = -Inf; for t = 1:20 V_t = sum((1+g).^(1:t)./(1+i0).^(1:t).*(B1+C0-Cinv(1:t)-C1-C2-Copr)); %求解净现值 if V_t >0 if max_t == -1 % 第一次发现 V_t 大于0 max_t = t; % 记录最初的年份 max_v = V_t; end end end if max_t == -1 % 净现值始终小于0 disp('净现值始终小于0'); else % 净现值大于0 disp(['净现值大于0的最初年份为: ', num2str(max_t),' 年']); end

2023-06-01 上传