遗传算法解非线性方程

合集下载

非线性方程组的求解(汇编)

非线性方程组的求解(汇编)

非线性方程组的求解摘要:非线性方程组求解是数学教学中,数值分析课程的一个重要组成部分,作为一门学科,其研究对象是非线性方程组。

求解非线性方程组主要有两种方法:一种是传统的数学方法,如牛顿法、梯度法、共轭方向法、混沌法、BFGS 法、单纯形法等。

传统数值方法的优点是计算精度高,缺点是对初始迭代值具有敏感性,同时传统数值方法还会遇到计算函数的导数和矩阵求逆的问题,对于某些导数不存在或是导数难求的方程,传统数值方法具有一定局限性。

另一种方法是进化算法,如遗传算法、粒子群算法、人工鱼群算法、差分进化算法等。

进化算法的优点是对函数本身没有要求,不需求导,计算速度快,但是精度不高。

关键字:非线性方程组、牛顿法、BFGS 法、记忆梯度法、Memetic 算法1: 三种牛顿法:Newton 法、简化Newton 法、修改的Newton 法【1-3】求解非线性方程组的Newton 法是一个最基本而且十分重要的方法, 目前使用的很多有效的迭代法都是以Newton 法为基础, 或由它派生而来。

n 个变量n 个方程的非线性方程组, 其一般形式如下:⎪⎪⎩⎪⎪⎨⎧===0),...,(...0),...,(0),...,(21212211n n n n x x x f x x x f x x x f (1)式(1)中,),...,(21n i x x x f ( i=1, ⋯, n) 是定义在n 维Euclid 空间Rn 中开域 D 上 的实值函数。

若用向量记号,令:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n x x x ...X 21,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡====)(...)()(0),...,(...0),..,(0)...,()(2121212,211X f X f X f x x x f x x x f x x x f X F nn n n n则方程组(1)也可表示为:0)(=X F(2) 其中:X ∈R n ,F ∶R n →R 0, F(X) ∈R n , R n 为赋值空间。

使用遗传算法进行优化问题求解的技巧

使用遗传算法进行优化问题求解的技巧

使用遗传算法进行优化问题求解的技巧遗传算法是一种模拟自然进化过程的优化算法,被广泛应用于各种优化问题的求解中。

它通过模拟自然界中的遗传、交叉和变异等过程,不断演化出更优解的种群。

本文将介绍使用遗传算法进行优化问题求解的一些技巧。

一、问题建模在使用遗传算法求解优化问题之前,首先需要将问题进行合理的建模。

建模的关键是定义适应度函数,即评价解的好坏程度的函数。

适应度函数应该能够准确地反映出问题的目标和约束条件。

在建模时,还需要确定问题的变量范围、约束条件等。

二、编码与解码遗传算法对问题的解进行编码,将解表示为染色体或基因的形式。

编码的方式有很多种,常见的有二进制编码、实数编码和排列编码等。

编码的选择应根据问题的特点和求解的要求进行合理的选择。

解码是将编码后的染色体或基因解码成问题的实际解。

解码过程应与编码过程相逆,保证解码后的结果能够准确地表示问题的解。

三、种群初始化种群初始化是遗传算法的起点,它决定了算法的初始状态。

种群的初始化应该尽量保证多样性,避免陷入局部最优解。

常见的初始化方法有随机初始化和启发式初始化等。

在初始化时,还可以利用问题的特点进行有针对性的初始化,提高算法的效率。

四、选择操作选择操作是遗传算法中的关键步骤,它决定了哪些个体能够生存下来并参与后续的交叉和变异操作。

选择操作的目标是根据个体的适应度值,按照一定的概率选择优秀个体,并保留下来。

常见的选择方法有轮盘赌选择、锦标赛选择和排名选择等。

选择操作应该保证优秀个体有更高的生存概率,同时也应该给予较差个体一定的生存机会,以保持种群的多样性。

五、交叉操作交叉操作是遗传算法中的重要步骤,它模拟了自然界中的基因交叉过程。

交叉操作通过将两个个体的染色体或基因进行交叉,产生新的个体。

交叉操作的目标是将两个个体的优秀特征结合起来,产生更优解的个体。

常见的交叉操作有单点交叉、多点交叉和均匀交叉等。

在进行交叉操作时,应该根据问题的特点和求解的要求进行合理的选择。

遗传算法及应用

遗传算法及应用

遗传算法将问题的求解表示成“染色体”(用编码 表示字符串)。该算法从一群“染色体”串出发, 将它们置于问题的“环境”中,根据适者生存的原 则,从中选择出适应环境的“染色体”进行复制, 通过交叉、变异两种基因操作产生出新的一代更适 应环境的“染色体”种群。随着算法的进行,优良 的品质被逐渐保留并加以组合,从而不断产生出更 佳的个体。这一过程就如生物进化那样,好的特征 被不断的继承下来,坏的特征被逐渐淘汰。新一代 个体中包含着上一代个体的大量信息,新一代的个 体不断地在总体特性上胜过旧的一代,从而使整个 群体向前进化发展。对于遗传算法,也就是不断接 近最优解。
优势
总的来说,遗传算法与其他寻优算法相比的主要特点可以归纳如下: 1)遗传算法是对参数的编码进行操作,而不是对参数本身。 2)遗传算法是从许多初始点开始并行操作,而不是从一个点开始。因而 可以有效地防止搜索过程收敛于局部最优解,而且有较大可能求得全部 最优解。 3)遗传算法通过目标函数来计算适配度,而不要求其他的推导和附属信 息,从而对问题的依赖性较小。 4)遗传算法使用概率的转变原则,而不是确定性原则。 5)遗传算法在解空间内不是盲目地穷举或完全随机测试,而是一种启发 式搜索,其搜索效率往往优于其他算法。 6)遗传算法对于待寻优的函数基本无限制,它既不要求函数连续,更不 要求可微;既可以是数学解析式所表达的显函数,又可以是映射矩阵甚 至是神经网络等隐函数,因而应用范围很广。 7)遗传算法更适合大规模复杂问题的优化。
6.2遗传算法的基本操作与模式理论
下面通过一个简单的例子,详细描述遗传算法的基 本操作过程,然后给出简要的理论分析,从而清晰 地展现遗传算法的原理和特点。 6.2.1遗传算法的基本操作 例:设需要求解的优化问题为当自变量x在0~31之间 取整数值时寻找f(x)=x^2函数的最大值。枚举的方 法是将x取尽所有可能值,观察能否得到最高的目标 函数值。尽管对如此简单的问题该法是可靠的,但 这是一种效率很低的方法。下面运用遗传算法来求 解这个问题。

