遗传算法种群大小
Ⅰ 遗传算法tsp 城市100个 种群个数应该是多少
C语言实现遗传算法解决TSP问题,带完整代码,应用最基础的遗传算法思想。带实验报告,并在实验报告中与模拟退火算法进行对比。
//以下是cpp文件完整代码:
#include
#include
#include
#include
#include
#include
using namespace std;
const int N = 30;//城市个数
const int MAXN = 50;//最大城市个数
const int population = 100;//种群个体数
const int MAXpopulation = 100;//最大种群个数 const double mutation_rate = 0.4;//变异率
const double crossover_rate = 0.65;//交配率
const int iter = 200;//迭代次数
//城市结构体
struct city
{
//char id;
int x, y;
};
//路径结构体
struct path
{
city cities[MAXN];
double length;
};
double D[MAXN][MAXN];//存储城市之间的长度 city bcity[MAXN];//存储最优路径的各个城市 path bpath[MAXpopulation];//存储种群所有个体
double fitness[MAXpopulation];//存储种群个体的适应度
//产生x-y的随机整数
int randInt(int x, int y)
{
return rand()%(y-x+1)+x;
}
double randDouble()
{
Ⅱ 怎么根据工件数确定遗传算法中种群大小,是2N+1,还是必须为偶数,为什么书上用的是基数
在基本遗传算法中,交叉操作都是成对进行的,所以种群大小一般都是偶数,
如果改进了遗传算法的交叉操作,有可能就没有这一限制了
看看算法的遗传操作,分析一下为什么是奇数吧
Ⅲ 遗传算法中初始种群的数量怎么设定,我用的是matlab2010a,优化工具箱中的GA算法,,
设置population size为50
Ⅳ 遗传算法中种群大小必须为偶数吗
遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Holland教授所提出的GA通常为简单遗传算法(SGA)。 遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(indivial)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。传算法是解决搜索问题的一种通用算法,对于各种通用问题都可以使用。搜索算法的共同特征为: ① 首先组成一组候选解; ② 依据某些适应性条件测算这些候选解的适应度; ③ 根据适应度保留某些候选解,放弃其他候选解; ④ 对保留的候选解进行某些操作,生成新的候选解。 在遗传算法中,上述几个特征以一种特殊的方式组合在一起:基于染色体群的并行搜索,带有猜测性质的选择操作、交换操作和突变操作。这种特殊的组合方式将遗传算法与其它搜索算法区别开来。 遗传算法还具有以下几方面的特点: (1)遗传算法从问题解的串集开始嫂索,而不是从单个解开始。这是遗传算法与传统优化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。遗传算法从串集开始搜索,覆盖面大,利于全局择优。 (2)许多传统搜索算法都是单点搜索算法,容易陷入局部的最优解。遗传算法同时处理群体中的多个个体,即对搜索空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。 (3)遗传算法基本上不用搜索空间的知识或其它辅助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。这一特点使得遗传算法的应用范围大大扩展。 (4)遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导他的搜索方向。 (5)具有自组织、自适应和自学习性。遗传算法利用进化过程获得的信息自行组织搜索时,硬度大的个体具有较高的生存概率,并获得更适应环境的基因结构。由于遗传算法的整体搜索策略和优化搜索方法在计算是不依赖于梯度信息或其它辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学,下面我们将介绍遗传算法的一些主要应用领域: 1、 函数优化。 函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标的函数优化问题,用其它优化方法较难求解,而遗传算法可以方便的得到较好的结果。 2、 组合优化 随着问题规模的增大,组合优化问题的搜索空间也急剧增大,有时在目前的计算上用枚举法很难求出最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。例如遗传算法已经在求解旅行商问题、 背包问题、装箱问题、图形划分问题等方面得到成功的应用。 此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。
Ⅳ 遗传算法是不是种群规模选取越大,全局最优解越好!
种群规模是指任意一代中的个体总数,这个是人为设定的,种群规模越大越可能找到全局解,但运行时间也相对较长,一般在40-100之间取值,像我就习惯选60.
至于你所处理的问题,可以对比不同的种群规模下最优解和运行时间,然后折衷取。
Ⅵ 49种群大小遗传算法参数设置该怎么设置
进化代数随意,可100,可200,交叉概率一般比变异概率要高,可0.8,可0.9 ,修正系数不是基本遗传算法中的 请注明出处
Ⅶ C++实现遗传算法时,设定染色体长度和种群大小偏大时程序无法运行,该怎么办
有事发程序上来先。。。
Ⅷ 遗传算法问题:群体大小N,染色体长度M,为了收敛可能性较大,那么N 和M 是不是有一定关系啊,讲讲收敛吧
N和M没有关系的,收不收敛跟你采取的算子策略(选择、交叉、变异)有关系,跟种群大小也有点关系,但跟染色体长度没关系。
Ⅸ 遗传算法,种群选择100或者50的区别,如果选择过多会怎么样
数量越少越容易发生遗传漂变,偏离理论值。