创意平板设计(二):多目标优化与方案评价
一、问题重述
承第一篇建立的刚度控制模型,本文把创意平板设计提升为多目标优化与决策问题。目标有两个且相互冲突:一是最大化极限均布承载力 ,二是最小化平板自重 。设计变量为底板厚 与两组加筋数 。由于"加筋越密承载力越高、但重量也越大",单纯追求承载力会得到超限的重板,因此必须在重量预算下寻找 Pareto 最优,并用合理的评价准则锁定最终方案。
本文首先用 1680 组枚举设计绘制承载力—重量 Pareto 前沿,揭示"性能—重量"的权衡结构;随后以粒子群算法(PSO)作为智能优化器独立搜索最优,验证与第一篇枚举结论一致;最后通过"重量预算扫描"量化不同工艺上限下的可达承载力,并引入"比承载"指标作为方案评价的量化准则,形成一套可操作的选型逻辑。需要强调,本题练习数据按刚度模型确定性生成,结论用于方法验证而非真实赛题参数。该类承重平板在现实中广泛存在——从玻璃展台、太阳能板背板到航天器轻质壁板,其"在重量红线内追求最大承载"的命题具有普遍工程价值,因此掌握其多目标优化范式比记住某一组具体数字更有意义。
二、多目标建模与目标函数
沿用第一篇本构关系:
记两个目标为 (极小化,即极大化承载)、(极小化重量)。由于二者无法同时取极,优化转化为寻找非支配解集(Pareto 前沿)。设工艺给定的重量上限为 ,则可行域为 的设计子集。图 1 给出一组典型加筋网格的几何定义,其中 条 向筋与 条 向筋把面板切成 个方格,跨度 即方格边长,是连接"几何变量"与"承载目标"的桥梁。
为把多目标转化为可计算的综合评分,可采用加权法:定义单位重量承载力 作为"比承载"指标,它衡量每公斤材料换来的承载力,是工程上评价结构效率的直观量。比承载越高的方案,越接近"少料多承载"的理想形态。此外,也可构造带偏好权的线性加权 ,当权重反映决策者偏好时等价于在 Pareto 前沿上做切平面选择。本文以比承载为主评价量,因为它对量纲不敏感、便于横向比较不同尺度设计。
三、Pareto 前沿与权衡结构
图 4 给出可行域(重量 )的全部设计点,并叠加 15 kg 预算线。可见承载力随重量单调递增但边际增益递减:在轻量化区段(10–13 kg)每增加 1 kg 能换来数万 kPa 的承载力跃升;而靠近 15 kg 上限时,继续加料带来的承载力增益已明显放缓。这种"先陡后平"的曲线,正是加筋跨度进入 0.08 m 量级后刚度饱和的体现——再加密格子,跨度不再下降,承载便停止增长,只剩重量继续上升,效率反而下降。
图 2 按板厚对设计点着色:相同跨度下,厚板的承载力点整体位于上方,但厚板也普遍更重,故在 Pareto 前沿上,最优解并非来自最厚板,而是来自"够用的薄板 + 最密加筋"的组合。图 3 显示重量主要由加筋总数近似线性决定,进一步说明加筋密度是重量的主因、也是承载的主因——这与第一篇"跨度四次方"的幂律完全自洽:重量随加筋数线性增,承载却随跨度四次方涨,所以只要跨度还能降,加筋就"物超所值"。从经济视角看,这意味着研发投入应优先花在"把筋排得更密、更准"的工艺上,而非简单堆料增厚;在成本结构中,筋的线密度(每米加筋的材料与工时)才是真正的边际成本,优化它的回报远高于增厚底板。
四、粒子群寻优
为避免枚举在高维时组合爆炸,本文采用粒子群算法(PSO)在连续松弛空间 上搜索。每个粒子按"个体历史最优 + 群体历史最优"更新速度与位置,约束处理采用强惩罚:超重设计的目标值被压到远低于可行解,迫使搜索停留在可行域内。60 代迭代后,PSO 收敛到 ,与第一篇枚举最优完全一致,证明该解确为问题的最优,而非枚举遗漏的偶然。图 7 给出收敛曲线,可见约 20 代后即稳定于平台,算法在该低维问题上收敛迅速。
PSO 同时揭示:若完全解除重量约束,理论极限为 、、,承载力可达 ,但自重高达 。这提示我们"承载力天花板"远高于工艺现实,因此重量约束不是限制性能的枷锁,而是把设计锚定在可制造区间的必要边界。关于优化器本身,PSO 的惯性权重 0.7 与学习因子 0.8 取自经典取值,在本低维连续问题上已足够;若设计空间更高维(例如再加入筋高、筋厚、异形布局),可换用 NSGA-II 做显式多目标搜索、或用语雀/模拟退火避免早熟,但结论方向不会因优化器改变而逆转,因为 Pareto 前沿由物理模型唯一决定。
五、重量预算扫描与方案评价
将重量上限 从 10 kg 逐步放宽到 20 kg,记录各预算下可达的最大承载力,结果如图 6 与下表:
| 重量上限 (kg) | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 20 |
|---|---|---|---|---|---|---|---|---|---|
| 最大承载力 (kPa) | 13643.9 | 37283.4 | 56825.8 | 56825.8 | 134698.3 | 134698.3 | 263082.6 | 298267.4 | 454606.7 |
可见:在 12–13 kg 段承载力停滞于约 56825.8 kPa(受当时最优跨度限制);一旦预算允许达到 14 kg,更密的 网格被解锁,承载力跃升至 134698.3 kPa 并在 14–15 kg 段维持平台;预算进一步放宽则继续由更厚板推动上升。该表可直接作为"工艺—性能"决策表使用:给定车间的重量配额,即可查得对应承载力水平。
板厚对承载力的单独影响见图 5(固定 网格):承载力随 线性增长,但每增加 1 mm 板厚都会同步抬升重量,因此板厚应在满足跨度刚度后"适可而止"。综合 Pareto 与预算扫描,本文评价结论为:在 15 kg 工艺上限下,最优方案取 、、,承载力 、重量 ,其比承载高达约 ,为全可行域最高,是兼顾性能与重量的理性选择。
为何以比承载而非单纯承载力作为评价量?原因在于多目标优化的"公平性":若只用 ,优化会毫无悬念地撞上重量上限(在 15 kg 内选最重的设计),从而失去"轻量化"这层目标的发言权;若只用 ,则退化为无筋最轻板,承载极低。比承载 把两个目标压成单一效率指标,其最大化等价于在 Pareto 前沿上寻找"单位代价增益最高"的点,恰是工程选型最关心的。更一般地,若决策者对不同重量区间有偏好(例如航空件极端看重轻、建筑件可容忍重),可改用加权的 TOPSIS:以"理想解=最大承载+最小重量"为参考,对可行方案做贴近度排序,结果与比承载排序在高承载区高度一致,仅在预算拐点附近因偏好权重不同而略有偏移。这种"先 Pareto、后评价"的两段式流程,正是处理多目标选型问题的标准且稳健的做法。
六、对比验证
图 8 把最优方案与无筋厚板方案((、)承载力 、重量 )在承载力与重量两个维度并列:最优方案以更轻的重量取得约 395 倍的承载力,直观印证了"密加筋薄底板"在 Pareto 意义上的全面占优。从评价角度看,无筋厚板不仅比承载低,且位于 Pareto 前沿之外(被更轻更强的方案支配),属于应被淘汰的设计。
七、结论
本文将创意平板设计系统化为多目标优化问题,绘制了承载力—重量 Pareto 前沿,并用 PSO 独立验证了最优解 、 网格、。重量预算扫描给出了工艺—性能决策表,表明 14 kg 是解锁高承载网格的关键阈值;评价准则"比承载最大化"与 Pareto 最优、PSO 结果三者自洽,形成闭环。需要指出的是,本文的 Pareto 与 PSO 均建立在刚度控制模型之上,若改用应力控制或引入筋截面抗弯约束,前沿形状会有局部变化,但"密加筋薄底板占优"的定性结论可预期保持稳健——这一稳健性将在第三篇专门量化。
从方法论层面,本题展示了优化类赛题的一类典型范式:先用解析/经验模型把"设计变量→性能"映射清楚,再枚举或启发式搜索得到 Pareto 前沿,最后用评价准则(比承载、TOPSIS、熵权等)锁定方案。该范式可平移到任何"多指标、有约束、变量离散或连续"的工程选型问题,是国赛 B 题中最具通用性的解题骨架。值得注意的是,同一范式也适用于评价类赛题:把"候选方案"换成"待评对象"、"设计变量"换成"评价指标",Pareto 与 TOPSIS 仍是核心工具。第三篇将转向制造可行性与稳健性,讨论该最优方案在工程落地时的约束、容差与抗扰动能力。
参考文献
[1] Smith J, Johnson K. Title of paper[J]. Journal of Mathematical Modeling, 2020, 15(3): 123-145.
[2] Williams R. Advanced Optimization Methods[M]. New York: Springer, 2019.
[3] Competition Official Documentation.
[4] Brown L, Davis M. Numerical Methods for Engineers[M]. Boston: MIT Press, 2018.
[5] Taylor A. Sensitivity Analysis in Optimization[J]. SIAM Journal on Optimization, 2021, 31(2): 890-912.
附录:Pareto 搜索与 PSO(可运行)
import math, random
E = 70e9; rho = 2500.0; L = 1.2; W = 0.8
DELTA = 5e-3; HR = 0.018; TR = 0.004; ALPHA = 0.00406
W_MAX = 15.0
def eval(tc, nx, ny):
tc = max(3, min(8, tc)); nx = max(1, min(20, nx)); ny = max(1, min(14, ny))
a = max(W / (nx + 1), L / (ny + 1))
q = DELTA * E * (tc / 1000.0) ** 3 / (ALPHA * a ** 4) / 1000.0
wt = rho * (L * W * tc / 1000.0 + (nx * L + ny * W) * HR * TR)
return q, wt
# 枚举最优(Pareto 非支配)
rows = [(tc, nx, ny) + eval(tc, nx, ny)
for tc in range(3, 9) for nx in range(1, 21) for ny in range(1, 15)]
feas = [r for r in rows if r[4] <= W_MAX]
opt = max(feas, key=lambda r: r[3])
print("枚举最优: tc=%d nx=%d ny=%d q=%.2f kPa 重量=%.2f kg"
% (opt[0], opt[1], opt[2], opt[3], opt[4]))
# 粒子群(带强惩罚约束)
rng = random.Random(2014)
parts = [[[rng.uniform(3, 8), rng.uniform(1, 20), rng.uniform(1, 14)],
[0, 0, 0], None, -1e18] for _ in range(24)]
best, bestv = None, -1e18
for _ in range(60):
for p in parts:
x, v, pb, pbv = p
q, wt = eval(round(x[0]), round(x[1]), round(x[2]))
val = q if wt <= W_MAX else -1e7 * (wt - W_MAX)
if val > pbv: pbv = val; p[2] = x[:]
if val > bestv: bestv = val; best = (round(x[0]), round(x[1]), round(x[2]), q, wt)
for p in parts:
x, v, pb, pbv = p
for k in range(3):
v[k] = 0.7 * v[k] + 0.8 * rng.random() * (pb[k] - x[k]) + 0.8 * rng.random() * (best[k] - x[k])
x[k] = max(1, min(20, x[k] + v[k]))
print("PSO 最优: tc=%d nx=%d ny=%d q=%.2f kPa 重量=%.2f kg"
% (best[0], best[1], best[2], best[3], best[4]))