使用遗传算法或cvx工具的多目标凸优化



我使用MATLAB的cvx包解决了一个单目标凸优化问题(实际上与减少干扰有关)。现在我想把这个问题扩展到多目标问题。与cvx软件包相比,使用遗传算法解决它的优点是什么?我没有读过任何关于遗传算法的书,它是通过搜索网络来实现多目标优化的。

基于导数(或梯度)的优化算法,包括凸优化算法,本质上是试图找到局部最小值。利弊如下。

优点:1.它可能非常快,因为它只试图遵循导数给出的路径。2.有时,它会达到全局最小值(例如,问题是凸的)。

缺点:1.当问题是高度非线性和非凸的时,解取决于初始点,因此所获得的解很有可能远离全局最优。2.它不完全适用于多目标优化问题。

由于上述缺点,对于多目标优化,我们通常使用进化算法。遗传算法属于进化算法。

为多目标优化问题开发的进化算法与基于梯度的算法有根本不同。它们是基于人群的,即维持多个解决方案(数百或数千个),而后者只维持一个解决方案。

NSGA-II就是一个例子:https://ieeexplore.ieee.org/document/996017,https://mae.ufl.edu/haftka/stropt/Lectures/multi_objective_GA.pdf,https://web.njit.edu/~horacio/Math451H/download/Seshadri_NSGA-II.pdf

多目标优化的目的是找到Pareto曲面(或最优权衡曲面)。由于表面由多个点组成,基于种群的进化算法非常适合。

(你可以使用基于梯度的算法来解决一系列单目标优化问题,但除非可行集是凸的,否则它无法准确地找到它们。)

最新更新