47 lines
1.4 KiB
Matlab
47 lines
1.4 KiB
Matlab
clear
|
|
clc
|
|
data=dlmread('数据.csv');
|
|
%% 数据处理
|
|
%按时段T把每个场景拿出来
|
|
snWind=data(:,1:3:end);
|
|
snSolar=data(:,2:3:end);
|
|
snP=data(:,3:3:end);
|
|
snP(snP==-100)=1;
|
|
randSNCount=100; %要小于16^288 。解的场景数量
|
|
gaCount=100;%粒子数
|
|
%% 初始化
|
|
ga=repmat(struct(),gaCount,1);
|
|
for I=1:gaCount
|
|
[ selectedIndex] = initGA( randSNCount );
|
|
% [ selectedIndex] = evolute(selectedIndex,randSNCount );
|
|
ga(I).selectedIndex=selectedIndex;
|
|
[ selectedWind,selectedSolar,candidateP ] = generateCandidate( snWind,snSolar,snP,randSNCount,ga(I).selectedIndex );
|
|
[ fitness ] = fitnessFun( selectedWind,selectedSolar,candidateP,randSNCount );
|
|
ga(I).fitness=fitness;
|
|
end
|
|
|
|
bestFitness=0;
|
|
bestIndex=0;
|
|
for LOOP=1:100
|
|
fprintf('第%d次迭代\n',LOOP);
|
|
fprintf('最好适度函数%f\n',bestFitness);
|
|
for I=1:gaCount
|
|
fitness=ga(I).fitness;
|
|
if fitness>bestFitness
|
|
bestFitness=fitness;
|
|
bestIndex=ga(I).selectedIndex;
|
|
end
|
|
end
|
|
|
|
for I=1:gaCount
|
|
[ selectedIndex] = evolute(selectedIndex,randSNCount );
|
|
ga(I).selectedIndex=selectedIndex;
|
|
[ selectedWind,selectedSolar,candidateP ] = generateCandidate( snWind,snSolar,snP,randSNCount,ga(I).selectedIndex );
|
|
[ fitness ] = fitnessFun( selectedWind,selectedSolar,candidateP,randSNCount );
|
|
ga(I).selectedIndex=selectedIndex;
|
|
ga(I).fitness=fitness;
|
|
end
|
|
end
|
|
|
|
|