python 遗传算法多目标优化_NSGA2 遗传算法解决多目标优化
进行多目标优化时,通常面临多个目标函数无法同时达到最优的情况,为了解决这一矛盾,引入Pareto-Optimality的概念
Pareto-Optimality
通常,多目标优化的一般形式为:
经过处理,可以化为以下形式:
其中
f1(x),f2(x),...,fn(x)
为目标函数,其全部都是求最小值的形式
以下针对两个目标函数进行讨论:
有几个目标函数便为几维空间,有两个目标函数Time(f1(x)),Cost(f2(x)),
可以画出图像:
随后引入几个概念:
非支配解:假设任何二解S1 及S2 对所有目标而言,S1均优于S2,则我们称S1 支配S2,若S1 的解没有被其他解所支配,则S1 称为非支配解(不受支配解),也称Pareto解
支配解:若解S2的所有目标均劣于S1,则称S1优于S2,也称S1支配S2
,S2为受支配解。
因此现在的首要任务是寻找解空间里面所有的Pareto解,找到所有Pareto解之后,这些解组成的平面叫做Pareto前沿面(Non-dominated front)。在目标函数较多时,前沿面通常为超曲面。
非支配解排序(Non-dominated Sorting)
1. 设所有解的集合为S,现从中找出非支配解集合,记为F1
2. 令S=S-F1,从S中再找出非支配解集合,记为F2
3. 重复第二步,直到S为空集
将每次找出的非支配解进行排序如下:
{F1,F2,…,Fn}
在途中画出Fi集合中对应点,并连线,则构成了n个pareto曲面,分别编号为Non-dominated Front 1,Non-dominated Front 2…
以上述表格中数据为例:F1={A,B,D,F}, F2={C,E,D}, F3={H,I}
画出相应图形:
在第一个前沿面上的解具有最大的适应度,序数越大则适应度越小。序号小的前沿面上的解可以支配序号大的前沿面上的解。
同一前沿面上解的排序-拥挤度(Crowding Distances)
针对第一个前沿面来说,其中包含了A,B,D,F四个解,如何评判这四个解的适应度大小呢?由此引入了拥挤度的概念。
拥挤度的计算:
1. 只考虑同一前沿面上的解,设定位于前沿面两端边界点的拥挤度为∞。
2. 对于不在两端的点,其拥挤度主要与其相邻两个点有关
拥挤度越小则对应该解越重要
比较通俗的理解:拥挤度越小就说明该解与其他解相似程度不高,保留拥挤度较小的点相当于保存了解的多样性
所以说,确定解的适应度大小顺序应该先判断该解在哪个前沿面上,如果在同一个前沿面上,则再计算拥挤度进行判断
与遗传算法结合
与普通遗传算法步骤大概相同,初始化随机取几个解,进行编码,交叉互换,突变
生成子代
但是,在生成子代后,需要与父代混合,从中挑选出适应度较高的解重新形成子代,再进行新的一轮迭代。
举例说明:
1.针对一个两目标优化问题,初始化随机取出10个解记为F,经过计算得到子一代为P
此时将P,F混合,形成新的解集S
2.针对S,进行上面所介绍的非支配解排序,计算拥挤度,最终得出这12个解的适应度大小顺序,从中取适应度较大的10个点生成新的子代(维持和父代个数相同),带入算法进行新一轮迭代
子代父代混合筛选生成新的子代,好像叫做精英策略
任何启发式算法均有两个方面组成:加快收敛的操作和在收敛过程中保持解的多样性的操作,两种操作相互作用,以至于找到一个合适的收敛速度,减少计算时间,同时避免陷入局部最优
对于NSGA来说,其规则仍然符合这两个准则:
1. 本算法并不是只取最优的前沿面,而是将所有前沿面均纳入考虑范围内,是为了体现解的多样性,防止陷入局部最优
2. 计算拥挤度是为了保存下来相似程度较低的解,保持解空间的多样性
3. 使用精英策略是为了加速收敛,更快的除去劣解
作者:骑着象拔蚌环游
链接:https://zhuanlan.zhihu.com/p/125161075
python 遗传算法多目标优化_NSGA2 遗传算法解决多目标优化相关推荐
- 多目标进化优化_SDIM 学术讲座|分解多目标优化与帕累托多任务学习
分解多目标优化与 帕累托多任务学习 2020年11月4日晚,香港城市大学电脑学系讲座教授.博士生导师.IEEE Fellow张青富教授应我院王振坤教授的邀请,在线举办了一场主题为"分解多目标 ...
- 数学建模——智能优化之遗传算法详解Python代码
数学建模--智能优化之遗传算法详解Python代码 import numpy as np import matplotlib.pyplot as plt from matplotlib import ...
- 多目标优化-Pareto遗传算法
多目标优化的应用背景 工程实际中的许多优化问题是多目标的优化设计问题.通常情况下多个目标是处于冲突状态的,不存在一个最优设计使所有的目标同时达到最优,一个目标性能的改善,往往以其它一个或多个目标性能的 ...
- 求解多目标旅行商问题的遗传算法参数研究(2017的ieee)
摘要 本文的目的是利用遗传算法(GA)解决多目标优化问题.通常,多目标问题的目标(最小化成本.最大化性能.减少碳排放.最大化利润)相互冲突,阻碍了每个目标的并行优化.将旅行商问题的双目标传统组合优化称 ...
- matlab遗传算法配送路径,基于Matlab物流配送路径优化问题遗传算法的实现
维普资讯 http://doc.docsou.com 第2 9卷总第 1 1 3期 物流商坛 物流配送路径优化问题遗传算法的实现 The Re lz to f Ge tc Al o ih o a ia ...
- 使用差分进化解决多目标优化问题
Multi-Objective Optimization with Modified Pareto Differential Evolution 1.摘要 本文修改了差分进化算法,将其用来解决多目标优 ...
- 如何选择优化算法遗传算法_用遗传算法优化垃圾收集策略
如何选择优化算法遗传算法 Genetic Algorithms are a family of optimisation techniques that loosely resemble evolut ...
- 【路径规划】基于遗传算法求解多车多类型车辆的车辆路径优化问题附matlab代码
1 内容介绍 多车辆多路线的交通路线优化涉及到排序问题,是一个N-P难题,高效精确的算法存在的可能性不大.提出了基于遗传算法的求解方法,给出了实例来证明如何利用遗传算法解决多车辆多路线的优化问题.结果 ...
- matlab物流配送最优路径,基于Matlab物流配送路径优化问题遗传算法的实现
第 29 卷总第 131 期 ·物流商坛· 收稿日期: 2005-12-22 作者简介: 弓晋丽(1983- ), 女, 山西文水人, 长安大学汽车学院硕士研究生, 研究方向: 物流系统, 道路运输与 ...
最新文章
- 用php对文件的操作
- SpringBoot中自定义消息转化器
- 如何打造千万级Feed流系统?阿里数据库技术解读
- android中的weight
- brpc访问MySQL_怎么使用Swoft 搭建微服务(TCP RPC)PHP中高级进阶
- LINUX 游戏服务器之旅1_SSH连接
- excel数据库_从案例说excel如何实现数据库管理
- .H264 .yuv格式文件下载还需要积分? 自己动手 ffmpeg几句命令轻松搞定
- 手机里竟然有这么多传感器!终于都搞懂了
- 05-SA8155 QNX I2C框架及代码分析
- 网页如何快速设置成黑白模式
- 使用python计算水仙花数
- 【技术分享】美团外卖的商业变现的技术思考和实践
- Restful风格的理解
- FPGA学习笔记——分频电路设计
- 阿里云原生实践:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
- CHAP6:通过可视化艺术共享数据
- 愿家乡的教育走出一片新天地!
- 无聊科技正经事(第7期):跟村上春树学跑步,向古川武士学养成
- DELL笔记本拆机添加内存条
热门文章
- 哪个版本的outlook好_未来版本的Outlook的阴影?
- 关于长期久坐网站开发程序员身体健康的5点建议
- Qt入门(一)——自己动动手写一个简易的用户化界面(Qt命令行模式)
- python输出星号等腰三角形_星号三角形Python(带输入)(Asterisk Triangle Python (with input))...
- 生存之道,每个人都值得尊敬
- 微幅波的解析解求解及弥散方程的推导
- 泪目!视频剪辑教程自学百度云资源
- 【转载】MATLB绘图
- 《途客圈创业记:不疯魔,不成活》一一2.11 途客圈旅行助手
- 当蚂蚁“程序猿”还是“小猴子”的时候……