遗传算法中选择算子的问题clear all;close all;%ParametersSize=80; G=100; C

hans_junkers2022-10-04 11:39:541条回答

遗传算法中选择算子的问题
clear all;
close all;
%Parameters
Size=80;
G=100;
CodeL=10;
umax=2.048;
umin=-2.048;
E=round(rand(Size,2*CodeL)); %Initial Code
GG1=zeros(1,G);%用来保存适应值;
Y=zeros(2,G);%用来保存x值
%Main Program
for k=1:1:G
time(k)=k;
for s=1:1:Size
m=E(s,:);
y1=0;y2=0;
%Uncoding
m1=m(1:1:CodeL);
for i=1:1:CodeL
y1=y1+m1(i)*2^(i-1);
end
x1=(umax-umin)*y1/1023+umin;
Y(1,k)=x1;
m2=m(CodeL+1:1:2*CodeL);
for i=1:1:CodeL
y2=y2+m2(i)*2^(i-1);
end
x2=(umax-umin)*y2/1023+umin;
Y(2,k)=x2;
%F(s)=100*(x1^2-x2)^2+(1-x1)^2;%这个就是所对应的适应值函数
F(s)=10*sin(sqrt(x1.^2+x2.^2))./sqrt(1+x1.^2+x2.^2);
end
Ji=1./F;
%
fi_sum=sum(fi)
fi_Size=(Oderfi/fi_sum)*Size
fi_S=floor(fi_Size) %Selecting Bigger fi value
kk=1;
for i=1:1:Size
for j=1:1:fi_S(i) %Select and Reproduce
TempE(kk,:)=E(Indexfi(i),:);
kk=kk+1; %kk is used to reproduce
end
end
就是选择这里不懂,

已提交,审核后显示!提交回复

共1条回复
yxr26 共回答了22个问题 | 采纳率81.8%
首先介绍sort函数用法:
[B,I]=sort(A,.),I为返回的排序后元素在原数组中的行位置或列位置.B一般为排序后的数组.举例:
A = 3 4 2
1 5 3
4 7 1
[B,I]=sort(A)
B = 1 4 1
3 5 2
4 7 3
I = 2 1 3
1 2 1
3 3 2
[Oderfi,Indexfi]=sort(fi),因此这句话中的Oderfi保存了从小到大排列的结果,而Indexfi保存了Oderfi中对应原始数组(fi)的的原始位置.
fi_Size=(Oderfi/fi_sum)*Size 这句话挺难理解的,不过我运行了这个程序后,还是被我发现了
其中Oderf为 适应值 由小到大排列,fi_sum为适应值的总和,Size为总的个数,而fi_sum/size就是平均值,因此.fi_size中所存放的数据是Oderf中数值除以其平均值后的结果.其中必有大于1的,小于1的.我们这里的淘汰规则是淘汰掉 种群中小于平均值的数据,下边的代码是对这个规则的具体化
fi_S只包含0和1,其中0是小于平均值的个体,1是大于平均值的个体.
for j=1:1:fi_S(i) %Select and Reproduce
TempE(kk,:)=E(Indexfi(i),:);
kk=kk+1; %kk is used to reproduce
end
E中保存的是初始种群,我们每一代种群中都会有80个个体(每一行是一个个体,列数决定了个体范围和精度),当fi_S中某个个体(记为个体A)不是0的时候,就执行了TempE(kk,:)=E(Indexfi(i),:);
这句代码,Indexfi保存了个体A在E中的行数(也就是fi的列数),我们认定这一行(这个个体A)具有优良基因,因此保存在TempE中,进化到下一代.
好久没看遗传算法了,上边的有些术语是我自己编的,看懂就好
还有,你的程序不完全,你能把这个完整的遗传算法代码给我吗,我感觉这个程序写的很简洁,非常好.我的邮箱glinfV@163.com
另外你用这个程序算做什么?一般智能算法解决解决问题具有随机性,因此很难对误差做出评价,这也是应用受到阻碍的主要原因,如果在解决具体问题的时候,还是优先考虑定量算法的.
希望我的回答对你有所帮助.
1年前

相关推荐

