当前位置:网站首页>Pymoo学习 (6):终止条件
Pymoo学习 (6):终止条件
2022-07-25 18:59:00 【因吉】
1 默认设置
对于多目标优化,默认设置包括:
from pymoo.util.termination.default import MultiObjectiveDefaultTermination
termination = MultiObjectiveDefaultTermination(
x_tol=1e-8, # 设计空间中的运动
cv_tol=1e-6, # 收敛性
f_tol=0.0025, # 目标空间值
nth_gen=5, # 每多少代检查一次终止条件
n_last=30, # 计算过程中应当被考虑的最后几代数量
n_max_gen=1000, # 最大后代数量
n_max_evals=100000 # 最大评估次数
)
对于单目标优化,默认设置包括:
from pymoo.util.termination.default import SingleObjectiveDefaultTermination
termination = SingleObjectiveDefaultTermination(
x_tol=1e-8,
cv_tol=1e-6,
f_tol=1e-6,
nth_gen=5,
n_last=20,
n_max_gen=1000,
n_max_evals=100000
)
2 评估数量 (n_eval)
from pymoo.algorithms.moo.nsga2 import NSGA2`在这里插入代码片`
from pymoo.factory import get_problem, get_termination
from pymoo.optimize import minimize
problem = get_problem("zdt3")
algorithm = NSGA2(pop_size=100)
termination = get_termination("n_eval", 300)
res = minimize(problem,
algorithm,
termination,
pf=problem.pareto_front(),
seed=1,
verbose=True)
输出如下:
============================================================
n_gen | n_eval | igd | gd | hv
============================================================
1 | 100 | 1.304648356 | 1.530191068 | 0.00000E+00
2 | 200 | 1.304200356 | 1.517648901 | 0.00000E+00
3 | 300 | 0.988539101 | 1.378914374 | 0.00000E+00
3 迭代次数 (n_gen)
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.factory import get_problem, get_termination
from pymoo.optimize import minimize
problem = get_problem("zdt3")
algorithm = NSGA2(pop_size=100)
termination = get_termination("n_gen", 10)
res = minimize(problem,
algorithm,
termination,
pf=problem.pareto_front(),
seed=1,
verbose=True)
输出如下:
============================================================
n_gen | n_eval | igd | gd | hv
============================================================
1 | 100 | 1.304648356 | 1.530191068 | 0.00000E+00
2 | 200 | 1.304200356 | 1.517648901 | 0.00000E+00
3 | 300 | 0.988539101 | 1.378914374 | 0.00000E+00
4 | 400 | 0.920567183 | 1.351594290 | 0.00000E+00
5 | 500 | 0.920567183 | 1.282794381 | 0.00000E+00
6 | 600 | 0.894035691 | 1.360904372 | 0.00000E+00
7 | 700 | 0.817395517 | 1.280727114 | 0.00000E+00
8 | 800 | 0.802167697 | 1.189542707 | 0.00000E+00
9 | 900 | 0.730335663 | 0.993344639 | 0.002211246
10 | 1000 | 0.699750404 | 0.851632873 | 0.002211246
4 时间 (time)
基于时间的终止标准的格式应当设置为类似于get_termination(“time”, “01:30:00”),表示运行1个小时30分钟:
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.factory import get_problem, get_termination
from pymoo.optimize import minimize
problem = get_problem("zdt3")
algorithm = NSGA2(pop_size=100)
termination = get_termination("time", "00:00:03")
res = minimize(problem,
algorithm,
termination,
pf=problem.pareto_front(),
seed=1,
verbose=False)
print(res.algorithm.n_gen)
5 设计空间容忍度 (x_tol)
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.factory import get_problem
from pymoo.optimize import minimize
from pymoo.util.termination.x_tol import DesignSpaceToleranceTermination
problem = get_problem("zdt3")
algorithm = NSGA2(pop_size=100)
termination = DesignSpaceToleranceTermination(tol=0.0025, n_last=20)
res = minimize(problem,
algorithm,
termination,
pf=problem.pareto_front(),
seed=1,
verbose=False)
print(res.algorithm.n_gen)
6 目标空间容忍度 (f_tol)
这是一个用的很多的标准:
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.factory import get_problem
from pymoo.optimize import minimize
from pymoo.util.termination.f_tol import MultiObjectiveSpaceToleranceTermination
from pymoo.visualization.scatter import Scatter
problem = get_problem("zdt3")
algorithm = NSGA2(pop_size=100)
termination = MultiObjectiveSpaceToleranceTermination(tol=0.0025,
n_last=30,
nth_gen=5)
res = minimize(problem,
algorithm,
termination,
pf=True,
seed=1,
verbose=False)
print("Generations", res.algorithm.n_gen)
plot = Scatter(title="ZDT3")
plot.add(problem.pareto_front(use_cache=False, flatten=False), plot_type="line", color="black")
plot.add(res.F, facecolor="none", edgecolor="red", alpha=0.8, s=20)
plot.show()
输出如下:
参考文献
边栏推荐
- 聚智云算,向新而生| 有孚网络“专有云”开启新纪元
- 韩国AI团队抄袭震动学界!1个导师带51个学生,还是抄袭惯犯
- [translation] logstash, fluent, fluent bit, or vector? How to choose the right open source log collector
- 淦,为什么 ““ .length !== 3 ??
- 基础乐理--配置和弦
- [open source project] stm32c8t6 + ADC signal acquisition + OLED waveform display
- "Wdsr-3" Penglai pharmaceutical Bureau solution
- 无惧高温暴雨,有孚网络如何保您无忧?
- MES管理系统有什么应用价值
- 怎样设计产品帮助中心?以下几点不可忽视
猜你喜欢

怎样设计产品帮助中心?以下几点不可忽视

Process communication (Systemv communication mode: shared memory, message queue, semaphore)

2022年IAA行业品类发展洞察系列报告·第二期

黄鹤楼超震撼视角,这样的VR全景你绝对没见过!

优秀的测试/开发程序员突破,不忘初心,方得始终......

Everyone can participate in the official launch of open source activities. We sincerely invite you to experience!

Analysis of the internet jam in IM development? Network disconnection?

给生活加点惊喜,做创意生活的原型设计师丨编程挑战赛 x 选手分享

How to create an effective help document?

Single arm routing experiment demonstration (Huawei router device configuration)
随机推荐
怎样设计产品帮助中心?以下几点不可忽视
弱网测试工具-QNET
基础乐理--配置和弦
ThreadLocal夺命11连问
有孚原力超算,为客户提供定制化高性能计算服务
分享六个实用的小程序插件
Huawei switch system software upgrade and security vulnerability repair tutorial
基于Mysql-Exporter监控Mysql
Go code checking tool
Hough transform understanding [easy to understand]
F5: Six capabilities required for enterprise digital transformation
Yarn installation and use tutorial [easy to understand]
对迁移学习中域适应的理解和3种技术的介绍
接口自动化测试平台FasterRunner系列(四)- 持续集成、解决多域名
进程间的通信(管道通信)
进程通信(SystemV通信方式:共享内存,消息队列,信号量)
PyQt5单击QTableView垂直表头verticalHeader获取行数据以及单击单元格获取行数据操作
MySQL子查询篇(精选20道子查询练习题)
Yyds dry inventory interview must brush top101: reverse linked list
With a market value of 30billion yuan, the largest IPO in Europe in the past decade was re launched on the New York Stock Exchange