本人尝试利用蛙跳算法求解水库单目标调度,目标函数是极大值函数,在运算中适应值最大的解在全局迭代中一直未更新,调试算法 发现子群内更新时按适用度降序排列第一个最优解也未更新,不知道问题出在哪里,求大神指点。
%% 多目标混合智能蛙跳算法,先进行两库单目标调度优化,以一年为调度总时段,月为时段,以发电量最大为目标函数。
%%%定义相关参数
tic
clc
clear all
m=20; %种群分组数
n=10; %t每组青蛙包含的个数
Ne=10; %组内迭代数
smax = 5; %最大步长
MAXGEN=30; %种群总进化代数
d=24; %优化问题维数
pmax =980; %d维最大值
pmin =888;%d维最小值
F=m*n;
%% 生成初始解向量
a=[977,977,977,980,980,977,977,957,977,970,977,977,898,898,898,898,898,898,893,892,892,898,898,898];
b=[970,970,970,970,952,952,952,952,952,952,970,970,888,888,888,888,888,893,888,888,888,888,888,888];
X1=rand(F,1)*(a(1)-b(1))+b(1); X13=rand(F,1)*(a(13)-b(13))+b(13);
X2=rand(F,1)*(a(2)-b(2))+b(2); X14=rand(F,1)*(a(14)-b(14))+b(14);
X3=rand(F,1)*(a(3)-b(3))+b(3); X15=rand(F,1)*(a(15)-b(15))+b(15);
X4=rand(F,1)*(a(4)-b(4))+b(4); X16=rand(F,1)*(a(16)-b(16))+b(16);
X5=rand(F,1)*(a(5)-b(5))+b(5); X17=rand(F,1)*(a(17)-b(17))+b(17);
X6=rand(F,1)*(a(6)-b(6))+b(6); X18=rand(F,1)*(a(18)-b(18))+b(18);
X7=rand(F,1)*(a(7)-b(7))+b(7); X19=rand(F,1)*(a(19)-b(19))+b(19);
X8=rand(F,1)*(a(8)-b(8))+b(8); X20=rand(F,1)*(a(20)-b(20))+b(20);
X9=rand(F,1)*(a(9)-b(9))+b(9); X21=rand(F,1)*(a(21)-b(21))+b(21);
X10=rand(F,1)*(a(10)-b(10))+b(10);X22=rand(F,1)*(a(22)-b(22))+b(22);
X11=rand(F,1)*(a(11)-b(11))+b(11);X23=rand(F,1)*(a(23)-b(23))+b(23);
X12=rand(F,1)*(a(12)-b(12))+b(12);X24=rand(F,1)*(a(24)-b(24))+b(24);
XX=[X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16,X17,X18,X19,X20,X21,X22,X23,X24];%在限制水位内随机生成初始向量
%% %%全局迭代寻优
yy=zeros(1,MAXGEN); %产生一行maxgen列的零矩阵
for i1=1:MAXGEN</