MATLAB遗传算法用matlab编写程序 遗传算法中 种群规模20,迭代次数k=100,交叉概率0.8,变异概率0.5
MATLAB遗传算法
用matlab编写程序 遗传算法中 种群规模20,迭代次数k=100,交叉概率0.8,变异概率0.5.只要用遗传算法能得到最后的结果就行!
桔子是绿色哒1年前2
beautylin 共回答了21个问题 | 采纳率90.5%
fit = @(x) x(1)^2 + x(2)^2 - 16*x(1)- 5*x(1)*x(2);
options = gaoptimset('Generations',100,'PopulationSize',20,...
'CrossoverFraction', 0.8, 'ParetoFraction', 0.5);
[x fval] = ga(fit,2,[1 1],20,[],[],[0;0],[20;10],[],options);
x
fval = -fval
matlab 遗传算法 染色体为实数的交叉和变异的代码怎么写啊
daiwanily1年前1
aiwonipalema 共回答了19个问题 | 采纳率84.2%
交叉变异有很多不同的方法的 一般的你可以把上下两个在不同位置进行交换 变异可采用把某位代码变成一个随机数值
如果我有4个输入,遗传算法极值寻优中定义个体长度为4怎么定义?还有数据的范围是只定义输入和输出的范围
如果我有4个输入,遗传算法极值寻优中定义个体长度为4怎么定义?还有数据的范围是只定义输入和输出的范围

