💥1 概述
参考文献:
然后本文换一个算法进行解决,也算一个创新点吧:
基于非支配排序遗传算法的多目标水光互补优化调度,然后用Matlab实现之。
近些年,人类对环境问题和资源枯竭关注日益增大,使得以光伏为代表的新能源发电得到了大规模的发展。截至2015年底,中国光伏发电累计装机容量4318万千瓦,成为全球光伏发电装机容量最大的国家[1]。但是,光伏具有“随机性、间歇性和波动性”的特点[2-4]。光伏发电的并网对电力系统的规划、安全、调度和控制等方面的影响也越来越大。虽然光伏的装机容量很大,但是并网消纳仍是一个有待解决的问题[5-6]。水电是一种清洁可再生的能源,其出力具有快速调节的优良性能,在电力系统中常常担任调峰的任务[7]。利用水电出力的特点来平衡光伏出力的波动,可以为电网提供更多的优质电能。世界上第一座水光互补电站2009年在青海玉树建成[8],到2015年全球最大的龙羊峡水光互补电站的建成[9],水光互补已得到了全世界的广泛关注。
1.1 水光互补
水光互补是指水电和光伏联合运行,利用水电机组快速调节的优良特性以及水电站的库容调节光伏出力的“随机性、波动性和间歇性”,同时光伏可以在水电匮乏时给予联合系统电量上的支持。
水电和光伏在年际、年内、日内有很好的互补特性。
.年际、年内互补特性
水电的发电量取决于径流的多少,径流在年内和年际间相差悬殊,年际有丰水年和枯水年之分,年内有丰、枯水期。水电在丰水年发电多、枯水年发电少,冬春季发电量少、夏秋季发电量多。相对而言,太阳能年际间波动很小,光电的年发电量几乎是恒定值;光伏发电还具有冬春季发电量大、夏秋季发电量小的季节性特点。光伏在水电匮乏时可以为联合系统提供电量上的支撑,减少系统负荷的缺额,因此,水电和光伏发电在年际和年内都存在很好地互补关系。
日内互补特性
光伏发电取决于环境条件,光伏出力呈现“间歇性、随机性和波动性”地特点。在一天之内,水电可以利用机组的快速调节性能来平抑光伏出力的“随机性和波动性”;光伏只在白天出力,在夜间的出力几乎为零,水电可以平衡光伏出力的“间歇性”[10]。因此,水电和光伏发电在日内也存在着很好的互补关系,如图1所示。
1.2 水光互补模型——目标函数和约束条件
水光互补的运行模式为以水电和光伏联合运行,以光伏出力为基荷,用水电来调节光伏出力,为了保证下游的用水,水电站在调度期内的出库流量恒定。在此模式下,建立水光互补调峰能力的模型,并考虑了各种约束条件。
目标函数
两个目标,所有本文考虑用多目标优化算法解决之,没有用参考文献的方法。
水电出力的约束
功率平衡约束
其他约束
1.3 多目标遗传算法
📚2 运行结果
🌈3 Matlab代码实现
部分代码:
%% NSGA-II Parameters MaxIt=70; % Maximum Number of Iterations nPop=80; % Population Size pCrossover=0.7; % Crossover Percentage nCrossover=2*round(pCrossover*nPop/2); % Number of Parnets (Offsprings) pMutation=0.4; % Mutation Percentage nMutation=round(pMutation*nPop); % Number of Mutants mu=0.02; % Mutation Rate sigma=0.1*(VarMax-VarMin); % Mutation Step Size %% Initialization empty_individual.Position=[]; empty_individual.Cost=[]; empty_individual.Rank=[]; empty_individual.DominationSet=[]; empty_individual.DominatedCount=[]; empty_individual.CrowdingDistance=[]; pop=repmat(empty_individual,nPop,1); disp('产生初始可行解...') for i=1:nPop flag=0; while flag==0 tmp=[]; for j=1:1:nVar tmp = [tmp unifrnd(VarMin(j),VarMax(j),1)]; end flag = test(tmp); % 检查约束 约束不满足就重新生成解 end pop(i).Position=tmp; pop(i).Cost=CostFunction(pop(i).Position); end % pause % Non-Dominated Sorting [pop, F]=NonDominatedSorting(pop); % Calculate Crowding Distance pop=CalcCrowdingDistance(pop,F); % Sort Population [pop, F]=SortPopulation(pop); %% NSGA-II Main Loop for it=1:MaxIt % 交叉 popc=repmat(empty_individual,nCrossover/2,2); for k=1:nCrossover/2 i1=randi([1 nPop]); p1=pop(i1); i2=randi([1 nPop]); p2=pop(i2); [popc(k,1).Position, popc(k,2).Position]=Crossover(p1.Position,p2.Position,VarMin,VarMax); if test(popc(k,1).Position)+test(popc(k,2).Position)==2 popc(k,1).Cost=CostFunction(popc(k,1).Position); popc(k,2).Cost=CostFunction(popc(k,2).Position); else popc(k,1)=p1; popc(k,2)=p2; end
🎉4 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]丁航,安源,王颂凯,王浩. 水光互补的短期优化调度[C]//.2016第二届能源,环境与地球科学国际会议论文集.[出版者不详],2016:21-26.