一、多目标优化的概念

        单目标优化的情况下,只有一个目标,任何两解都可以依据单一目标比较其好坏,可以得出没有争议的最优解。

        多目标化与传统的单目标优化相对。多目标优化的概念是在某个情景中在需要达到多个目标时,由于容易存在目标间的内在冲突,一个目标的优化是以其他目标劣化为代价,因此很难出现唯一最优解,取而代之的是在他们中间做出协调和折衷处理,使总体的目标尽可能的达到最优。

        在这个情况下,一般可以把多目标优化问题写成以下数学模型:

        没有转化为单目标问题的帕累托模型:优化的结果是帕累托前沿上 (Pareto Front)取得一个最优解的集合,并选择所需要的解来优化资源配置。由于大部分社会行动都存在一系列不同的目标,多目标优化的思路目前广泛应用在工程设计,基因工程,互联网推送等等领域。

二、常用模型

1、线性加权法

        线性加权法是多目标优化中使用比较广泛的方法,根据的重要程度,设定权重进行线性加权,将多个目标表示成:

        从而转换为单目标的优化问题。

        线性加权模型,其优点在于实现简单,仅用缩放后的值来代表原目标,求解也相对比较容易。其缺陷在于刻画目标和解不够精细,例如响应时间和开销,这两个目标的单位分别是时间和金钱,用先缩放再加权的方法把它们直接相加,对原始目标的信息有一定的丢失和遗漏。 另外,缩放过程需要提前知道目标的信息,如最大值、最小值或者平均值,而这些信息往往很难确定。而制定权重过程需要依据的用户、供应商对不同目标的偏好程度也很难提前获知。即使在已了解偏好程度的情况下,如何准确地制定权重仍然是棘手的问题。例如,将响应时间的权重设为0.2还是0.21,对于用户来说可能没有大的区别,但是对最优解有不可忽略的影响。因此,采用线性加权模型虽然简便,但解的优劣程度难以保证。

2、主要目标法 

        除了上面介绍的线性加权法,主要目标法(也称

多目标优化算法pytorch 多目标优化算法模型_多目标优化算法pytorch

-约束方法), 是一个应用广泛的算法。

        

多目标优化算法pytorch 多目标优化算法模型_多目标优化算法pytorch

-约束方法从K个目标中选择最重要的子目标作为优化目标,其余的子目标作为约束条件。每个子目标,通过上界

多目标优化算法pytorch 多目标优化算法模型_线性代数_03

来约束,设上述约束条件得到的可行域为

多目标优化算法pytorch 多目标优化算法模型_优化问题_04

。将原多目标优化问题转换成单目标优化问题,之后即可用单目标优化的方法来求解该问题。

        一般情况下,界限值可以取子目标函数的上界值:

多目标优化算法pytorch 多目标优化算法模型_最优解_05

        其优点是简单易行,保证在其他子目标取值允许的条件下,求出主要目标尽可能好的目标值。缺点是如果

多目标优化算法pytorch 多目标优化算法模型_线性代数_03

给的不合适的话,新的可行域

多目标优化算法pytorch 多目标优化算法模型_优化问题_04

可能为空集。

 3、逼近目标法

        逼近目标法是让决策者提出一个目标值

多目标优化算法pytorch 多目标优化算法模型_多目标优化算法pytorch_08

,使得每个目标函数

多目标优化算法pytorch 多目标优化算法模型_多目标_09

都尽可能的逼近对应的目标值:

多目标优化算法pytorch 多目标优化算法模型_多目标_10

        逼近目标法和机器学习中的损失函数类似,是一个单目标优化问题,可以通过经典的方法进行求解。这里求解的最优解和有效解及弱有效解没有直接的联系,逼近目标法反映了决策者希望的目标值。 

4、帕累托最优

        帕累托(Pareto)是多目标优化中经典的模型,并且它完全基于原始数据,没有将问题转化成单 目标问题分析。帕累托模型由于不需要对目标进行缩放和归一化,也不需要设定或者引入新的参数、变量(如权重、界限值),直接基于原始目标函数和值进行操作,可以适用于任何目标、任何函数。它不会丢失目标函数和解的信息,解的优劣可以较好保证。但帕累托模型的最优解是一个集合,其中包含不止一个最优解,因此要穷尽并求出所有的帕累托最优解有一定的难度。