关于#遗传算法#的问题,如何解决?

问题遇到的现象和发生背景

遗传算法

问题相关代码,请勿粘贴截图

%%主程序
function GA()
clc
clear
close all
popsize = 20;%种群大小(个体长度)
chromlength = 20;%串的长度
pc = 0.6;%交叉概率
pm = 0.1;%变异概率
xlim = [0,50]
G = 100;
% x= zeros(1,G)
% y = zeros(1,G)

pop = round(rand(popsize,chromlength));%随机产生初始群体
decpop = bintodec(pop,popsize,chromlength,xlim);%计算初代解对应十进制
fx = calobjvalue(decpop);%计算初代解的函数值
plotfig(decpop,fx , xlim, 1 );%绘制图像
[y(1),l] = min(fx);x(1) = decpop(l);

for i = 2 : G
decpop = bintodec(pop, popsize, chromlength, xlim);%计算上一代解对应的十进制
fx = calobjvalue(decpop);%计算上一代解的函数值
fitvalue = calfitvalue(fx);
newpop = copyx(pop, fitvalue , popsize);%复制
newpop = crossover(newpop , pc , popsize, chromlength);%交叉
newpop = mutation(newpop , pm , popsize , chromlength);%变异
% 这时的newpop是经过估值交叉变异产生新一代群体
% 下边进行选择择优保留(即实现保底机制)
newdecpp = bintodec( newpop,popsize,chromlength,xlim);
new_fx = calobjvalue(newdecpp);
new_fitvalue = calfitvalue(new_fx);
index = find(new_fitvalue > fitvalue);

pop(index , :) = newpop(index,:);%更新得到最新解
decpop = bintodec( pop, popsize,chromlength,xlim);
fx = calobjvalue(decpop);%计算结果
plotfig(decpop,fx,xlim,i)%绘制新解的图
%找出更新后的各体的最优函数值
[bestindividual,bestindex] = max(fx);
y(i) = bestindividual;%记录每一代的最有函数值
x(i) = decpop(bestindex);%十进制解
subplot(1,2,2);
plot(1:i,y);
title('适应度进化曲线')
i = i + 1;

end
[ymax,max_index] = max(y);
disp(['找最优解位置为:',num2str(x(max_index))])
disp(['对应最优解为:',num2str(ymax)])

end

运行结果及报错内容

Output argument "fitvalue" (and possibly others) not
assigned a value in the execution with "GA>calfitvalue"
function.
出错 GA (第 24 行)
fitvalue = calfitvalue(fx);

我想要达到的结果

为什么会出现这个问题?