现在我的个体长度为2,如果定义个体长度为4怎么改,还有数据范围的矩阵是只表示输入和输出的范围吗?
小号手21年前1
cspcg 共回答了21个问题 | 采纳率95.2%
改lenchrom为[1 1 1 1],bound=[0 1750; 258 712; lb ub; LB UB],其中的ub UB,lb LB分别为新增个体的上下限
用一种粒子群优化算法和一种遗传算法解决下面优化问题 minf(x)=∑_(i=1)^n▒[x_i^2-10*
用一种粒子群优化算法和一种遗传算法解决下面优化问题 minf(x)=∑_(i=1)^n▒[x_i^2-10*cos⁡(2*
minf(x)=∑[x_i^2-10*cos(2*pi*x_i )+10] ,i从1到n
其中—5.12≤x_i≤5.12,i=1,2,⋯n,n=30
mt11181年前1
kenly1023 共回答了16个问题 | 采纳率93.8%
这个用标准粒子群算法就可以求解了,每个粒子由30维构成,每维代表xi;粒子的适应值用最优化的函数minf表示即可;初始化xi到-5.12到5.12之间.
用遗传算法你就用将实值问题转为离散问题,或者采用实值处理的遗传算法.
遗传算法的交叉概率设置为1会有什么不好的地方,一般推荐的是0.0.9
munue20071年前1
laren983 共回答了20个问题 | 采纳率100%
交叉概率最好不要设置为1,一般情况是0.0.95.
如果设置为1,那么每一个个体都要参与交叉,就很有可能会破坏优秀个体的结构,
从而失去某些优秀基因.
遗传算法中的锦标赛选择算法的思想是什么?
遗传算法中的锦标赛选择算法的思想是什么?
锦标赛选择算法的具体思想是什么?希望能举例说明下!
ghsshero1年前3
wxjh_2007 共回答了21个问题 | 采纳率95.2%
我理解的是,在50个人中,随机选择两组人,每组10个人,对于每组的10个人按适应度进行排列,选择两组中适应度最好的两个个体作为母代进行两两交叉;
然后再从剩下来的48个人中,随机选择两组人,每组10个人,对于每组的10个人按适应度进行排列,选择两组中适应度最好的两个个体作为母代进行两两交叉;
依此类推,知道你选出的母代个数满足你的要求,这里母代个数肯定是少于50的.
遗传算法 目标函数为:f(x)=a·x1+b·x2,其中x1∈[0,50]且角度∈[0,30°],x2∈[0,60]且角
遗传算法 目标函数为:f(x)=a·x1+b·x2,其中x1∈[0,50]且角度∈[0,30°],x2∈[0,60]且角度∈[0,120°],请问怎么编码?
__drhdf5dlz39911年前1
穿着雨衣捉蚊子 共回答了18个问题 | 采纳率94.4%
Hi我吧!
关于自适应遗传算法的交叉操作自适应遗传算法中交叉操作是选择两个染色体,然后计算交叉概率然后再按照一定的方法进行交叉,请问
关于自适应遗传算法的交叉操作
自适应遗传算法中交叉操作是选择两个染色体,然后计算交叉概率然后再按照一定的方法进行交叉,请问这两个染色体是随机选择的吗?需要多少对染色体进行交叉?
儒狼1111年前0
共回答了个问题 | 采纳率
简要说明遗传算法中交叉和变异概率是如何设定的?
skapunk1年前1
囤囤 共回答了19个问题 | 采纳率94.7%
遗传算法中的选择、交叉和变异都是随机操作,而不是确定的精确规则.这说明遗传算法是采用随机方法进行最优解搜索,选择体现了向最优解迫近,交叉体现了最优解的产生,变异体现了全局最优解的复盖.
运用MATLAB遗传算法工具箱求解非线性多目标优化问题,
运用MATLAB遗传算法工具箱求解非线性多目标优化问题,
编程过程如下:
function f1=func(x) %第一目标函数
f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4;
function f2=func(x) %第二目标函数
f2=x(:,1).*(1-x(:,2))+10;
NIND=100; %个体数目
MAXGEN=50; %最大遗传代数
NVAR=2; %变量个数
PRECI=20; %变量的二进制位数
GGAP=0.9; %代沟
trace1=[];trace2=[];trace3=[]; %性能跟踪
%建立区域描述器
FieldD=[rep([PRECI],[1,NVAR]);[1,1:4,2];rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND,NVAR*PRECI); %初始种群
v=bs2rv(Chrom.FieldD); %初始种群十进制转换
gen=1;
while gen Duomubiaoyouhua at 2
f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4;
怎样修改呢
运行出错:
Undefined command/function 'rep'.
Error in ==> GA at 10
FieldD=[rep([PRECI],[1,NVAR]);rep([1;2],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
lamber2231年前1
包痞子 共回答了26个问题 | 采纳率88.5%
将下属两个目标函数分别保存在两个m文件中
function f1=func1(x) %第一目标函数
f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4;
function f2=func2(x) %第二目标函数
f2=x(:,1).*(1-x(:,2))+10;
function GA()
clear;clc;close all
NIND=100; %个体数目
MAXGEN=50; %最大遗传代数
NVAR=2; %变量个数
PRECI=20; %变量的二进制位数
GGAP=0.9; %代沟
trace1=[];trace2=[];trace3=[]; %性能跟踪
%建立区域描述器
% rep([PRECI],[1,NVAR])
FieldD=[rep([PRECI],[1,NVAR]);rep([1;2],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND,NVAR*PRECI); %初始种群
v=bs2rv(Chrom,FieldD) ; %初始种群十进制转换
gen=1;
while gen
关于遗传算法选择概率的和在遗传算法中在计算了各个个体的选择概率后,再通过选择方法对其进行选择.若是要用轮赌的方法选择,是
关于遗传算法选择概率的和
在遗传算法中在计算了各个个体的选择概率后,再通过选择方法对其进行选择.若是要用轮赌的方法选择,是不是各个个体的选择概率和必须是1啊?若基于排序的选择,选择概率的和不是1 的情况下应采用什么痒的选择方法啊?
基于排序,对每一个个体根据它在群体中的位置确定它的复制概率,确定了复制概率后用什么方法进行选择啊?
我乃悟空1年前1
清源虎 共回答了21个问题 | 采纳率85.7%
如果用轮盘赌选择法,则待选择的个体选择概率之和一定是1;
如果是基于排序的选择,则不需要计算每个个体的选择概率,也就谈不上概率之和是不是1的说法.
我不知道你看的是什么资料,不同的资料对排序选择法的说明不同.一般情况下,排序不是根据个体在群体中的位置来确定什么复制概率的,而是根据每个个体的适应度好坏来排序的.
在遗传算法中目标函数与适应度函数有什么区别,根据哪个来选择子代个体?
02977201年前1
tvsxy 共回答了18个问题 | 采纳率88.9%
目标函数就是你希望得到的优化结果,比如函数最大值或者最小值.而适应度函数是为了计算个体的适配值.
适配值是非负的,而且要求适配值越大则该个体越优越.而目标函数则有正有负,它们之间关系多种多样,比如求最小值时,目标函数最小,则适配值越大,求最大值时目标值越大,适配值越大.
关于遗传算法的matlab运行的问题?
关于遗传算法的matlab运行的问题?
准备用遗传算法的工具箱matlab运行程序,怎么老出现上面的警告啊?怎么回事啊?
Warning:Could not find an exact (case-sensitive) match for 'crtbp'.
D:Program FilesmatlabtoolboxgatbxCRTBP.M is a case-insensitive match and will be used instead.
You can improve the performance of your code by using exact
name matches and we therefore recommend that you update your
usage accordingly.Alternatively,you can disable this warning using
warning('off','MATLAB:dispatcher:InexactMatch').
Warning:Could not find an exact (case-sensitive) match for 'crtbase'.
D:Program FilesmatlabtoolboxgatbxCRTBASE.M is a case-insensitive match and will be used instead.
You can improve the performance of your code by using exact
name matches and we therefore recommend that you update your
usage accordingly.Alternatively,you can disable this warning using
warning('off','MATLAB:dispatcher:InexactMatch').
我不是要翻译,是要怎么解决这个问题,谢谢你们的关注
会叫的草鱼1年前2
Lois011 共回答了30个问题 | 采纳率90%
应该是你没有装遗传算法工具箱或是装的工具箱出问题了,自己检查一下,应该可以排除问题的,
遗传算法求Y=X*X最大值,求指导.
xelnage1年前4
秦宛儿 共回答了19个问题 | 采纳率94.7%
/* This is a simple genetic algorithm implementation where thex05x05 */
/* evaluation function takes positive values only and thex05x05 */
/* fitness of an individual is the same as the value of thex05x05 */
/* objective functionx05x05x05x05x05x05x05 */
//
void main(void)
{
x05intx05i;
x05if ((galog = fopen("galog.txt","w"))==NULL)
x05{
x05x05exit(1);
x05}
x05generation = 0;
x05fprintf(galog,"n generation best average standard n");
x05fprintf(galog," number value fitness deviation n");
x05initialize();
x05evaluate();
x05keep_the_best();
x05while (generation < MAXGENS)
x05{
x05x05generation++;
x05x05select();
x05x05crossover();
x05x05mutate();
x05x05evaluate();
x05x05report();
x05x05//evaluate();
x05x05elitist();
x05}
x05fprintf(galog,"nn Simulation completedn");
x05fprintf(galog,"n Best member:n");
x05for (i = 0; i < NVARS; i++)
x05{
x05x05fprintf (galog,"n var(%d) = %3.6f",i,population[POPSIZE].gene[i]);
x05}
x05fprintf(galog,"nn Best fitness = %3.6f",population[POPSIZE].fitness);
x05fclose(galog);
x05printf("Successn");
}
为什么在多目标优化时选择遗传算法,而不用其他算法?
为什么在多目标优化时选择遗传算法,而不用其他算法?
在结构参数优化时,为什么在多目标优化时可以选择遗传算法,而不用其他算法?遗传算法相对其他算法的优点?
josieyuan1年前1
xianqigueiqie 共回答了15个问题 | 采纳率93.3%
会说不可以用其他算法了,遗传算法最精华就在于fitness,要是多目标优化也是把多个目标融合在一起 变成一个目标 然后再结合实际目标意义(越大越优,越小越优)进行计算fitness.至于优点,在大多数智能搜索算法里面,遗传算法的全局最优概率最大!
遗传算法、粒子群算法、蚁群算法,各自优缺点和如何混合?
舞伴1年前2
我是风沙 共回答了18个问题 | 采纳率88.9%
遗传算法适合求解离散问题,具备数学理论支持,但是存在着汉明悬崖等问题.
粒子群算法适合求解实数问题,算法简单,计算方便,求解速度快,但是存在着陷入局部最优等问题.
蚁群算法适合在图上搜索路径问题,计算开销会大.
要将三种算法进行混合,就要针对特定问题,然后融合其中的优势,比如将遗传算法中的变异算子加入粒子群中就可以形成基于变异的粒子群算法.
模式识别、神经网络、遗传算法、蚁群算法等等人工智能算法需要哪些数学知识?
模式识别、神经网络、遗传算法、蚁群算法等等人工智能算法需要哪些数学知识?
比如,需要看《算法导论》先学透其中的算法么?
coolersummer1年前1
岚妮 共回答了14个问题 | 采纳率92.9%
这些算法,如果需要搞透,数学知识越多越好.算法导论,随机过程,概率论,数理统计是基础,矩阵论也很重要.还有一个最重要的是有关优化方法的基本理论,很多的模式识别的问题,就是一个求最优解的问题.以前是有一本《计算方法》的书,里面就是用牛顿法等,来解线性方程之类,书很薄,如果搞懂了,很有启发作用.
蚁群算法、遗传算法、蜂群算法、粒子群算法和差分进化算法,这五种群智能对比分析
狮子行大运1年前1
yslzjx 共回答了23个问题 | 采纳率95.7%
粒子群算法(PSO)和遗传算法(GA)都是优化算法,都力图在自然特性的基础上模拟个体种群的适应性,它们都采用一定的变换规则通过搜索空间求解.
PSO和GA的相同点:
(1)都属于仿生算法.PSO主要模拟鸟类觅食、人类认知等社会行为而提出;GA主要借用生物进化中“适者生存”的规律.
(2)都属于全局优化方法.两种算法都是在解空间随机产生初始种群,因而算法在全局的解空间进行搜索,且将搜索重点集中在性能高的部分.
(3)都属于随机搜索算法.都是通过随机优化方法更新种群和搜索最优点.PSO中认知项和社会项前都加有随机数;而GA的遗传操作均属随机操作.
(4)都隐含并行性.搜索过程是从问题解的一个集合开始的,而不是从单个个体开始,具有隐含并行搜索特性,从而减小了陷入局部极小的可能性.并且由于这种并行性,易在并行计算机上实现,以提高算法性能和效率.
(5)根据个体的适配信息进行搜索,因此不受函数约束条件的限制,如连续性、可导性等.
(6)对高维复杂问题,往往会遇到早熟收敛和收敛性能差的缺点,都无法保证收敛到最优点.
PSO和GA不同点
(1)PSO有记忆,好的解的知识所有粒子都保存,而GA没有记忆,以前的知识随着种群的改变被破坏.
(2)在GA算法中,染色体之间相互共享信息,所以整个种群的移动是比较均匀地向最优区域移动.PSO中的粒子仅仅通过当前搜索到最优点进行共享信息,所以很大程度上这是一种单项信息共享机制,整个搜索更新过程是跟随当前最优解的过程.在大多数情况下,所有粒子可能比遗传算法中的进化个体以更快速度收敛于最优解.
(3)GA的编码技术和遗传操作比较简单,而PSO相对于GA,不需要编码,没有交叉和变异操作,粒子只是通过内部速度进行更新,因此原理更简单、参数更少、实现更容易.
(4)在收敛性方面,GA己经有了较成熟的收敛性分析方法,并且可对收敛速度进行估计;而PSO这方面的研究还比较薄弱.尽管已经有简化确定性版本的收敛性分析,但将确定性向随机性的转化尚需进一步研究.
(5)在应用方面,PSO算法主要应用于连续问题,包括神经网络训练和函数优化等,而GA除了连续问题之外,还可应用于离散问题,比如TSP问题、货郎担问题、工作车间调度等.
c++遗传算法的编码解解码问题遗传算法中采用二进制编码,每二十位二进制数表示一个基因型,一个染色体一共有20个基因型,也
c++遗传算法的编码解解码问题
遗传算法中采用二进制编码,每二十位二进制数表示一个基因型,一个染色体一共有20个基因型,也就是有400个二进制数.求如何将这四百个二进制数每二十个转化成十进制数.每个十进制数的取值范围为0到1之间.保留小数点6位.
mazhuojun1年前1
深海里的鱼儿 共回答了20个问题 | 采纳率95%
#include
using namespace std;
float transVaul(char *buf);
int main()
{
char buf[21] = "";
float arr[20] = { 0 };
cout
利用遗传算法求解区间[0,31]上的二次函数y=x*x的最大值
淄博在线kk网1年前2
为爱守侯 共回答了17个问题 | 采纳率88.2%
//void main(void){x05intx05i;x05if ((galog = fopen("galog.txt","w"))==NULL)x05{x05x05exit(1);x05}x05generation = 0;x05fprintf(galog,"n generation best average standard n");x05fprintf(galog...
遗传算法的变异率问题我有120个个体,每个个体的染色体编码是101,如果要作变异率计算,设变异率为0.01,是说有1.2
遗传算法的变异率问题
我有120个个体,每个个体的染色体编码是101,如果要作变异率计算,设变异率为0.01,是说有1.2个个体会产生变异,就是动一个染色体在这个变异的个体里,还是说有0.01X120X101=121.2个染色体发生变异.我倾向于后者.
没写清楚,应该是每个个体染色体有101位(一百零一的染色体),而不是二进制的101,
琉橙小筑1年前6
薄荷飞舞 共回答了14个问题 | 采纳率78.6%
应该是后者.
因为这是从120*101的染色体中任取一个染色体,那么就有0.01*120*101个.
遗传算法中选择算子中选择次数的问题!看图
遗传算法中选择算子中选择次数的问题!看图
如图中红色圈圈标出,这个到底是怎么得到的!
金陵王二1年前1
大小岛 共回答了25个问题 | 采纳率80%
选择操作是从初始群体(群体规模为N,即N个个体)或当代进化群体(群体规模为N)中选择N个个体,根据选择所采用的方法,劣质个体必然会被丢弃(未选择到),而为了保证群体规模不变,优质个体就必然会被选到多次.
题中产生了4个[0,1]随机数,其中有两个随机数落在了4#区间内,其余两个随机数分别落在了1# 2#区间内.
遗传算法中有一个最大迭代次数的概念,我想请问一下,这个是由自己根据题目要求自己制定的吗!
fengzhizi44121年前1
lqx01 共回答了19个问题 | 采纳率94.7%
是的.达到优化值可以停止,所以一般都有两个退出条件.
在遗传算法中,什么是选择算子,什么是交叉算子,什么是变异算子?遗传算法到底是个什么情况?
简单蔷薇1年前1
tianyebian 共回答了17个问题 | 采纳率94.1%
算子英文为operator,意思是“运算符”,加减乘除、与或非这些均属于运算符.
因此可以称选择算子为选择运算,即通过某种“公式”运算得出一个结果.
遗传算法是什么这个问题太广,你可以查阅相关资料.
用遗传算法使一个函数的形状接近于另一个已知确定的曲线.怎么来确定目标函数?请高手指教.
SWEETY071年前3
僧阁林沁 共回答了16个问题 | 采纳率87.5%
难道你说的是真实的帕累托曲线(面)?如果是求目标函数的真实帕累托曲线(面)的话只能用数学方法求解.不太明白你的意思
有蚁群算法和遗传算法,用哪种方法更能通俗易懂,容易让人明白?
dwedwqqw1年前1
之诗乎 共回答了13个问题 | 采纳率100%
说实话,这两种方法都是智能仿生算法,都比普通的算法要稍微复杂一些.我不知道你要解决什么寻优问题,但我推荐你还是用遗传算法吧.遗传算法应用比蚁群算法要广泛,了解的人也较多.蚁群算法更适合解决寻路问题、旅行商问题等.
遗传算法求解最短路径问题?从起始结点到终点必须经过中间结点的最短路径,用遗传算法求解.
MatrixReloaded1年前1
jinsanjiao 共回答了15个问题 | 采纳率100%
#include "stdafx.h"
#include "stdio.h" //标准输入输出库
#include "stdlib.h" //标准函数库
#include "time.h"
#include "iostream.h"
#include "iomanip.h"
#include "math.h" //数学函数库
#define MAX 1 //设定求最大适应值
#define MIN 2
#define CHROMLENGTH 15 //染色体长度,注意编码变化时,要随时修改
#define MAXNUM 1000
#define Cmax 30 //估计最大值
#define Cmin 0 //估计最小值
int PopSize = 150; //每代最大个体数
int FunctionMode = MIN;
double m_fPc = 0.9; //交叉概率
double m_fPm = 0.009; //变异概率
int MaxGeneration = 20; //最大世代数
int d[150][15]; //找到染色体并拷贝到这个数组中
int s[150][15];
int generation; //世代数
int Best_Index; //最好个体下标
int Worst_Index; //最坏个体下标
struct individual //定义个体数据结构
{
double chrom[CHROMLENGTH+1]; //染色体
double value; //函数值
double fitness; //适应度
};
struct individual
BestIndividual; //当代最佳个体
struct individual
WorstIndividual;
struct individual
Group[150]; //种群
double Random(double Low, double High)//本函数实现随机产生Low-High之间的实数 .意思:随机
{
return((double)rand()/RAND_MAX)*(High-Low)+Low;
}
double Max(double a, double b)
{
if(a>=b) return a;
else return b;
}
void GenerateInitialPopulation()//种群初始化,二进制编码初始化其中'1'表示路径顶点在最短路径中,'0'则反之
{
int i,j;

for(i = 0; i < PopSize; i++)
{
for(j = 1; j < CHROMLENGTH-2; j++)
{
Group[i].chrom[j] = (int)(Random(1,10)
BP算法、BP神经网络、遗传算法、神经网络这四者之间的关系是什么?完全不懂,解答越简明扼要越好
wangnan20081年前1
segali 共回答了16个问题 | 采纳率93.8%
这四个都属于人工智能算法的范畴.其中BP算法、BP神经网络和神经网络
属于神经网络这个大类.遗传算法为进化算法这个大类.
神经网络模拟人类大脑神经计算过程,可以实现高度非线性的预测和计算,主要用于非线性拟合,识别,特点是需要“训练”,给一些输入,告诉他正确的输出.若干次后,再给新的输入,神经网络就能正确的预测对于的输出.神经网络广泛的运用在模式识别,故障诊断中.BP算法和BP神经网络是神经网络的改进版,修正了一些神经网络的缺点.
遗传算法属于进化算法,模拟大自然生物进化的过程:优胜略汰.个体不断进化,只有高质量的个体(目标函数最小(大))才能进入下一代的繁殖.如此往复,最终找到全局最优值.遗传算法能够很好的解决常规优化算法无法解决的高度非线性优化问题,广泛应用在各行各业中.差分进化,蚁群算法,粒子群算法等都属于进化算法,只是模拟的生物群体对象不一样而已.
遗传算法解决多元函数的问题,目标函数:一个含有30个变量的函数求极小值问题约束条件:每个变量均为0~100之间的自然数编
遗传算法解决多元函数的问题,
目标函数:一个含有30个变量的函数求极小值问题
约束条件:每个变量均为0~100之间的自然数
编码方式:我采用的是二进制编码,8位表示一个变量,那么每个可行解(染色体)即为240位的二进制数.
遗传代数:200
种群大小:100
交叉概率:0.6
变异概率:0.4
运行结果很不理想,本人GA初学者,怎么样改进?编码设计是否合理?参数应该选择多少?或者提供一种您认为针对该问题适用的编码方式及参数,
65581年前1
wr3410 共回答了16个问题 | 采纳率81.3%
如果变量取值为自然数,即不是连续取值,8位二进制够了,其实7位就行了.
如果变量不是取自然数,而是连续取值,8位二进制就少了,量化误差太大.
还有,变异概率貌似太大了点.
遗传算法里的“代沟”(gap)是什么意思?
遗传算法里的“代沟”(gap)是什么意思?
要求讲的简单易懂.
select('sus',Chrom,FitnV,GAP);
%选择的时候:chrom:种群编码;FitnV:适应度;GAP:代沟。
我就是想问这个代沟是什么意思
crane_wh1年前4
wangzt1976 共回答了25个问题 | 采纳率84%
代沟是用于控制每代中种群被替换的比例,即每代有N*(1-G)个父代个体被选中进入下一代种群.G=50%意味着一半的种群将被置换.
神经网络和遗传算法有什么关系?
ggh1231年前1
zhang_shiwei 共回答了24个问题 | 采纳率91.7%
神经网络的设计要用到遗传算法,遗传算法在神经网络中的应用主要反映在3个方面:网络的学习,网络的结构设计,网络的分析.
1.遗传算法在网络学习中的应用
在神经网络中,遗传算法可用于网络的学习.这时,它在两个方面起作用
(1)学习规则的优化
用遗传算法对神经网络学习规则实现自动优化,从而提高学习速率.
(2)网络权系数的优化
用遗传算法的全局优化及隐含并行性的特点提高权系数优化速度.
2.遗传算法在网络设计中的应用
用遗传算法设计一个优秀的神经网络结构,首先是要解决网络结构的编码问题;然后才能以选择、交叉、变异操作得出最优结构.编码方法主要有下列3种:
(1)直接编码法
这是把神经网络结构直接用二进制串表示,在遗传算法中,“染色体”实质上和神经网络是一种映射关系.通过对“染色体”的优化就实现了对网络的优化.
(2)参数化编码法
参数化编码采用的编码较为抽象,编码包括网络层数、每层神经元数、各层互连方式等信息.一般对进化后的优化“染色体”进行分析,然后产生网络的结构.
(3)繁衍生长法
这种方法不是在“染色体”中直接编码神经网络的结构,而是把一些简单的生长语法规则编码入“染色体”中;然后,由遗传算法对这些生长语法规则不断进行改变,最后生成适合所解的问题的神经网络.这种方法与自然界生物地生长进化相一致.
3.遗传算法在网络分析中的应用
遗传算法可用于分析神经网络.神经网络由于有分布存储等特点,一般难以从其拓扑结构直接理解其功能.遗传算法可对神经网络进行功能分析,性质分析,状态分析.
遗传算法虽然可以在多种领域都有实际应用,并且也展示了它潜力和宽广前景;但是,遗传算法还有大量的问题需要研究,目前也还有各种不足.首先,在变量多,取值范围大或无给定范围时,收敛速度下降;其次,可找到最优解附近,但无法精确确定最扰解位置;最后,遗传算法的参数选择尚未有定量方法.对遗传算法,还需要进一步研究其数学基础理论;还需要在理论上证明它与其它优化技术的优劣及原因;还需研究硬件化的遗传算法;以及遗传算法的通用编程和形式等.
遗传算法中的变异操作问题在遗传算法中,当需要进行变异操作时,随机选取基因座后,是不是要对种群中所有的个体在随机选择的基因
遗传算法中的变异操作问题
在遗传算法中,当需要进行变异操作时,随机选取基因座后,是不是要对种群中所有的个体在随机选择的基因座上进行变异?还是只对种群中一部分个体在随机选择的基因座上进行变异?如果是一部分,这个比例怎么确定?
冷月9871年前1
悠然西溪 共回答了20个问题 | 采纳率90%
我觉得应该是对整个种群作变异处理
变异:
对群体P(t)中的每一个个体,以某一概率(称为变异概率)改变某一个或某一些基因座上的基因值为其他基因值
遗传算法适应度函数的确定小弟初学遗传算法看到《matlab遗传算法工具箱及应用》第107页例子,其中有个命令fitnv=
遗传算法适应度函数的确定
小弟初学遗传算法看到《matlab遗传算法工具箱及应用》第107页例子,其中有个命令
fitnv=ranking(-objv),为什么加负号啊?这里目标函数是求最大值,但我看58页中提到目标函数为最大化问题时候,适应度函数直接就等于目标函数啊,是我理解错误了吗?
baidu19021年前1
348516850 共回答了19个问题 | 采纳率94.7%
正常情况下,求最大值的,适应度要转化为越小越好,其中有一个方法就是在目标函数前加个负号.或者用1除.
遗传算法求多元函数和一定条件下的函数极值
遗传算法求多元函数和一定条件下的函数极值
比如目标函数为f=x1^2+2*x2+x3^3+x4^2+x5*2
约束条件为 x1+x2+x3+x4+x5=1
0如何用遗传算法求这样的函数值呢?是用目标分配模型求解还是用什么样的模型?
十里的小vv1年前1
幽幽小蛮 共回答了18个问题 | 采纳率94.4%
我觉得这个问题主要难点在建立满足约束条件的初始种群,进化过程的编程很多地方都能找到.先建立一个Ax5的种群,A是种群里个体数量,然后对种群做一下处理:求出每个个体里面的x1到x5的和sum,再把1/sum分别乘以那一行的每个值并置换掉,假设只有一个个体,处理后的种群就是[x1/sum,x2/sum,x3/sum,x4/sum,x5/sum].也许还有其他办法,我就想到这个
启发式算法是最优化算法吗?像遗传算法、粒子群算法这一类的可不可以归结到最优化算法里?
yuansy1年前1
一个孩子 共回答了21个问题 | 采纳率81%
启发式算法实际上就是针对具体问题,加入了人的经验的最优求解算法.不同的问题,有不同的启发规则.
遗传算法、粒子群算法这一类算法某种程度上可以归为启发式算法.因不同的问题,实现遗传算法和粒子群算法的方法与途径也会有所区别.
关于遗传算法选择概率的和的计算过程——数学达人请进!
关于遗传算法选择概率的和的计算过程——数学达人请进!
急求:
遗传算法中:
(1)选择概率"Ps=fi/∑f"的计算过程是?
(2)适应度期望值的“fi/f(平均值)”的计算过程?
以上,以f(x)=X^2),x∈[0,31],经取值13,概率计算结果=0.14,适应度期望值=0.58为例。
尼采地太阳1年前1
lotus_song 共回答了22个问题 | 采纳率72.7%
首先y=x*x在[0,31]这个函数的极值是取31的时候,用遗传算法来解答这样的问题是有点多余的。遗传算法的主要步骤是4步,初始化种群,选择,交叉,变异。这里说的淘汰函数,很可能就是在选择选择算子,这个算子是根据最适合最优先的算法来实现。举个简单的例子,你要用数字进行遗传算法,肯定得把他转化为2进制的染色体,【0-31】就是从00000-11111,每条染色体5个基因。对于选择运算来说,每次要从种...
遗传算法编码已经知道初始染色体群为ababcd、aaccbb,如何定义一个适应度函数,使得子代染色体群平均适应度比初始染
遗传算法编码
已经知道初始染色体群为ababcd、aaccbb,如何定义一个适应度函数,使得子代染色体群平均适应度比初始染色体高?
或者初始染色体群为ababcd、aaccbb可以转化为0,1代码的形式吗?
晚风待晓1年前1
心悦_oo 共回答了19个问题 | 采纳率84.2%
你这种情况应该用实数编码(四个编码分别为a,b,c,d),交叉计算的时候比如aba与bcd的子染色体为aca、bbd(在第二个基因为上交叉).至于“使得子代染色体群平均适应度比初始染色体高”
的话就要看你的编码abcd分别代表什么意义了,根据适应度函数计算出父染色体和子染色体的适应度值,然后进行比较,如果子染色体适应度值比父染色体大则保留下来,否则淘汰掉.
谁知道遗传算法中evolutionary inversion operations的具体翻译?
站在最高处1年前1
wfq2007 共回答了18个问题 | 采纳率88.9%
叫做进化翻转操作
即变异算子直接对一个编码中随机挑选的某一位进行反转操作.
遗传算法交叉和变异概率怎么选择
风清雨淡1年前1
萧遥游 共回答了11个问题 | 采纳率100%
第一种是定值,一般而言,交叉概率在0.9-0.97之间任取,变异概率在0.1-0.001之间任取;
第二种是自适应取,按交叉或变异个体的适应度值以及当代的平均适应度值计算,每代的个体都不一样,相关公式可以查资料得到.
蚁群 神经网络 微分进化 遗传算法 具体应用难易程度?
望还想1年前2
落落之华 共回答了15个问题 | 采纳率93.3%
要来个对比么?
其中蚁群算法、遗传算法我比较熟悉,神经网络稍有了解,微分进化算法不熟悉.要说应用的难易程度,我排个序,由难到易依次为:神经网络->遗传算法->蚁群算法->微分进化.
具体实施时,除神经网络较复杂外,其他三种算法都还好.
遗传算法 最大进化代数是什么麻烦问下遗传算法中,最大进化代数,变异概率,自变量离散精度分别是什么意思?
冷枫叶1年前1
dd者柠乐 共回答了14个问题 | 采纳率92.9%
最大进化代数就是设置的循环的次数
变异概率就是一个个体变成另一个个体的概率
自变量离散精度就是数值的精度的意思
求最大值时,遗传算法相对梯度算法的优势
xdq3439051年前1
ocelot753 共回答了20个问题 | 采纳率95%
避免陷入局部极值
遗传算法中 染色体长度是指变量数乘以变量二进制位数还是指变量二进制位数
芽芽宝宝1年前1
水逐流 共回答了22个问题 | 采纳率90.9%
变量二进制位数