遗传算法#includeiostream#includestdlib.husingnamespacestd;classuser{public:doubleSNR;staticdoubleb[50][6];staticdoublex[5];staticintT;user(double);};user::user(doublea){SNR=a;}doubleuser::b[50][6]={0};intuser::T=0;doubleuser::x[5]={0,0,0,0,0};intmain(){inti,j,i2,i3,i4,i5,i6,i7,i8,i9,j1,j2,j3,j5,j6,j7,j8,k2,m,n,r1,r2,r3,r4,r5;intT1=0;intT2=0;intk=0;intj4=0;intk1=0;doublec[5],d[5],e[5],f[5],z1[50],z[50][6],r,p;doublesum=0;doubles=0;usera[100]={3.8,3.8,3.9,4.0,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5.0,5.1,5.2,5.3,5.4,6.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9,7.0,7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,9.8,9.9,10,10.1,10.2,10.3,10.4,10.5,10.6,10.7,10.8,10.9,11,11.1,11.2,12.4,12.6,12.8,13,13.1,13.2,13.3,13.4,13.5,13.6,13.7,13.8,13.9,14,14.1,15,15.1,15.2,16.7,16.8,16.9,17,17.1,17.2,17.3,17.4,17.5,17.6,17.7,17.78,18,18.1,18.2,18.3,18.4,18.5,18.6,18.7,18.8,18.9,19,19.1,19.2,19.3,19.4,19.5,19.6,19.7};//定义100个用户a[0].T=20;for(i=0;i50;i++){a[0].b[i][0]=rand()%7;a[0].b[i][1]=rand()%7;a[0].b[i][2]=rand()%7;a[0].b[i][3]=rand()%7;a[0].b[i][4]=rand()%7;}//随机的为50个体赋值L1:for(i=0;i50;i++){for(j=0;j5;j++){if(a[j].b[i][j]==0)T1=T1+0;elseif(a[0].b[i][j]==1)T1=T1+14;elseif(a[j].b[i][j]==2)T1=T1+9;elseif(a[0].b[i][j]==3)T1=T1+7;elseif(a[j].b[i][j]==4)T1=T1+5;elseif(a[0].b[i][j]==5)T1=T1+4;elseT1=T1+3;}//计算每个个体需要的资源粒子if(T1-a[0].T=48)p=980;elseif(T1-a[0].T=44)p=850;elseif(T1-a[0].T=40)p=730;elseif(T1-a[j].T=36)p=620;elseif(T1-a[0].T=32)p=520;elseif(T1-a[0].T=28)p=430;elseif(T1-a[j].T=24)p=350;elseif(T1-a[0].T=20)p=270;elseif(T1-a[0].T=16)p=200;elseif(T1-a[j].T=12)p=160;elseif(T1-a[0].T=8)p=140;elseif(T1-a[0].T=4)p=50;elseif(T1-a[j].T=0)p=40;elsep=0;T2=T1;T1=0;//把个体的资源粒子与系统的资源粒子比较,设置惩罚项for(j=0;j100;j++){if(a[j].b[i][0]==0)a[j].x[0]=0;elseif(a[j].b[i][0]==1&&a[j].SNR3.7164){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[0]=1;}elseif(a[j].b[i][0]==2&&a[j].SNR5.9474){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[0]=1;}elseif(a[j].b[i][0]==3&&a[j].SNR9.6598){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[0]=1;}elseif(a[j].b[i][0]==4&&a[j].SNR12.3610){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[0]=1;}elseif(a[j].b[i][0]==5&&a[j].SNR16.6996){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[0]=1;}elseif(a[j].b[i][0]==6&&a[j].SNR17.9629){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[0]=1;}for(m=1;m5;m++){if(a[j].b[i][m]==0)a[j].x[m]=0;elseif(a[j].b[i][m]==1&&a[j].SNR3.7164&&a[j].x[m-1]==1){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[m]=1;}elseif(a[j].b[i][m]==2&&a[j].SNR5.9474&&a[j].x[m-1]==1){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[m]=1;}elseif(a[j].b[i][m]==3&&a[j].SNR9.6598&&a[j].x[m-1]==1){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[m]=1;}elseif(a[j].b[i][m]==4&&a[j].SNR12.3610&&a[j].x[m-1]==1){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[m]=1;}elseif(a[j].b[i][m]==5&&a[j].SNR16.6996&&a[j].x[m-1]==1){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[m]=1;}elseif(a[j].b[i][m]==6&&a[j].SNR17.9629&&a[j].x[m-1]==1){a[0].b[i][5]=a[0].b[i][5]+1.806;a[j].x[m]=1;}}for(n=0;n5;n++)a[0].x[n]=0;}a[0].b[i][5]=a[0].b[i][5]-p;sum=sum+a[0].b[i][5];//计算每个个体的适应度的值{if((a[0].b[i][5]=267.29&&T2=a[0].T)||(k==50)){for(i2=0;i25;i2++)couta[0].b[i][i2]'';couta[0].b[i][5]+180.6'';gotoL2;}//满足条件指标则输出个体的各项值,停止程序,否则下一步}}{ints=0;for(i3=0;i350;i3++)s=s+a[0].b[i3][5];for(i4=0;i450;i4++)z1[i4]=a[0].b[i4][5]/s;for(i5=1;i550;i5++)z1[i5]=(z1[i5]+z1[i5-1])*1000;z1[0]=z1[0]*1000;for(i6=0;i625;i6++){r=1+rand()%1000;for(i7=0;i750;i7++){if(z1[i7]=r){for(i8=0;i85;i8++){c[i8]=a[0].b[i7][i8];}break;}elsecontinue;}r1=rand()%50;//用轮盘赌策略选择父体,随机选择母体for(i9=0;i95;i9++)d[i9]=a[0].b[r1][i9];r2=1+rand()%100;r3=1+rand()%4;if(r2=90){for(j1=0;j1r3;j1++){e[j1]=c[j1];f[j1]=d[j1];}for(j2=r3;j2=4;j2++){e[j2]=d[j2];f[j2]=c[j2];}}//满足条件交叉elsefor(j8=0;j85;j8++){e[j8]=c[j8];f[j8]=d[j8];}for(j3=0;j35;j3++){r4=(3+rand()%103)-2;r5=(1+rand()%7)-1;if(r48)e[j1]=r5;r4=(4+rand()%100)-3;r5=(2+rand()%7)-2;if(r48)f[j3]=r5;}//满足条件变异for(j5=0;j55;j5++){z[j4][j5]=e[j5];z[j4+1][j5]=f[j5];}j4=j4+2;}for(j6=0;j650;j6++)for(j7=0;j75;j7++)a[0].b[j6][j7]=z[j6][j7];k++;//更新每个个体for(k2=0;k250;k2++)a[0].b[k2][5]=0;gotoL1;}L2:;}这个算法的是在系统的资源粒子T=20的情况下,输出遗传算法中每个视频层的MCS索引号以及此种分配的系统的效用函数值,如输出34460460.262它表示加强层1-4分别选择MCS3,MCS4,MCS4,MCS6方式传输,最后一层系统对它不传输。为了得到系统的资源粒子T变法时算法的输出值,则需要对算法中的a[0].T以及后面的终止条件进行修改一下就行了。当资源粒子从16到76以4为间隔进行变法时算法输出的效用函数值以及视频层MCS选择方案如下图所示T162024283236404448525660646872MCS340603446033300334652236523245124431234311244112441112411123111221111211111U381.066460.262521.934559.86615.578697.116729.356769.356863.268863.268917.18984.271018.581051.091083.6那个论文最后少一个视频层从3-10变化时三种算法的仿真对比图,因为如果要做那个图的话还要改算法,我现在还没有做,后来可以给它补上,最后的参考文献还没有写,对于仿真图的刻度还可以再修改一下,论文你先看一下。