排课系统 matlab,matlab遗传算法排课问题,程序一直有错,求解答

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

function fitness(pop_size,chrom_size,a,b,y)

%%赋予初始适应度的值

global pop;

global fitness_value;

global A;

global B;

global U;

for i=1:pop_size

for j=1:chrom_size

%%A矩阵为课程分值矩阵

fitness_value(i)=fitness_value(i)+A(pop(i,j),ceil(j/2));%%(位置1)计算每一条染色体的适应度

end

end

%%定义每个老师的初始课时为0

for k=1:pop_size

for kk=1:20

teacher(k,kk)=0;

end

end

%%teacher,每个老师的课时

teacher_total=0;

teacher_avg=0;

for ii=1:pop_size

for jj=1:chrom_size

teacher(ii,pop(ii,jj))= teacher(ii,pop(ii,jj))+C(ceil(jj/2));%%计算染色体中每个老师的课时

teacher_total(ii)=teacher_total(ii)+teacher(ii,pop(ii,jj));%%计算累计课时

end

teacher_avg(ii)=teacher_total(ii)./20;%%计算平均课时

end

for zzz=1:20

newb=newb+B(zzz);%%计算每个老师的时长均值

end

for zzzz=1:pop_size

teacher_avg(zzzz)=teacher_avg(zzzz)-newb;

end

q1=0;%%用以衡量每个老师的课时,限制在合理区间

q2=0;%%用以衡量老师之间的不公平程度,值越大代表该老师的课时时间越不合理

q3=0;

q=0;

for z=1:pop_size

for zz=1:20

if teacher(z,zz)

q1(z,zz)=a*(B(zz)-teacher(z,zz));

end

if teacher(z,zz)>U(zz)

q1(z,zz)=b*(teacher(z,zz)-U(zz));

end

if teacher(z,zz)

q2(z,zz)=y*(B(zz)+teacher_avg(z)-teacher(z,zz));

end

if teacher(z,zz)>B(zz)+teacher_avg(z)

q2(z,zz)=y*(teacher(z,zz)-B(zz)-teacher_avg(z));

end

q3(z,zz)=q1(z,zz)+q2(z,zz);%%每个教师的惩罚值

q(z)=q(z)+q(z,zz);%%累计惩罚值

end

end

for iii=1:chrom_size

fitness_value(iii)= fitness_value(iii)-q(iii);%%适应度

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值