谁有C++或Matlab 的源程序啊,用来解决基于遗传算法任务调度问题的
GA例如:也得到了自己,原来的代码是有缺陷的,我已得到纠正,通过调试。 对于初学者,尤其是没有编程经验的是遗传算法一个非常有用的文档实例以下说明%的遗传算法%%找到了以下功能最大%%F(X)= 10 *罪(5倍)+7 * X与10中的第二表现为价值的COS(4倍)的x∈[0,10]%%一个二进制值问题,两个值中的一个?10提供了每个(10-0)的分辨率/(2 ^ 10-1)≈0.01。可变结构域[0,10],%%成两个离散范围[0,1023]中,x = 0 10 * b/1023,其中b是[0,1023]是一个二进制数。 %%%%-------------------------------------- -------------------------------------------------- ----------------------%%---------------------- -------------------------------------------------- --------------------------------------%%编程 BR /》%---------------------------------------------- - %2.1初始化(编码)%initpop.m性能的功能是实现人口的初始化,种群规模代表了规模群体,chromlength表示染色体的长度(一个二进制数的长度), %的长度的依赖于长度可变的二进制代码(10在本实施例中取入)。 %遗传算法子程序%名称:initpop.m %初始化功能弹出= initpop(种群规模,chromlength)流行= ROUND(RAND(种群规模,chromlength ));%兰特为{0,1}的行种群规模的每个单元随机生成的,列于chromlength矩阵的数量,%伊南端边境矩阵的每个单元将被舍入。初始种群产生。 2.2%计算目标函数值%2.2.1二进制数转换为十进制数(1)%遗传算法子程序%名称:decodebinary。产生m %[2 ^ N 2 ^(N-1)... 1]行向量,然后总结,二进制到十进制的转换功能POP2 = decodebinary(POP) [PX,PY] =大小(POP);%求流行的行和列对于i = 1:。 PY POP1(:,I)= 2 ^(PY-I)*。流行音乐(:,i)条; POP2 = SUM(POP1,2);%求POP1和%2.2.2二进制编码成十进制数(2)函数的每一行%decodechrom.m功能是将染色体(或二进制编码)转换为十进制参数SPOINT说是解码的二进制字符串起始位置%(对有关多个变量,如果两个变量表示20,10各变量的,从开始的第一个变量,从11开始另一个变量。在这种情况下1),%的所述参数1ength截距长度(在本例中10)。 %遗传算法子程序%名称:decodechrom.m %将被转换成二进制编码的十进制功能POP2 = decodechrom(流行,SPOINT,长度) POP1 =流行(:,SPOINT:SPOINT +长度-1); POP2 = decodebinary(POP1); %2.2.3计算目标函数值%calobjvalue.m函数的函数计算来实现目标函数,公式使用仿真的例子在这篇文章中,可以根据不同的优化问题。 %遗传算法子程序%名称:calobjvalue.m %计算,实现了目标函数函数[objvalue] = calobjvalue(POP) TEMP1 = decodechrom(流行,1,10);%每一行都会弹出到小数点 X = temp1目录*一千零二十三分之十,而在第二个数字为可变数目的域 objvalue = 10 *罪(5%范围内* X)+7 * COS(4 * X);%目标函数值计算个人计算为2.3%适应值%遗传算法子程序%名称:calfitvalue。米%计算个体的适应度功能fitvalue = calfitvalue(objvalue)全球的Cmin; 的Cmin = 0; [PX,PY] =大小(objvalue); 对于i = 1:PX 如果objvalue(I)+的Cmin》 0 温度=的Cmin + objvalue(i)条; 温度= 0.0; fitvalue(I)=温度; fitvalue = fitvalue’; 2.4%选择复制%选择或复制操作是决定哪些人可以进入下一代。用于选择轮盘选择方法的程序,该方法是比较容易实现。根据等式PI = FI /Σfi= FI / FSUM %,选择步骤:(1)%1)的生成吨,由下式计算并FSUM圆周率% 2)以产生{0,1}的随机数的rand(),求S =兰特()* FSUM %3)找出最小Σfi≥SK,k是要选择的第一个人 》 4%)N次2),3)在N个人获得,成为第一代T = T +1 %的人口遗传算法子程序%名称:selection.m 》%选择复制函数[newpop] =选择(流行,fitvalue) totalfit = SUM(fitvalue);%的价值,并寻求适应 fitvalue = fitvalue / totalfit;%,单个人是选中的概率 fitvalue = cumsum(fitvalue);%为fitvalue = [1 2 3 4],然后cumsum(fitvalue)= [1 3 6 10] [PX,PY] =大小(流行) ; 毫秒=排序(兰特(PX,1));%排序 fitin = 1; NEWIN = 1; 同时NEWIN 《= PX 如果(毫秒(NEWIN))《fitvalue(fitin) newpop(NEWIN)=流行(fitin); NEWIN = NEWIN +1; fitin = fitin +1; 2.5%跨%交叉(交叉),具有群体中的每个个体之间有一定几率件交叉,从每个字符串两个人到一个位置%(通常为随机确定)开始交流,这类似于生物进化基因分裂和重组的过程。例如,假设两个父个体X1,X2是:从每个人的横截面3月初%X1 = 0100110 %×2 = 1010001 %,而且2后得到跨越新的后代Y1,Y2,分别为:%Y1 = 0100001 %Y2 = 1010110 %,使两者是有一些两个父个体特征的自我后代。我们可能会使用它的父个体组合成一个更高程度的契合个体的后代付出。 %交实际上是在遗传算法的主要特点之一就是与其他传统的优化方法不同。 %遗传算法子程序%名称:crossover.m %交函数[newpop] =交叉(流行,PC) [PX,PY] =大小(POP); newpop =的人(尺寸(流行)); 对于i = 1:2:PX-1 如果(兰特《PC) CPOINT = ROUND(RAND * PY); newpop(我,:) = [流行(I,1:CPOINT),流行(I +1,CPOINT +1:PY)]; newpop(I +1,:) = [流行(我+1,1:CPOINT),流行(I,CPOINT +1:PY)]; newpop(我,:) =流行(I); newpop(I +1,:) =弹出第(i +1); %2.6变异%的变异(突变),基因突变在生物进化英寸变异常见的是指每个人的每个父比特翻转概率时,从“1”到“0”,%或从“0”到“1”。遗传算法求解过程中的变化可以随机搜索,可能会在整个空间中存在的解决方案,这样你就可以得到一定程度上的全局最优解。 %遗传算法子程序%名称:mutation.m %的变化函数[newpop] =突变(流行音乐,下午) [PX,PY] =大小(POP); newpop =的人(尺寸(流行)); 对于i = 1:PX 如果(兰特《时) M点= ROUND(RAND * PY); 如果M点《= 0 M点= 1; newpop(I)=流行(I); (如有)(newpop(I,M点))== 0 newpop(I,M点)= 1; newpop(I,M点)= 0; newpop(I)=流行(I); 2.7%找上人口最多的增益健身和自我%遗传算法子程序%名称:best.m %找到上人口最多的适应值函数[bestindividual,BESTFIT] =最好的(流行,fitvalue)[PX,PY] =大小(POP); bestindividual =流行(1,:); BESTFIT = fitvalue(1); 对于i = 2:PX 如果fitvalue(一)》; BESTFIT bestindividual =流行(我,:); BESTFIT = fitvalue(I); 2.8%,主要%的遗传算法主要%名称:genmain05.m CLF BR /》种群规模= 20;%的人口规模 chromlength = 10;%字符串的长度(个体长度)件= 0.6;%交叉概率时= 0.001%,变异概率 》 流行= initpop(种群规模,chromlength);%随机产生初始种群对于i = 1点20%,20是迭代 [objvalue] = calobjvalue(POP)的数量;%计算目标函数 fitvalue = calfitvalue(objvalue);%计算的人口,以适应每个人度 [newpop] =选择(流行,fitvalue);%复制 [newpop] =交叉(流行,PC);%交 [newpop] =突变(流行,PC); %变化 [bestindividual,BESTFIT] =最好的(流行,fitvalue);%找到个人和他们的健身健身 y的最多的人口(I)= MAX(BESTFIT); N(I)= I; POP5 = bestindividual; ×(ⅰ)= decodechrom(POP5,1,chromlength)*一千〇二十三分之一十; 流行= newpop; fplot(’10 *罪(5 * x)的7 * COS(4 * X)’,[0 10])保持在图(X,Y,’R *’)抱过[Z指数] = MAX(Y);%计算最大和它的位置 X5 = X (指数)%计算得到了X对应于最大价值 Y = Z 追求最大[问题] F(X)=×10 *罪(5倍)7 * COS(4倍) ,其中0 《= X 《= 9 [分析]选择二进制编码,个人在10人口的数量,二进制编码长度为20,0.95交叉概率,变异概率为0.08 [清单] %编写目标函数函数[溶胶中,eval] =健身(溶胶,期权) X =溶胶(1); EVAL =×10 *罪(5 * x)的7 * COS(4 * x)的; %fitness.m上述功能作为文件存储和放置 initPop工作目录= initializega(10,[0 9],’健身’);%生成初始种群,大小10 [X endPop,BPOP,跟踪] = GA([0 9],’健身’,,initPop,[1E-6 1 1],’maxGenTerm’,25,’normGeomSelect’,... [0.08],[’arithXover’],,’nonUnifMutation’,[2 25 3])%25倍遗传迭代计算借用为:x = 7.8562 24.8553(当x为7.8562时,F(X)取最大值24.8553)注:遗传算法一般用来取得近似最优解,而不是最优的解决方案。 遗传算法实例2 【问题】在-5 《=熙《= 5,I = 1,2,的范围内,解决 F(X1,X2)= -20 * EXP (-0.2 * SQRT(0.5 *(X1. ^ 2×2 ^ 2)))-EXP(0.5 *(COS(2 * PI *×1)COS(2 * PI *×2)))的最低22.71282。 [分析]人口规模10,最大代数1000,变异率0.1,交叉率0.3 [清单] %源函数的matlab代码函数[EVAL] = F(溶胶) numv =大小(溶胶,2); X =溶胶(1:numv); EVAL = -20 * EXP(-0.2 * SQRT(SUM(X. ^ 2)/ numv)))-EXP(SUM(COS(2 * PI * X))/ numv)22.71282; %适应度函数的matlab代码函数[溶胶中,eval] =健身(溶胶,期权) numv =大小(溶胶,2)-1; X =溶胶(1:numv); EVAL = F(X); EVAL = - EVAL; %遗传算法的matlab代码界的人=(2,1)* [-5 5]; [P,endPop,bestSols,跟踪] = GA(界,’健身’)注:前两个文件存储为m文件和工作目录下放置,运行结果P = 0.0000 -0.0000 0.0055 我们可以直接借鉴F(x)的图形来大概了解一下F(x)是最具价值的数量,同时也验证了利用优化功能。 MATLAB命令行中,执行以下命令: fplot(’×10 *罪(5 * x)的7 * COS(4 * x)的’,[0,9]) evalops传递给健身功能参数,选择采用二进制编码的准确性,termops是选择在功能maxGenTerm,即遗传代数年底通过一个maxGenTerm参数。功能被发送到交xoverops参数。 mutops是传递给函数参数的变化。 [问题]求f(x)的= X +10 *罪(5倍)+7 * COS(4倍)的最大值,其中0 《= X 《= 9 [分析选择]二进制代码,个人在10人口数,二进制代码长度为20,0.95交叉概率,变异概率为0.08 [清单] %编写目标函数功能[溶胶中,eval] =健身(溶胶,期权) X =溶胶(1); EVAL = X +10 *罪(5 * x)的7 * COS(4 * x)的; %fitness.m上述功能作为文件存储和放置 initPop工作目录= initializega(10,[0 9],’健身’);%生成初始种群大小为10 [X endPop,BPOP,跟踪] = GA([0 9],’健身’,,initPop,[1E-6 1 1],’maxGenTerm’,25,’normGeomSelect’,... [0.08],[’arithXover’],,’nonUnifMutation’,[2 25 3])%25倍遗传迭代计算借用为:x = 7.8562 24.8553(当x为7.8562时,F(X)取最大值24.8553)注:遗传算法一般用来取得近似最优解,而不是最优的解决方案。 遗传算法实例2 【问题】在-5 《=熙《= 5,I = 1,2,的范围内,解决 F(X1,X2)= -20 * EXP (-0.2 * SQRT(0.5 *(X1. ^ 2 +的2倍。^ 2)))-EXP最小值(0.5 *(COS(2 * PI *×1)+ COS(2 * PI *×2)))22.71282本。 [分析]人口规模10,最大代数1000,变异率0.1,交叉率0.3 [清单] %源函数的matlab代码函数[EVAL] = F(溶胶) numv =大小(溶胶,2); X =溶胶(1:numv); EVAL = -20 * EXP(-0.2 * SQRT(SUM(X. ^ 2)/ numv)))-EXP(SUM(COS(2 * PI * X))/ numv)22.71282; %适应度函数的matlab代码函数[溶胶中,eval] =健身(溶胶,期权) numv =大小(溶胶,2)-1; X =溶胶(1:numv); EVAL = F(X); EVAL =-EVAL; %遗传算法的matlab代码界的人=(2,1)* [-5 5]; [P,endPop,bestSols,跟踪] = GA(界,’健身’)注:前两个文件存储为m文件和工作目录下放置,运行结果P = 0.0000 -0.0000 0.0055 我们可以直接得出F(x)的图形来大概了解一下F(x)是最具价值的数量,同时也验证了利用优化功能。 MATLAB命令行中,执行以下命令: fplot(’X +10 *罪(5 * x)的7 * COS(4 * x)的’,[0,9]) evalops传递给适应度函数的参数,选择采用二进制编码的准确性,termops是选择在功能maxGenTerm,即遗传代数年底通过一个maxGenTerm参数。功能被发送到交xoverops参数。 mutops是传递给函数参数的变化。
crossover无法打开程序
crossover的使用过程中出现的问题和解决方法:原因分析:出现X11丢失的主要是因为缺少的X11软件包,这一错误在Mac OS 10.6系统上发生的频率比较高,在Mac OS 10.8及更高版本中已经解决了解决。解决方法:1、安装x11安装包1)要安装缺少的X11软件包,先要将软件包准备好,可以在网上下载。插入Mac OS 10.6光盘并打开“可选安装”文件夹。图1:下载软件2)运行可选Installs.mpkg。图2:运行3)展开应用程序部分,只需选择X11并安装。图3:安装软件4)最后再次尝试打开Crossover,就不会出现提示了。2、升级系统Mac OS现在默认包含X11库CrossOver需求,我们只要将系统直接更新就可以了。使用CrossOver这款系统兼容软件的过程中,大家可能会出现不同的问题