//显示采用最小间隔编码后的压缩信道分配矩阵
publicvoidShowCompactMatrix()
{
for(inti=0;i0;j++)
{
for(intk=0;k0)
{
for(intl=(k-(constrains[j]-1)>0?k-(constrains[j]-1):0);
l0)
cost++;
}
}
}
}
}
fitness=cellNum*chanNum-cost;
returncost;
}
//交叉辅助函数,rno:染色体交叉操作的行号,sindex:交叉开始位置,eindex交叉结束位置
privatevoidCrossOverHelp(Individulind,intrno,intsindex,inteindex)
{
for(inti=sindex;ir2)
{
tmp=r1;
r1=r2;
r2=tmp;
}
//c1和c2为随机生成的列号
intc1=rnd.Next(compactMatrix[r1].Length);
intc2=rnd.Next(compactMatrix[r2].Length);
if(r1!=r2)
{
CrossOverHelp(ind,r1,c1,compactMatrix[r1].Length-1);
for(inti=r1+1;i=0;j--)
{
if(compactMatrix[r][j]==1)
{
intindex=0;
if(demand>=1)
index=j+(demand-1)*(constrains[r][r]-1);
else
index=j;
if(index>=chanNum)
matrix[r][chanNum-1]=1;
else
matrix[r][index]=1;
demand--;
}
}
}
}
}
|