遗传算法selection总结-[Fitness, Tournament, Rank Selection]

假设个体(individual)用\(h_i\)表示,该个体的适应度(fitness)为\(Fitness(h_i)\),被选择的概率为\(P(h_i)\)
另外假设种群(population)的个体总数为\(N\)

I. Fitness Selection

该方法也叫 Roulette Wheel Selection(轮盘赌博选择),种群中的个体被选中的概率与个体相应的适应度函数的值成正比。

\[P(h_i)=\frac{Fitness(h_i)}{\sum_{j=1}^N Fitness(h_j)}\]

II. Tournament Selection

锦标赛选择 方法步骤如下:

  • 等概率地从population中选择出
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NSGA-II(非支配排序遗传算法II)是一种用于解决多目标优化问题的进化算法,它是非支配排序遗传算法(Non-dominated Sorting Genetic Algorithm)系列中的第二代改进版本。在MATLAB中,你可以使用`gamultiobj`工具箱来应用NSGA-II算法。 NSGA-II的主要特点包括: 1. **适应度函数的多样性保留**:算法通过非支配排序机制(pareto dominance)保证了解决集(solution set)中的个体具有多样性,即同时优化多个目标函数而不牺牲其中一个目标。 2. **帕累托前沿和非支配集**:它维护了解决集中的帕累托前沿,即无法改进而不使其他目标恶化的所有解。 3. **适应性种群大小**:根据当前解集的分散程度动态调整种群大小,以保持算法的效率。 在MATLAB中,使用NSGA-II的基本步骤包括: - 定义问题的目标函数和决策变量范围; - 初始化一个种群; - 进行选择(如轮盘赌选择或 Tournament 选择)、交叉(通常使用二点交叉)和变异操作; - 应用非支配排序,将种群分为多个子集(称为 fronts 或 Pareto 集); - 重复选择、交叉和变异,直到达到预定的迭代次数或满足停止条件; - 返回最优解集,即帕累托前沿的解。 如果你想要在MATLAB中使用NSGA-II,可以参考以下代码片段: ```matlab % 导入gamultiobj工具箱 addpath(geneticalg.toolbox); % 定义目标函数和决策变量 f = @(x) [yourMultiObjectiveFunction(x, objective1, objective2, ...); ]; % 假设有多于两个目标 % 初始化参数 options = gaoptimset('PopulationSize', popSize, ... % 指定种群大小 'MaxGenerations', maxGen, ... % 最大迭代次数 'Display', 'iter', ... % 显示进度信息 'TournamentSize', tournamentSize, ... % 选择操作的参数 'CrossoverFraction', crossoverProb, ... % 交叉概率 'MutationFcn', 'uniform', ... % 使用均匀变异 'MutationRate', mutationRate); % 变异率 % 运行NSGA-II [paretoFront, fval, ~] = gamultiobj(f, nVar, options); % nVar是决策变量的数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值