一、多目标优化
- 有多个目标的最优化问题。
需要衡量每个目标的完成情况,并主观上区分多个目标的正确性,使得整体的完成情况尽量好。 - 多目标优化问题的数学模型:
- 多目标规划适用赛题:使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……:附加参数