非线性方程组的求解

非线性方程组的求解

非线性方程组的求解摘要:非线性方程组求解是数学教学中,数值分析课程的一个重要组成部分,作为一门学科,其研究对象是非线性方程组。

求解非线性方程组主要有两种方法:一种是传统的数学方法,如牛顿法、梯度法、共轭方向法、混沌法、BFGS 法、单纯形法等。

传统数值方法的优点是计算精度高,缺点是对初始迭代值具有敏感性,同时传统数值方法还会遇到计算函数的导数和矩阵求逆的问题,对于某些导数不存在或是导数难求的方程,传统数值方法具有一定局限性。

另一种方法是进化算法,如遗传算法、粒子群算法、人工鱼群算法、差分进化算法等。

进化算法的优点是对函数本身没有要求,不需求导,计算速度快,但是精度不高。

关键字:非线性方程组、牛顿法、BFGS 法、记忆梯度法、Memetic 算法1: 三种牛顿法:Newton 法、简化Newton 法、修改的Newton 法【1-3】 求解非线性方程组的Newton 法是一个最基本而且十分重要的方法, 目前使用的很多有效的迭代法都是以Newton 法为基础, 或由它派生而来。

n 个变量n 个方程的非线性方程组, 其一般形式如下:⎪⎪⎩⎪⎪⎨⎧===0),...,(...0),...,(0),...,(21212211n n n n x x x f x x x f x x x f (1)式(1)中,),...,(21n i x x x f ( i=1, ⋯, n) 是定义在n 维Euclid 空间Rn 中开域 D 上 的实值函数。

若用向量记号,令:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n x x x ...X 21,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡====)(...)()(0),...,(...0),..,(0)...,()(2121212,211X f X f X f x x x f x x x f x x x f X F nn n n n则方程组(1)也可表示为:0)(=X F(2) 其中:X ∈R n ,F ∶R n →R 0, F(X) ∈R n , R n 为赋值空间。

第七章-遗传算法应用举例

第七章-遗传算法应用举例

第七章 遗传算法应用举例遗传算法提供了一种求解非线性、多模型、多目标等复杂系统优化问题的通用框架,它不依赖于问题具体的领域。

随着对遗传算法技术的不断研究,人们对遗传算法的实际应用越来越重视,它已经广泛地应用于函数优化、组合优化、自动控制、机器人学、图象处理、人工生命、遗传编码、机器学习等科技领域。

遗传算法已经在求解旅行商问题、背包问题、装箱问题、图形划分问题等多方面的应用取得了成功。

本章通过一些例子,介绍如何利用第五章提供的遗传算法通用函数,编写MATLAB 程序,解决实际问题。

7.1 简单一元函数优化实例利用遗传算法计算下面函数的最大值:()sin(10) 2.0[1,2]f x x x x π=⋅+∈-,选择二进制编码,种群中个体数目为40,每个种群的长度为20,使用代沟为0.9,最大遗传代数为25。

下面为一元函数优化问题的MA TLAB 代码。

figure(1);fplot ('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲线% 定义遗传算法参数NIND= 40; % 个体数目(Number of individuals)MAXGEN = 25; % 最大遗传代数(Maximum number of generations)PRECI = 20; % 变量的二进制位数(Precision of variables)GGAP = 0.9; % 代沟(Generation gap)trace=zeros (2, MAXGEN); % 寻优结果的初始值FieldD = [20;-1;2;1;0;1;1]; % 区域描述器(Build field descriptor) Chrom = crtbp(NIND, PRECI); % 初始种群gen = 0; % 代计数器variable=bs2rv(Chrom,FieldD); % 计算初始种群的十进制转换 ObjV = variable.*sin (10*pi*variable)+2.0; % 计算目标函数值while gen < MAXGEN,FitnV = ranking (-ObjV); % 分配适应度值(Assign fitness values) SelCh = select ('sus', Chrom, FitnV , GGAP); % 选择SelCh = recombin ('xovsp',SelCh,0.7); % 重组SelCh = mut(SelCh); % 变异variable=bs2rv(SelCh,FieldD); % 子代个体的十进制转换ObjVSel =variable.*sin(10*pi*variable)+2.0; % 计算子代的目标函数值[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV ,ObjVSel); % 重插入子代的新种群 gen = gen+1; % 代计数器增加% 输出最优解及其序号,并在目标函数图象中标出,Y 为最优解,I 为种群的序号[Y,I]=max(ObjV),hold on;plot (variable (I),Y, 'bo');trace (1,gen)=max (ObjV); %遗传算法性能跟踪trace (2,gen)=sum (ObjV)/length (ObjV);endvariable=bs2rv (Chrom,FieldD); %最优个体的十进制转换hold on,grid;plot (variable',ObjV','b*');figure (2);plot (trace (1,:)');hold on;plot (trace (2,:)','-.');grid;legend ('解的变化','种群均值的变化')使用基于适应度的重插入确保四个最适应的个体总是被连续传播到下一代。

matlab中的遗传算法

matlab中的遗传算法

matlab中的遗传算法【原创版】目录一、引言二、遗传算法的基本原理1.种群概念2.适应度函数3.选择操作4.交叉操作5.变异操作三、MATLAB 中遗传算法的实现1.准备工作2.遗传算法的实现四、遗传算法的应用案例1.旅行商问题2.装载问题五、遗传算法的优缺点六、结论正文一、引言遗传算法(Genetic Algorithm,GA)是一种模拟自然界生物进化过程的优化算法,其主要思想是将进化过程中的自然选择、交叉和变异等遗传操作应用到问题的求解过程中,从而实现对问题的优化求解。

遗传算法在解决复杂问题、非线性问题以及大规模问题等方面具有较强的优势,因此在各个领域得到了广泛的应用。

本文将介绍遗传算法的基本原理以及在MATLAB 中的实现。

二、遗传算法的基本原理1.种群概念遗传算法以一个种群作为优化过程的载体。

种群中的个体代表问题的解,每个个体由一组参数表示。

在优化过程中,种群会不断进化,最终收敛到问题的最优解。

2.适应度函数适应度函数是遗传算法的核心部分,用于评价种群中个体的优劣。

适应度函数的取值范围为 [0, 1],其中 1 表示最优解,0 表示最劣解。

在遗传算法的优化过程中,适应度函数用于选择优秀的个体,从而指导种群的进化。

3.选择操作选择操作是基于适应度函数的一种选择策略,用于选择下一代的父代个体。

常见的选择方法有轮盘赌选择、锦标赛选择等。

4.交叉操作交叉操作是遗传算法中产生新个体的主要方式,通过将选中的优秀个体进行交叉操作,产生具有更好适应度的新个体。

常见的交叉方法有单点交叉、多点交叉、均匀交叉等。

5.变异操作变异操作是在遗传算法中引入随机性的一种方式,通过随机改变某些基因的值,使新个体在进化过程中具有一定的多样性。

变异操作的强度由变异概率控制。

三、MATLAB 中遗传算法的实现1.准备工作在 MATLAB 中实现遗传算法,首先需要定义适应度函数、选择操作、交叉操作和变异操作等。

此外,还需要设置遗传算法的参数,如迭代次数、种群大小、交叉概率、变异概率等。

电力系统中的能源优化算法使用方法

电力系统中的能源优化算法使用方法

电力系统中的能源优化算法使用方法电力系统是现代社会不可或缺的基础设施,它为我们提供了稳定可靠的电能供应。

然而,随着能源需求的增长和环境问题的日益突出,电力系统的能源利用率和效率成为了亟待解决的问题。

为此,能源优化算法逐渐成为电力系统优化的关键工具。

本文将介绍电力系统中常见的能源优化算法并介绍其使用方法。

一、能源优化算法简介能源优化算法是一种基于数学模型和计算机技术的方法,通过优化电力系统的能源配置和运行策略,以提高能源利用效率,减少能源成本,降低环境污染和碳排放。

常见的能源优化算法包括线性规划、整数规划、混合整数规划、动态规划、遗传算法、粒子群算法等。

二、线性规划线性规划是最基础和常用的能源优化算法之一。

其基本思想是在给定的线性约束条件下,通过线性目标函数的最小化或最大化求解出最优解。

在电力系统中,线性规划常用于电力系统的负荷调度问题。

首先,建立电力系统的数学模型,包括电力供给和负荷需求的线性关系、电力设备的运行约束条件等。

然后,将目标函数定义为最小化能源成本或最大化供电可靠性,并利用线性规划算法求解出最优的能源供给策略。

三、整数规划整数规划是在线性规划的基础上引入整数变量,将问题的解限制在取整数值的约束条件下的优化问题。

在电力系统中,整数规划常用于电力系统的容量扩充和投资决策问题。

例如,对于一个电网规划问题,我们需要确定在给定的负荷需求下,应该建设哪些发电厂、输电线路和变电站,并确定它们的容量和位置。

整数规划算法可以帮助我们在多个备选方案中找到最优的解决方案。

四、混合整数规划混合整数规划是在整数规划的基础上引入了部分连续变量的优化问题。

在电力系统中,混合整数规划常用于综合考虑电力系统的供需平衡、能源经济性和环境效益的多目标优化问题。

例如,我们可以将目标函数定义为最小化总成本和最大化供电可靠性的加权组合,并通过混合整数规划算法求解得到最优的能源配置方案。

五、动态规划动态规划是一种基于状态转移方程的优化方法,常用于求解具有重叠子问题特性的优化问题。

求解非线性方程组的几种方法及程序实现

求解非线性方程组的几种方法及程序实现

求解非线性方程组的几种方法及程序实现
求解非线性方程组一直是理论数学和应用数学研究的重点,并采用不同的方法得到准确的结果。

它们可以分为几种类型:
1. 用以绘图的方法解非线性方程组:该方法充分利用结合几何和数理的原理,给出非线性方程组的解,而不用对系数的解的表达式求解手段。

主要是利用可绘图的几何空间分析,它可以帮助理解问题本身,还可以很容易看出非线性方程组的解。

2. 用迭代法求解非线性方程组:这是一种常用的方法,它通过不断迭代收敛求解非线性方程组。

基本思想是通过构造一个迭代函数,其初始值和原始非线性方程组尽可能接近,然后不断迭代收敛求解非线性方程组。

3. 用强调法求解非线性方程系统:这是基于梯度的一种方法,它利用一个概念,即局部线性化,可以降低维数、转化为一个拐点,最后强化搜索全局解。

4. 用牛顿-拉夫逊方法求解非线性方程组:这是一种准确、快速的非线性方程组求解方法,主要利用牛顿迭代法搜索解的收敛性,加上一些拉夫逊的加速策略得到最终的结果。

5. 用幂法求解非线性方程组:幂法也称为指数序列,是一种重要的求解非线性方程组的方法,基本原理是利用指数的累加和误差的减少,从而最终得到非线性方程组的解。

6. 用逐步逼近法求解非线性方程组:逐步逼近法也称为分步变程法,是一种用于求解非线性方程组的简单方法,其基本思想是用不同的参数,在给定的范围内,逐步逼近目标解。

这些方法的程序实现略有不同,可以利用编程语言比如C、Fortran、Python等,编写程序完成求解。

可以采用函数求解、循环求解、行列式求解或者混合的算法等不同的方式实现,甚至可以用深度学习方法求解有些复杂的非线性方程组。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

遗传算法解非线性方程组的Matlab程序
程序用MATLAB语言编写。

之所以选择MATLB,是因为它简单,但又功能强大。

写1行MATLAB程序,相当于写10行C++程序。

在编写算法阶段,最好用MATLAB语言,算法验证以后,要进入工程阶段,再把它翻译成C++语言。

本程序的算法很简单,只具有示意性,不能用于实战。

非线性方程组的实例在函数(2)nonLinearSumError1(x)中,你可以用这个实例做样子构造你自己待解的非线性方程组。

%注意:标准遗传算法的一个重要概念是,染色体是可能解的2进制顺序号,由这个序号在可能解的集合(解空间)中找到可能解
%程序的流程如下:
%程序初始化,随机生成一组可能解(第一批染色体)
%1: 由可能解的序号寻找解本身(关键步骤)
%2:把解代入非线性方程计算误差,如果误差符合要求,停止计算
%3:选择最好解对应的最优染色体
%4:保留每次迭代产生的最好的染色体,以防最好染色体丢失
%5: 把保留的最好的染色体holdBestChromosome加入到染色体群中
%6: 为每一条染色体(即可能解的序号)定义一个概率(关键步骤)
%7:按照概率筛选染色体(关键步骤)
%8:染色体杂交(关键步骤)
%9:变异
%10:到1
%这是遗传算法的主程序,它需要调用的函数如下。

%由染色体(可能解的2进制)顺序号找到可能解:
%(1)x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionS um);
%把解代入非线性方程组计算误差函数:(2)functionError=nonLinearSumError1(x); %判定程是否得解函数:(3)[solution,isTrue]=isSolution(x,funtionError,solutionSumError);
%选择最优染色体函数:
%(4)[bestChromosome,leastFunctionError]=best_worstChromosome(fatherC hromosomeGroup,functionError);
%误差比较函数:从两个染色体中,选出误差较小的染色体
%(5)[holdBestChromosome,holdLeastFunctionError]...
%
=compareBestChromosome(holdBestChromosome,holdLeastFunctionError,... % bestChromosome,leastFuntionError)
%为染色体定义概率函数,好的染色体概率高,坏染色体概率低
%(6)p=chromosomeProbability(functionError);
%按概率选择染色体函数:
%(7)slecteChromosomeGroup=selecteChromome(fatherChromosomeGroup,p );
%父代染色体杂交产生子代染色体函数
%(8)sonChrmosomeGroup=crossChromosome(slecteChromosomeGroup,2); %防止染色体超出解空间的函数
%(9)chromosomeGroup=checkSequence(chromosomeGroup,solutionSum)
%变异函数
%(10)fatherChromosomeGroup=varianceCh(sonChromosomeGroup,0.8,soluti onN);
%通过实验有如下结果:
%1。

染色体应当多一些
%2。

通过概率选择染色体,在迭代早期会有效选出优秀的染色体,使解的误差迅速降低,%但随着迭代的进行,概率选择也会导致某种染色体在基因池中迅速增加,使染色体趋同,%这就减少了物种的多样性,反而难以逼近解
%3。

不用概率选择,仅采用染色体杂交,采用保留优秀染色体,也可以得到解
%%%%%%%%%%%%%%%%%%%%%%%%程序开始运行
clear,clc;%清理内存,清屏
circleN=200;%迭代次数
format long
%%%%%%%%%%%%%%%构造可能解的空间,确定染色体的个数、长度solutionSum=4;leftBoundary=-10;rightBoundary=10;
distance=1;chromosomeSum=500;solutionSumError=0.1;
%solutionSum:非线性方程组的元数(待解变量的个数);leftBoundary:可能解的左边界;%rightBoundary:可能解的右边界;distance:可能解的间隔,也是解的精度
%chromosomeSum:染色体的个数;solveSumError:解的误差oneDimensionSet=leftBoundary:distance:rightBoundary;
%oneDimensionSet:可能解在一个数轴(维)上的集合
oneDimensionSetN=size(oneDimensionSet,2);%返回oneDimensionSet中的元素个数
solutionN=oneDimensionSetN^solutionSum;%解空间(解集合)中可能解的总数binSolutionN=dec2bin(solutionN);%把可能解的总数转换成二进制数chromosomeLength=size(binSolutionN,2);%由解空间中可能解的总数(二进制数)计算染色体的长度
%%%%%%%%%%%%%%%%程序初始化
%随机生成初始可能解的顺序号,+1是为了防止出现0顺序号
solutionSequence=fix(rand(chromosomeSum,1)*solutionN)+1;
for i=1:chromosomeSum%防止解的顺序号超出解的个数
if solutionSequence(i)>solutionN;
solutionSequence(i)=solutionN;
end
end
%染色体是解集合中的序号,它对应一个可能解
%把解的十进制序号转成二进制序号
fatherChromosomeGroup=dec2bin(solutionSequence,chromosomeLength); holdLeastFunctionError=Inf;%可能解的最小误差的初值
holdBestChromosome=0;%对应最小误差的染色体的初值%%%%%%%%%%%%%%%%%%开始计算
circle=0;
while circle<circleN%开始迭代求解
circle=circle+1;%记录迭代次数
%%%%%%%%%%%%%1:由可能解的序号寻找解本身(关键步骤)
x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionSum); %%%%%%%%%%%%%2:把解代入非线性方程计算误差
functionError=nonLinearSumError1(x);%把解代入方程计算误差
[solution,minError,isTrue]=isSolution(x,functionError,solutionSumError);
%isSolution函数根据误差functionError判定方程是否已经解开,isTrue=1,方程得解。

solution是方程的解
if isTrue==1
'方程得解'
solution
minError
circle
return%结束程序
end
%%%%%%%%%%%%%3:选择最好解对应的最优染色体[bestChromosome,leastFunctionError]=best_worstChromosome(fatherChrom osomeGroup,functionError);
%%%%%%%%%%%%%4:保留每次迭代产生的最好的染色体
%本次最好解与上次最好解进行比较,如果上次最好解优于本次最好解,保留上次最好解;%反之,保留本次最好解。

保留的最好染色体放在holdBestChromosome中[holdBestChromosome,holdLeastFunctionError]...
=compareBestChromosome(holdBestChromosome,holdLeastFunctionError,... bestChromosome,leastFunctionError);
%circle
%minError
%solution
%holdLeastFunctionError
%%%%%%%%%%%%%%5:把保留的最好的染色体holdBestChromosome加入到染色体群中
order=round(rand(1)*chromosomeSum);
if order==0
order=1;
end
fatherChromosomeGroup(order,:)=holdBestChromosome;。

相关文档
最新文档