首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用多目标算法求解单目标优化

用多目标算法求解单目标优化
EN

Stack Overflow用户
提问于 2017-07-04 06:21:24
回答 2查看 321关注 0票数 0

我想用多目标进化算法求解一个单目标优化问题。从技术上讲,这是正确的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-19 00:53:18

多目标算法通常是通过比较适应度分数来工作的。但是当健身成绩是多目标的时候,你怎么能比较它们呢?因此,神奇之处往往在于算法如何对适应度分数进行排序。对于单个目标,使用多目标算法进行优化时,可能会失去这种魔力,但无论如何,它可能仍然工作得很好。

因为你只是在优化一个目标,所以你可以在最简单的时候利用遗传算法。关于这方面的一个例子,请参考我在多维解优化/预测的人工智能算法的答案。

票数 0
EN

Stack Overflow用户

发布于 2020-06-03 19:12:22

让我在前面的回答中补充一些内容。多目标优化是单目标优化的推广.这意味着单目标优化是它的子集.多目标优化的研究领域解决了多值化的困难,这意味着目标空间中的向量不是标量,而是用于性能评价的向量。为了工作,每个多目标优化算法都必须解决这个问题。

对于单目标优化,目标空间中的控制概念显然仍然有效.在双目标优化(假设最小化)中,我们认为[3, 5][2, 4] (因为它在两个目标上都更好)所主导,而对[4, 2]则漠不关心(一次更好,一次更糟)。在单目标优化中,我们基本上只是比较一个列表和一个元素,这与比较标量是一样的。我们简单地说,3占5。

因此,一般情况下还可以运行多目标优化算法来求解单目标问题.然而,您可能会发现更好的单目标算法,它的收敛速度更快。

例如,您可以使用著名的NSGA-II算法来优化单目标函数,使用皮莫,这是Python中的一个多目标优化框架。

免责声明:我是皮莫的主要开发人员。

下面的源代码使用NSGA-II (一种多目标算法)来获得辛梅布鲁函数(单目标测试问题)的最优解:

代码语言:javascript
复制
from pymoo.algorithms.nsga2 import NSGA2
from pymoo.factory import get_problem
from pymoo.optimize import minimize

problem = get_problem("himmelblau")

algorithm = NSGA2(pop_size=20)

res = minimize(problem,
               algorithm,
               seed=1,
               verbose=True)

print(res.F) 

在2000年的函数评估中发现了F=0.00034225

但是,如果您使用Hooke and Jeeves Pattern Search,您将以更快的速度获得最佳结果:

代码语言:javascript
复制
from pymoo.algorithms.so_pattern_search import PatternSearch
from pymoo.factory import get_problem
from pymoo.optimize import minimize

problem = get_problem("himmelblau")

algorithm = PatternSearch()

res = minimize(problem,
               algorithm,
               seed=1,
               verbose=True)

print(res.F) 

在224个评估中发现了F=4.62182083e-18

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44898298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档