阅读Book: MultiObjective using Evolutionary Algorithms (5) ---- Non-Dominated Sorting of a Population

种群非支配等级排序。

Why??不是说就为了找到非支配集合吗? 这个不是多目标中优化中追求的一个goal?

解释: 

Most evolutionary multi-objective optimization algorithms requires to find only the best non-dominated front in a population. These algorithms classify th population into two sets---the non-dominated set and the remaining dominated set.

However, the other algorihtms require to entire population to be classifed into various non-dominated levels.  

(1)Non-Dominated Sorting of a Population-------逐层的剔除一些非支配项,随后对剩余的种群找非支配集合,一次类推 

具中的实例:

 

 

在计算中: 复杂度有的时候会大于O(M*N*N)的计算量。 

(2) 不同的方法,给种群进行非支配等级排序 

Figure 14 种群中的Si以及ni
个体支配个体Si被支配个体ni的值
1支配2S1={2}3,5被3,5支配故  n1 = 2
21,3,4,54
31,2,4{1,2,4}0
42{2}3,52
51,2,4{1,2,4}0

 

 

### MATLAB中的NSGA-II优化算法实现 #### 关于NSGA-II简介 非支配排序遗传算法II (Non-dominated Sorting Genetic Algorithm II, NSGA-II) 是一种高效的多目标优化算法,广泛应用于工程设计、机器学习等领域。它通过引入快速非支配排序和拥挤距离计算来提高种群多样性并加速收敛过程[^3]。 #### MATLAB实现NSGA-II的关键步骤解析 在MATLAB中实现NSGA-II的核心在于以下几个方面: 1. **初始化种群**: 随机生成初始解集作为进化起点。 2. **适应度评估**: 对每个个体的目标函数值进行评价,并基于此完成非支配排序。 3. **选择操作**: 使用锦标赛选择策略挑选优质个体参与交叉变异。 4. **交叉与变异**: 应用模拟二进制交叉(SBX) 和多项式突变算子生成新后代。 5. **精英保留机制**: 将父代与子代合并后重新筛选最优解构成下一代种群。 以下是简化版的伪代码表示形式以及部分核心逻辑展示: ```matlab function [ParetoFront,ParetoInt] = nsga_ii(objectives,bounds,options) % 初始化参数设置... popSize = options.PopulationSize; maxGen = options.MaxGenerations; % Step 1: Initialize Population population = initializePopulation(popSize,bounds); for gen=1:maxGen % Evaluate Fitness Values fitnessValues = evaluateFitness(population,objectives); % Perform Non-Dominated Sorting & Crowding Distance Calculation [fronts,crowdDist] = nonDominatedSort(fitnessValues,popSize); % Selection Process via Tournament Selector matingPool = tournamentSelector(fronts,crowdDist,popSize); % Generate Offspring through SBX and Polynomial Mutation Operators offspring = generateOffspring(matingPool,bounds,options.MutationRate,... options.CrossoverProbability); % Combine Parental Generation with New Offsprings combinedPop = [population;offspring]; % Select Next Generation Using Elitism Strategy nextGeneration = selectNextGeneration(combinedPop,popSize); % Update Current Population Set population = nextGeneration; end ParetoFront = extractParetoSet(population); end ``` 上述代码片段仅提供了一个高层次框架描述如何构建完整的解决方案流程[^4]。具体细节可能因实际应用场景而异。 #### 进一步资源推荐 对于希望深入研究或者获取更详尽指导材料的学习者来说,可以考虑查阅以下链接或书籍: - Yarpiz 提供的一系列有关 Evolutionary Algorithms 的教学视频及其配套源码分享站点[^5]。 - Deb K., Pratap A., Agarwal S., Meyarivan T.: “A Fast And Elitist Multiobjective Genetic Algorithm: NSGA-II”, IEEE Transactions on Evolutionary Computation, Vol.6(2), pp.182–197, Apr 2002.[^6]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值