马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
想用遗传算法搜寻多项式的最优系数,一共8个,a与y是试验值
code:
%定义函数xunyou.m
function eval=xunyou(sol)
numv=size(sol,2);
x=sol(1:numv);
a=(-10)*[(-1)*0.2
-0.19
-0.181
-0.176
-0.161
-0.151
-0.142
-0.132
-0.122
-0.107
-0.093
-0.078
-0.063
-0.049
-0.039
-0.024
-0.01
0
0.01
0.024
0.039
0.054
0.068
0.078
0.088
0.098
0.112
0.122
0.142
0.151
0.161
0.171
0.176
0.186
0.195
0.2
0.21
0.215
0.22
0.225
0.225
0.225
0.225
0.225
0.225
0.225
0.22
0.22
0.215
0.21]';
y=[0.034
0.034
0.034
0.044
0.039
0.039
0.039
0.039
0.029
0.034
0.029
0.029
0.029
0.015
0.015
0.015
0.005
0.005
0.02
0.02
0.015
0.01
0.01
0.015
0.015
0.01
0.02
0.015
0
0
-0.005
-0.01
-0.01
-0.015
-0.02
-0.02
-0.024
-0.029
-0.02
-0.02
-0.024
-0.024
-0.024
-0.02
-0.015
-0.02
-0.015
-0.02
-0.029
-0.029]';
eval=sum(y-(x1*a+x2*a.^3+x3*(10.^x4/(2.25.^x5))*10*((2.25.^2-a.^2).^(x6*(10.^x7/2.25.^x8)).^(1/2)))).^2;
%定义适应度函数fitness
function[sol,eval]=xunyoumin(sol,options)
numv=size(sol,2)-1;
eval=xunyou(x);
eval=-eval;
%用遗传算法求解
bounds=ones(8,1)*[-1 2];
[p,endPop,bestSols,trace]=ga(bounds,'xunyoumin');
%查看迭代过程
figure(1)
plot(endPop(:,1),endPop(:,2),'y*')
figure(2)
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation');
ylabel('Fittness');
legend('解的变化','种群平均值的变化'); |