4. 优化问题数学建模:设计变量、目标函数与约束条件

各位工程师朋友,咱们今天聊聊优化问题的数学建模。说实话,很多刚入行的同事一听到“数学建模”四个字就头大,觉得是纯理论的东西。其实不然,建模就是把工程问题翻译成数学语言,让计算机能听懂。

我个人习惯,在动手写代码之前,先拿张纸把这三个问题理清楚:我要调什么?我要达到什么目的?我有什么限制? 这三个问题对应到数学上,就是设计变量、目标函数和约束条件。

核心逻辑框架

设计变量 → 目标函数(刚度、强度、屈曲、频率)→ 约束条件(工艺、几何、性能下限)

设计变量 铺层角度、厚度、顺序 目标函数 刚度、强度、屈曲、频率 (单目标/多目标) 约束条件 工艺、几何、性能下限 优化求解器迭代计算 ↓ 更新设计变量 ↓ 重新计算目标函数与约束 ↓ 判断是否收敛 直到找到最优铺层方案

4.1 设计变量定义——你到底想调什么?

设计变量,说白了就是优化过程中我们可以自由调整的参数。在叶片铺层优化里,常见的变量有这些:

  • 铺层角度:每一层纤维的取向,比如 0°、±45°、90°。我见过有人把角度当连续变量处理,结果优化出来一堆 37.2° 这种角度,工艺上根本铺不出来。所以,我建议用离散变量,从标准角度集合里选
  • 铺层厚度:每层预浸料的厚度,通常是 0.125mm 或 0.25mm 的倍数。嗯,这里要注意,厚度变量和角度变量是耦合的。
  • 铺层顺序:各角度层的排列次序。这个变量最头疼,因为顺序变了,弯曲刚度、层间应力全跟着变。
  • 铺层数量:总层数,决定了叶片的总厚度和重量。

我的经验:在项目初期,我通常先固定铺层数量,只优化角度和顺序。等方案收敛了,再放开层数变量做一轮全局搜索。这样能避免变量太多导致计算量爆炸。

举个例子,一个 16 层的对称铺层,设计变量可以这样定义:

# 设计变量定义示例
# 变量1-8:前8层的角度(后8层对称)
theta = [0, 45, -45, 90, 90, -45, 45, 0]  # 单位:度
# 变量9:总层数(偶数)
n_layers = 16
# 变量10:单层厚度
t_ply = 0.125  # 单位:mm

4.2 目标函数——你到底想要什么?

目标函数就是优化的方向。叶片设计通常关注四个性能指标:

4.2.1 刚度目标

叶片要有足够的刚度,不然风一吹就弯得不成样子。刚度目标通常用弯曲刚度 EI扭转刚度 GJ 来衡量。我习惯把刚度目标设成最大化,或者设定一个下限值。

为什么会这样?因为刚度不够,叶片尖部可能会碰到塔筒,那可是灾难性事故。我在项目中遇到过这种情况,后来在优化模型里加了刚度约束,才彻底解决。

4.2.2 强度目标

强度目标通常用Tsai-Wu 失效因子最大应变准则来评估。说白了,就是检查材料会不会被拉断或压碎。

我个人习惯用 Tsai-Wu 因子,因为它能同时考虑拉压和剪切。目标值当然是越小越好,一般要求小于 1。但注意,不要追求极致的 0.5 以下,那意味着材料浪费,成本上去了。

4.2.3 屈曲目标

叶片在受压侧可能会发生局部屈曲,就像易拉罐被捏瘪一样。屈曲目标通常用屈曲载荷因子 λ 来表示。λ > 1 表示不会屈曲,λ 越大越安全。

避坑指南:我曾经把屈曲因子设成 3.0,结果优化出来的铺层全是 0° 层,弯曲刚度是够了,但剪切强度一塌糊涂。后来我学乖了,屈曲因子设到 1.5~2.0 就够,别贪心。

4.2.4 频率目标

叶片有固有频率,如果和风轮旋转频率(1P、3P)重合,就会发生共振。频率目标通常是避开共振区间,比如要求一阶弯曲频率 > 1.3 × 旋转频率。

你想想看,共振的后果是什么?轻则叶片裂纹,重则整机报废。所以频率约束我从来不敢放松。

4.2.5 多目标处理

实际工程中,这四个目标往往互相矛盾。刚度高了,可能重量就大了;强度好了,可能频率就变了。怎么处理?

  • 加权求和法:给每个目标一个权重,合成一个总目标。权重怎么定?我一般根据项目要求来,比如客户要求刚度优先,我就给刚度 0.5 的权重。
  • 约束转化法:只优化一个目标,其他目标转成约束条件。比如,最小化重量,同时要求刚度 > 下限、强度 < 上限。
  • Pareto 前沿法:不追求单一最优解,而是找出一组 Pareto 最优解,让客户自己选。这个方法理论很漂亮,但计算量太大,我很少在工程中用。

4.3 约束条件——你不能越过的红线

约束条件就是优化过程中的“红线”,越过了就不行。常见的约束有:

约束类型 具体内容 我的建议值
工艺约束 相邻层角度差 ≤ 45°(防止层间应力过大) ±45° 以内
工艺约束 同角度连续铺层 ≤ 4 层(防止基体富集) 最多 4 层
几何约束 总厚度 ≤ 设计空间(比如 20mm) 根据叶片截面定
性能约束 Tsai-Wu 因子 ≤ 1.0 0.8~1.0
性能约束 屈曲因子 ≥ 1.5 1.5~2.0
性能约束 一阶频率避开 1P/3P 区间 ±10% 严格避开

一个小技巧:约束条件不要设得太死。我一般会给 5%~10% 的裕量。比如要求屈曲因子 ≥ 1.5,我实际设成 ≥ 1.6。为什么?因为有限元分析有误差,留点余量心里踏实。

4.4 完整的数学模型长什么样?

好了,我们把上面这些串起来,一个完整的优化数学模型大概长这样:

# 优化问题数学表达
# 设计变量:x = [θ₁, θ₂, ..., θₙ, t_ply, n_layers]
# 目标函数:min f(x) = w₁·(1/EI) + w₂·(Tsai-Wu) + w₃·(1/λ)
# 约束条件:
#   g₁(x): Tsai-Wu ≤ 1.0
#   g₂(x): λ ≥ 1.5
#   g₃(x): f_natural ∉ [0.9×1P, 1.1×1P]
#   g₄(x): |θᵢ - θᵢ₊₁| ≤ 45°
#   g₅(x): 连续同角度层数 ≤ 4
#   g₆(x): 总厚度 ≤ 20 mm

这个模型看起来简单,但实际求解时坑很多。我记得有一次,优化出来的铺层顺序是 [0, 90, 0, 90, ...],工艺上倒是没问题,但屈曲因子死活上不去。后来发现,是因为 90° 层太集中,导致局部刚度突变。嗯,这就是为什么铺层顺序优化这么有挑战性。

好了,关于数学建模的核心内容就这些。设计变量、目标函数、约束条件,这三者构成了优化的骨架。下一节我们会聊具体的优化算法,到时候再细说怎么求解这个模型。

一句话总结:建模就是把工程问题翻译成数学语言,变量要选对,目标要明确,约束要合理。这三样做好了,优化就成功了一半。


专注资料整理