一、多目标优化

  • 有多个目标的最优化问题。
    需要衡量每个目标的完成情况,并主观上区分多个目标的正确性,使得整体的完成情况尽量好。
  • 多目标优化问题的数学模型:
  • 多目标规划适用赛题:使xxx最少/多/利润最大,同时尽量xxxx
  • 举例:2021年Mathorcup C题

二、衡量多目标优化的数学量

  • 衡量每个目标的完成情况:正负偏差变量
    设fi(i = 1,…,l)为第i个目标函数;
    正偏差变量 di+ = max{fi - di0,0}表示实际值超过目标值的部分,负偏差变量di- = -min{fi - di0,0}表示实际值未达到目标值的部分,这里di0表示fi的目标值。
  • 绝对约束和目标约束:
    绝对约束是模型中自带的约束条件,必须满足,否则是不可行解。
    目标约束是模型中对不等式右端追求的值有偏差。
  • 优先因子:
    在主观上确定多个目标的优先因子Pk(通常需要查阅文献)。

标题三、多目标优化问题的函数调用

  • 函数fgoalattain
  • 使用条件:需知各分目标的单个的最优值;需确定各分目标的加权系数。
  • 调用格式:[x, fval, exitflag, output, grad, hessian] = fgoalattain(@fun, x0, goal, weight, A, b, Aeq, beq, lb, ub, ‘Nlc’, opyions, P1, P2…)
    x:返回目标函数的最优解
    fval:返回目标函数的最优值
    exitflag:返回算法的终止标志
    output:优化算法信息的一个数据结构
    grad:返回目标函数在最优解的梯度
    hessian:目标函数在最优解的黑塞矩阵
    @fun:目标函数文件名
    x0:初始值
    goal:各分目标期望值
    weight:各分目标权重
    A:线性不等式约束的常数矩阵
    b:线性不等式约束的常数向量
    Aeq:线性等式约束的系数矩阵
    beq:线性等式约束的常数向量
    lb、ub:变量的下界和上界
    Nlc:非线性约束条件的函数名
    options:设置优化选项参数
    P1、P2……:附加参数
  • max f1(x) = -3x1 + 2x2,max f2(x) = 4x1 + 3x2,约束条件为2x1 + 3x2 ≤ 18;2*x1 + x2 ≤ 10;x1、x2 ≥ 0
goal=[12,24];
weight=[12,24];
x0=[0;0];
a=[2 3;2 1];
b=[18;10];
lb=[0;0];
[x,fval]=fgoalattain('mutiplesubjiect',goal,weight,x0,a,b,[],[],lb,[])
  • 函数fminimax
  • 使用条件:目标函数的最大值逐次减小。
  • 调用格式:[x, fval, exitflag, output, grad, hessian] = fminimax(@fun, x0, goal, A, b, Aeq, beq, lb, ub, ‘Nlc’, opyions, P1, P2…)
    x:返回目标函数的最优解
    fval:返回目标函数的最优值
    exitflag:返回算法的终止标志
    output:优化算法信息的一个数据结构
    grad:返回目标函数在最优解的梯度
    hessian:目标函数在最优解的黑塞矩阵
    @fun:目标函数文件名
    x0:初始值
    goal:各分目标期望值
    A:线性不等式约束的常数矩阵
    b:线性不等式约束的常数向量
    Aeq:线性等式约束的系数矩阵
    beq:线性等式约束的常数向量
    lb、ub:变量的下界和上界
    Nlc:非线性约束条件的函数名
    options:设置优化选项参数
    P1、P2……:附加参数