9. 多目标优化概念#
备注
本页介绍多目标优化的基本概念以及它们如何应用于材料设计问题。
9.1. 什么是多目标优化?#
多目标优化(MOO)处理需要同时优化多个通常相互冲突的目标的问题。与寻求一个最优解的单目标优化不同,MOO 通常会产生一组称为帕累托前沿的权衡解。
实际示例
考虑设计一种新合金:
目标 1:最大化强度(越高越好)
目标 2:最大化延展性(越高越好)
目标 3:最小化成本(越低越好)
这些目标经常冲突:更强的合金可能更脆(延展性更低)且更昂贵。
9.2. 关键概念#
9.2.1. 帕累托支配#
如果一个解在至少一个目标上更好,并且在所有其他目标上不差,则该解支配另一个解。
# Example: Two alloy compositions
Alloy_A = [Strength=250, Ductility=15, Cost=100]
Alloy_B = [Strength=240, Ductility=15, Cost=100]
# Alloy A dominates Alloy B because:
# - Strength: 250 > 240 (better)
# - Ductility: 15 = 15 (equal)
# - Cost: 100 = 100 (equal)
9.2.2. 帕累托前沿#
帕累托前沿(或帕累托边界)是所有非支配解的集合。这些代表目标之间最佳可能的权衡。
强度 vs. 延展性权衡:
延展性
^
| * (帕累托最优)
| * * (帕累托最优)
| * * (帕累托最优)
| * (帕累托最优)
| *
+----------------> 强度
曲线上的点是帕累托最优的。
曲线下方的点被支配。
9.2.3. 帕累托最优性#
如果没有其他解支配它,则该解是帕累托最优的。多目标优化的目标是找到帕累托前沿。
9.3. 数学表述#
9.3.1. 一般多目标问题#
minimize/maximize: f(x) = [f₁(x), f₂(x), ..., fₘ(x)]
subject to: g(x) ≤ 0
h(x) = 0
x ∈ X
其中:
f(x):m 个目标函数的向量g(x):不等式约束h(x):等式约束X:决策变量空间
9.3.2. 材料设计示例#
对于合金优化:
maximize: f₁(x) = Strength(Cu, Mg, Si, T_aging)
maximize: f₂(x) = Ductility(Cu, Mg, Si, T_aging)
minimize: f₃(x) = Cost(Cu, Mg, Si, T_aging)
subject to: Cu + Mg + Si ≤ 10% (composition constraint)
150 ≤ T_aging ≤ 200 (temperature constraint)
Cu, Mg, Si ≥ 0 (non-negativity)
9.4. 多目标 vs. 单目标#
方面 |
单目标 |
多目标 |
|---|---|---|
解 |
一个最优点 |
一组权衡解(帕累托前沿) |
决策制定 |
自动 |
需要偏好信息 |
复杂性 |
较低 |
较高(维度诅咒) |
可视化 |
容易(1D 或 2D) |
困难(高维) |
算法 |
成熟 |
更复杂,较新的领域 |
9.5. 多目标优化中的挑战#
9.5.1. 1. 冲突目标#
大多数实际问题涉及权衡:
# Materials examples
conflicts = {
"Strength vs. Ductility": "Stronger materials are often more brittle",
"Performance vs. Cost": "Better performance usually costs more",
"Conductivity vs. Stability": "High conductivity may reduce thermal stability",
"Hardness vs. Toughness": "Harder materials may be less tough"
}
9.5.2. 2. 维度诅咒#
随着目标数量的增加,问题变得指数级复杂:
2-3 个目标:可管理,良好的可视化
4-6 个目标:具有挑战性,有限的可视化
>6 个目标:非常困难,多目标优化
9.5.3. 3. 解的选择#
帕累托前沿提供多个解,但我们通常需要选择一个:
先验:在优化之前定义偏好
后验:在优化之后从帕累托前沿中选择
交互式:在优化过程中迭代地细化偏好
9.6. 多目标贝叶斯优化 (MOBO)#
MOBO 通过以下方式扩展贝叶斯优化以处理多个目标:
代理模型:为每个目标构建单独的模型
多目标采集:使用考虑所有目标的采集函数
帕累托前沿近似:迭代改进帕累托前沿估计
9.6.1. 主要优势#
为什么材料需要 MOBO?
昂贵的实验:材料测试成本高且耗时
多个性能:材料具有许多重要性能
权衡理解:需要理解性能之间的关系
高效探索:用最少的实验找到帕累托前沿
9.7. MOBO 采集函数#
9.7.1. 期望超体积提升 (EHVI)#
EHVI 最大化超体积(支配目标空间的体积)的期望提升:
EHVI(x) = E[HV(F ∪ {f(x)}) - HV(F)]
其中:
F:当前帕累托前沿近似HV:超体积指标f(x):点 x 处的目标向量
最适合:2-4 个目标,平衡探索
9.7.2. q-噪声期望超体积提升 (qNEHVI)#
qNEHVI 扩展 EHVI 以处理噪声观测和批量采集,使其适用于具有测量不确定性和并行实验的实际场景:
qNEHVI(x) = E_y[E[HV(F ∪ {f(x)}) - HV(F)]]
其中:
y:噪声观测HV:超体积指标f(x):点 x 处的目标向量
最适合:测量具有显著的观测噪声
9.7.3. 改进概率 (PI)#
多目标 PI 考虑每个目标的改进概率:
PI(x) = P(f(x) dominates at least one point in F)
最适合:保守优化,以利用为重点
9.7.4. 上置信界 (UCB)#
多目标 UCB 平衡均值预测和不确定性:
UCB(x) = μ(x) + β·σ(x)
分别应用于每个目标或组合应用。
最适合:有噪声的目标,以探索为重点
9.8. 超体积指标#
超体积是帕累托前沿的关键质量指标:
HV(F) = Volume of space dominated by F
9.8.1. 性质#
单调性:更大的超体积 = 更好的帕累托前沿
帕累托兼容:尊重帕累托支配
参考点依赖:需要参考点
9.8.2. 计算示例#
对于 2D 目标(两者都最大化):
# Pareto front points
pareto_points = [(3, 1), (2, 2), (1, 3)]
reference_point = (0, 0)
# Hypervolume = sum of dominated rectangles
# Rectangle 1: (3-0) × (1-0) = 3
# Rectangle 2: (2-0) × (2-1) = 2
# Rectangle 3: (1-0) × (3-2) = 1
# Total HV = 3 + 2 + 1 = 6
9.9. 实际考虑#
9.9.1. 目标缩放#
不同的目标可能具有不同的尺度:
# Before scaling
objectives = {
"Strength": [200, 300, 250], # MPa
"Ductility": [10, 20, 15], # %
"Cost": [50, 100, 75] # $/kg
}
# After normalization (0-1 scale)
normalized = {
"Strength": [0.0, 1.0, 0.5],
"Ductility": [0.0, 1.0, 0.5],
"Cost": [0.0, 1.0, 0.5]
}
9.9.2. 参考点选择#
对于超体积计算,仔细选择参考点:
# Good reference point (slightly worse than worst known values)
reference_point = [min_strength - 0.1*range_strength,
min_ductility - 0.1*range_ductility,
max_cost + 0.1*range_cost] # Note: max for minimization
9.9.3. 目标转换#
将最小化转换为最大化:
# Original objectives
strength = 250 # maximize
ductility = 15 # maximize
cost = 100 # minimize
# Transformed for maximization
objectives = [strength, ductility, -cost] # Negate cost
9.10. 材料设计应用#
9.10.1. 合金成分优化#
# Objectives for structural alloys
objectives = [
"Yield Strength", # Maximize
"Ultimate Strength", # Maximize
"Elongation", # Maximize
"Fatigue Life", # Maximize
"Cost", # Minimize
"Density" # Minimize (for aerospace)
]
9.10.2. 加工参数优化#
# Heat treatment optimization
objectives = [
"Hardness", # Maximize
"Toughness", # Maximize
"Residual Stress", # Minimize
"Energy Cost", # Minimize
"Processing Time" # Minimize
]
9.10.3. 多功能材料#
# Electronic materials
objectives = [
"Electrical Conductivity", # Maximize
"Thermal Conductivity", # Maximize/Minimize (depends on application)
"Mechanical Strength", # Maximize
"Corrosion Resistance", # Maximize
"Manufacturing Cost" # Minimize
]
9.11. 可视化技术#
9.11.1. 2D 帕累托前沿#
import matplotlib.pyplot as plt
# Plot Pareto front
plt.scatter(strength_values, ductility_values, c='red', label='Pareto Front')
plt.xlabel('Strength (MPa)')
plt.ylabel('Ductility (%)')
plt.title('Strength vs. Ductility Trade-off')
9.11.2. 3D 帕累托前沿#
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(strength, ductility, cost, c='red')
ax.set_xlabel('Strength')
ax.set_ylabel('Ductility')
ax.set_zlabel('Cost')
9.11.3. 平行坐标#
对于 >3 个目标,使用平行坐标图:
import pandas as pd
from pandas.plotting import parallel_coordinates
# Create DataFrame with objectives
df = pd.DataFrame({
'Strength': strength_values,
'Ductility': ductility_values,
'Cost': cost_values,
'Corrosion': corrosion_values,
'Type': 'Pareto'
})
parallel_coordinates(df, 'Type')
9.12. 决策制定#
9.12.1. 基于偏好的选择#
找到帕累托前沿后,根据偏好选择解:
# Weight-based selection
weights = [0.4, 0.3, 0.3] # [strength, ductility, cost]
# Calculate weighted sum for each Pareto solution
scores = []
for solution in pareto_front:
score = sum(w * obj for w, obj in zip(weights, solution))
scores.append(score)
# Select solution with highest score
best_index = np.argmax(scores)
selected_solution = pareto_front[best_index]
9.12.2. 膝点选择#
“膝点”代表最佳折衷:
# Find knee point (maximum distance from line connecting extremes)
def find_knee_point(pareto_front):
# Implementation depends on specific algorithm
# Common approaches: maximum perpendicular distance, angle-based
pass
9.13. 下一步#
现在您了解了多目标概念:
学习 MOBO 算法:MultiBgolearn 中的 MOBO 算法
尝试 MultiBgolearn:MultiBgolearn:多目标贝叶斯全局优化
通过示例练习:多目标优化示例
探索帕累托优化:帕累托优化和权衡分析
参见
更深入的理解:
Deb, K. “Multi-Objective Optimization using Evolutionary Algorithms”
Coello, C.A.C. “Evolutionary Algorithms for Solving Multi-Objective Problems”
Miettinen, K. “Nonlinear Multiobjective Optimization”