MCM520 ← 资料站首页 创意平板设计(二):多目标优化与方案评价 打开交互阅读器 →

创意平板设计(二):多目标优化与方案评价

一、问题重述

承第一篇建立的刚度控制模型,本文把创意平板设计提升为多目标优化与决策问题。目标有两个且相互冲突:一是最大化极限均布承载力 qmax⁡q_{\max},二是最小化平板自重 mm。设计变量为底板厚 tct_c 与两组加筋数 (nx,ny)(n_x,n_y)。由于"加筋越密承载力越高、但重量也越大",单纯追求承载力会得到超限的重板,因此必须在重量预算下寻找 Pareto 最优,并用合理的评价准则锁定最终方案。

本文首先用 1680 组枚举设计绘制承载力—重量 Pareto 前沿,揭示"性能—重量"的权衡结构;随后以粒子群算法(PSO)作为智能优化器独立搜索最优,验证与第一篇枚举结论一致;最后通过"重量预算扫描"量化不同工艺上限下的可达承载力,并引入"比承载"指标作为方案评价的量化准则,形成一套可操作的选型逻辑。需要强调,本题练习数据按刚度模型确定性生成,结论用于方法验证而非真实赛题参数。该类承重平板在现实中广泛存在——从玻璃展台、太阳能板背板到航天器轻质壁板,其"在重量红线内追求最大承载"的命题具有普遍工程价值,因此掌握其多目标优化范式比记住某一组具体数字更有意义。

二、多目标建模与目标函数

沿用第一篇本构关系:

qmax⁡(tc,nx,ny)=δallowE tc3α a4,a=max⁡ ⁣(Wnx+1,Lny+1)q_{\max}(t_c,n_x,n_y)=\delta_{\text{allow}}\frac{E\,t_c^{3}}{\alpha\,a^{4}},\qquad a=\max\!\Big(\frac{W}{n_x+1},\frac{L}{n_y+1}\Big)

m(tc,nx,ny)=ρ(L W tc+(nxL+nyW) hrtr)m(t_c,n_x,n_y)=\rho\Big(L\,W\,t_c+(n_x L+n_y W)\,h_r t_r\Big)

记两个目标为 f1=−qmax⁡f_1=-q_{\max}(极小化,即极大化承载)、f2=mf_2=m(极小化重量)。由于二者无法同时取极,优化转化为寻找非支配解集(Pareto 前沿)。设工艺给定的重量上限为 Wmax⁡W_{\max},则可行域为 m≤Wmax⁡m\le W_{\max} 的设计子集。图 1 给出一组典型加筋网格的几何定义,其中 nxn_x 条 xx 向筋与 nyn_y 条 yy 向筋把面板切成 (nx+1)×(ny+1)(n_x+1)\times(n_y+1) 个方格,跨度 aa 即方格边长,是连接"几何变量"与"承载目标"的桥梁。

图1

为把多目标转化为可计算的综合评分,可采用加权法:定义单位重量承载力 s=qmax⁡/ms=q_{\max}/m 作为"比承载"指标,它衡量每公斤材料换来的承载力,是工程上评价结构效率的直观量。比承载越高的方案,越接近"少料多承载"的理想形态。此外,也可构造带偏好权的线性加权 F=ω1(qmax⁡/qref)−ω2(m/mref)F=\omega_1(q_{\max}/q_{\text{ref}})-\omega_2(m/m_{\text{ref}}),当权重反映决策者偏好时等价于在 Pareto 前沿上做切平面选择。本文以比承载为主评价量,因为它对量纲不敏感、便于横向比较不同尺度设计。

三、Pareto 前沿与权衡结构

图 4 给出可行域(重量 ≤15 kg\le 15\ \text{kg})的全部设计点,并叠加 15 kg 预算线。可见承载力随重量单调递增但边际增益递减:在轻量化区段(10–13 kg)每增加 1 kg 能换来数万 kPa 的承载力跃升;而靠近 15 kg 上限时,继续加料带来的承载力增益已明显放缓。这种"先陡后平"的曲线,正是加筋跨度进入 0.08 m 量级后刚度饱和的体现——再加密格子,跨度不再下降,承载便停止增长,只剩重量继续上升,效率反而下降。

图4

图 2 按板厚对设计点着色:相同跨度下,厚板的承载力点整体位于上方,但厚板也普遍更重,故在 Pareto 前沿上,最优解并非来自最厚板,而是来自"够用的薄板 + 最密加筋"的组合。图 3 显示重量主要由加筋总数近似线性决定,进一步说明加筋密度是重量的主因、也是承载的主因——这与第一篇"跨度四次方"的幂律完全自洽:重量随加筋数线性增,承载却随跨度四次方涨,所以只要跨度还能降,加筋就"物超所值"。从经济视角看,这意味着研发投入应优先花在"把筋排得更密、更准"的工艺上,而非简单堆料增厚;在成本结构中,筋的线密度(每米加筋的材料与工时)才是真正的边际成本,优化它的回报远高于增厚底板。

