function fit=fitness(time,room,teacher,class,chrom) for idx=1:length(chrom) f1(idx)=0; [M,N]=size(chrom{idx}); for i=1:M for j=1:N if isempty(chrom{idx}{i,j})==1 f1(idx)=f1(idx)+time(i).weight*chrom{idx}{i,j}.sweight; end end end fit(idx)=0.3*f1(idx); end end出错在哪里
时间: 2023-05-27 07:05:55 浏览: 138
该函数中存在语法错误,具体如下:
1. 第4行代码中,应该使用“+”运算符来计算f1(idx)的值,而不是“=”运算符。
2. 第6行代码中,应该使用“*”运算符来计算f1(idx)的值,而不是“=”运算符。
3. 第8行代码中,应该使用“+”运算符来计算fit(idx)的值,而不是“=”运算符。
修改后的代码如下:
function fit=fitness(time,room,teacher,class,chrom)
for idx=1:length(chrom)
f1(idx)=0;
[M,N]=size(chrom{idx});
for i=1:M
for j=1:N
if isempty(chrom{idx}{i,j})==1
f1(idx)=f1(idx)+time(i).weight*chrom{idx}{i,j}.sweight;
end
end
end
fit(idx)=0.3*f1(idx)+0;
end
end
相关问题
function fit=fitness(time,room,teacher,class,chrom) for idx=1:length(chrom) f1{idx}=0; [M,N]=size(chrom(idx)); for i=1:M for j=1:N if isempty(chrom{idx}{i,j})==1 f1{idx}=f1{idx}+time(i).weight*chrom{idx}{i,j}.sweight; end end end fit(idx)=0.3*f1; end出错在哪里
这段代码中存在多个语法错误和逻辑错误。
首先,函数名和参数列表应该用括号括起来,即应该写成:function fit=fitness(time,room,teacher,class,chrom)
其次,在第3行中,应该将 f1{idx}=0; 改为 f1(idx)=0; 。因为 f1 是一个数组,而不是一个 cell 数组。
第4行中应该将 [M,N]=size(chrom(idx)); 改为 [M,N]=size(chrom{idx}); 。因为 chrom 是一个 cell 数组,而不是一个普通的数组。
在第6行中,缺少一个加号,应该将 f1{idx}=f1{idx}+time(i).weight*chrom{idx}{i,j}.sweight; 。
在第9行中,应该将 fit(idx)=0.3*f1; 改为 fit(idx)=0.3*f1(idx); 。因为 f1 是一个数组,需要使用下标 idx 来访问其中的元素。
最后,在函数结尾处应该添加一个 end 语句,表示函数定义的结束。
function fit=fitness(time,room,teacher,class,chrom) for idx=1:length(chrom) f1(idx)=0; [M,N]=size(chrom{idx}); for i=1:M for j=1:N if isempty(chrom{idx}{i,j})==1 f1(idx)=f1(idx)+time(i).weight*chrom{idx}{i,j}.sweight; end end end fit(idx)=0.3*f1(idx); end end错在哪里
在第5行,应该将 f1(idx)=f1(idx) time(i).weight*chrom{idx}{i,j}.sweight; 改为 f1(idx)=f1(idx) + time(i).weight*chrom{idx}{i,j}.sweight;,即累加每个空时间段的权重和。
阅读全文