图2

图3

四、粒子群寻优

为避免枚举在高维时组合爆炸,本文采用粒子群算法(PSO)在连续松弛空间 (tc,nx,ny)(t_c,n_x,n_y) 上搜索。每个粒子按"个体历史最优 + 群体历史最优"更新速度与位置,约束处理采用强惩罚:超重设计的目标值被压到远低于可行解,迫使搜索停留在可行域内。60 代迭代后,PSO 收敛到 qmax⁡=134698.28 kPaq_{\max}=134698.28\ \text{kPa},与第一篇枚举最优完全一致,证明该解确为问题的最优,而非枚举遗漏的偶然。图 7 给出收敛曲线,可见约 20 代后即稳定于平台,算法在该低维问题上收敛迅速。

图7

PSO 同时揭示:若完全解除重量约束,理论极限为 tc=8 mmt_c=8\ \text{mm}、nx=9n_x=9、ny=14n_y=14,承载力可达 qmax⁡=1077586.21 kPaq_{\max}=1077586.21\ \text{kPa},但自重高达 23.16 kg23.16\ \text{kg}。这提示我们"承载力天花板"远高于工艺现实,因此重量约束不是限制性能的枷锁,而是把设计锚定在可制造区间的必要边界。关于优化器本身,PSO 的惯性权重 0.7 与学习因子 0.8 取自经典取值,在本低维连续问题上已足够;若设计空间更高维(例如再加入筋高、筋厚、异形布局),可换用 NSGA-II 做显式多目标搜索、或用语雀/模拟退火避免早熟,但结论方向不会因优化器改变而逆转,因为 Pareto 前沿由物理模型唯一决定。

五、重量预算扫描与方案评价

将重量上限 Wmax⁡W_{\max} 从 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,更密的 9×149\times14 网格被解锁,承载力跃升至 134698.3 kPa 并在 14–15 kg 段维持平台;预算进一步放宽则继续由更厚板推动上升。该表可直接作为"工艺—性能"决策表使用:给定车间的重量配额,即可查得对应承载力水平。

图6

板厚对承载力的单独影响见图 5(固定 9×149\times14 网格):承载力随 tc3t_c^3 线性增长,但每增加 1 mm 板厚都会同步抬升重量,因此板厚应在满足跨度刚度后"适可而止"。综合 Pareto 与预算扫描,本文评价结论为:在 15 kg 工艺上限下,最优方案取 tc=4 mmt_c=4\ \text{mm}、nx=9n_x=9、ny=14n_y=14,承载力 134698.28 kPa134698.28\ \text{kPa}、重量 13.56 kg13.56\ \text{kg},其比承载高达约 9933 kPa/kg9933\ \text{kPa/kg},为全可行域最高,是兼顾性能与重量的理性选择。

为何以比承载而非单纯承载力作为评价量?原因在于多目标优化的"公平性":若只用 qmax⁡q_{\max},优化会毫无悬念地撞上重量上限(在 15 kg 内选最重的设计),从而失去"轻量化"这层目标的发言权;若只用 −m-m,则退化为无筋最轻板,承载极低。比承载 qmax⁡/mq_{\max}/m 把两个目标压成单一效率指标,其最大化等价于在 Pareto 前沿上寻找"单位代价增益最高"的点,恰是工程选型最关心的。更一般地,若决策者对不同重量区间有偏好(例如航空件极端看重轻、建筑件可容忍重),可改用加权的 TOPSIS:以"理想解=最大承载+最小重量"为参考,对可行方案做贴近度排序,结果与比承载排序在高承载区高度一致,仅在预算拐点附近因偏好权重不同而略有偏移。这种"先 Pareto、后评价"的两段式流程,正是处理多目标选型问题的标准且稳健的做法。

图5

六、对比验证

图 8 把最优方案与无筋厚板方案((tc=8 mmt_c=8\ \text{mm}、nx=ny=1n_x=n_y=1)承载力 340.57 kPa340.57\ \text{kPa}、重量 19.56 kg19.56\ \text{kg})在承载力与重量两个维度并列:最优方案以更轻的重量取得约 395 倍的承载力,直观印证了"密加筋薄底板"在 Pareto 意义上的全面占优。从评价角度看,无筋厚板不仅比承载低,且位于 Pareto 前沿之外(被更轻更强的方案支配),属于应被淘汰的设计。

图8

七、结论

本文将创意平板设计系统化为多目标优化问题,绘制了承载力—重量 Pareto 前沿,并用 PSO 独立验证了最优解 tc=4 mmt_c=4\ \text{mm}、9×149\times14 网格、qmax⁡=134698.28 kPaq_{\max}=134698.28\ \text{kPa}。重量预算扫描给出了工艺—性能决策表,表明 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]))