4. 配方案例一实战

本节以一款溶剂型丙烯酸聚氨酯清漆为对象,完整走一遍“配方变量→VOC与光泽度响应→多目标寻优→Pareto前沿”的建模与求解过程。目标不是给出某个“最优配方”,而是让读者掌握如何把配方问题翻译成可计算的多目标模型,并读懂前沿上的取舍关系。以下所有配方数值、响应值与计算结果均为教学示例,用于说明方法,不代表实测数据。

一、明确决策变量与目标函数

先界定优化问题的三要素。决策变量选四个对VOC和光泽度都敏感的配方因子:成膜树脂固含量 x1(%,质量分数)、活性稀释剂/高沸点溶剂占比 x2(%)、颜填料体积浓度 x3(PVC,%)、流平剂用量 x4(%,相对总配方)。目标函数有两个:VOC含量 f1(g/L,越小越好)与20°光泽度 f2(GU,越大越好)。约束条件包括:x1∈[55,75]、x2∈[5,20]、x3∈[8,25]、x4∈[0.1,0.8],以及施工黏度(涂-4杯,25℃)落在 [60,90] s 的工艺窗口。

VOC与配方之间不是简单线性关系。VOC近似由有机挥发物总量除以体系体积得到,而体积又受固含量与密度影响;光泽度则随PVC升高先缓降、越过临界PVC后急剧下降,同时受流平剂改善。因此采用“机理约束+响应面回归”的混合建模:先用物理关系搭骨架,再用少量试验点拟合修正项。

二、用试验设计采集建模数据

四因子若做全因子试验代价过高,采用Box-Behnken设计(BBD),共27个试验点(含3个中心点重复)。示例中按该设计安排试验,测得每组配方的VOC与20°光泽度。为便于读者复现,下面给出建模代码框架(Python,示例数据为假设值):

import numpy as np
from scipy.optimize import minimize
from scipy.stats import qmc

# 示例:BBD 27 点(此处以随机化占位,实际应填入真实试验矩阵)
rng = np.random.default_rng(42)
X = rng.uniform([55,5,8,0.1],[75,20,25,0.8],size=(27,4))

# 假设响应(教学示例,非实测)
def voc(x1,x2,x3,x4):
    return 420 - 3.2*x1 + 6.5*x2 - 0.8*x3 + 12*x4

def gloss(x1,x2,x3,x4):
    base = 92 - 0.9*(x3-8)**1.35 + 6*x4 + 0.15*(x1-55)
    return max(5.0, base)

y1 = np.array([voc(*r) for r in X])
y2 = np.array([gloss(*r) for r in X])

实际建模时,应对 y1、y2 分别拟合二次响应面(含平方项与交互项),并用 R² 与残差图检验。示例中VOC模型 R²≈0.96、光泽度模型 R²≈0.93,说明二次模型可接受;若某因子交互项不显著(p>0.05),应剔除后重拟合,避免过拟合。

三、多目标求解与Pareto前沿

两个目标方向相反:降VOC往往要减少溶剂、提高固含量,但固含量过高会使黏度上升、流平变差,光泽度受损。因此不存在单点最优,只能求Pareto前沿——前沿上任意一点,都无法在不牺牲另一目标的前提下继续改进。

求解采用NSGA-II思路:在约束盒内生成种群,对每个个体计算 f1(VOC,最小化)与 f2(光泽度,最大化,代码中取负值统一为最小化),经非支配排序与拥挤度筛选迭代。也可用加权和法扫掠权重 w∈[0,1] 得到近似前沿,便于教学演示:

def objectives(v):
    x1,x2,x3,x4 = v
    return np.array([voc(x1,x2,x3,x4), -gloss(x1,x2,x3,x4)])

bounds = [(55,75),(5,20),(8,25),(0.1,0.8)]
front = []
for w in np.linspace(0,1,21):
    res = minimize(lambda v: w*objectives(v)[0] + (1-w)*objectives(v)[1],
                   x0=[65,12,15,0.4], bounds=bounds, method='SLSQP')
    if res.success:
        front.append((res.x, voc(*res.x), gloss(*res.x)))

示例计算得到的前沿大致呈“L”形:左端VOC约 310 g/L、光泽度约 78 GU;右端VOC约 395 g/L、光泽度约 93 GU;拐点附近VOC约 345 g/L、光泽度约 89 GU。拐点意味着继续降VOC的边际光泽损失开始变大,是工程上常关注的折中点。

VOC–光泽度 Pareto 前沿(教学示例) VOC 含量 (g/L) → 越小越好 20° 光泽度 (GU) → 越大越好 300 330 360 390 420 75 80 85 90 95 可行域(劣解区) Pareto 前沿 低VOC端:310 g/L 光泽 78 GU 拐点:345 g/L 光泽 89 GU 高光泽端:395 g/L 光泽 93 GU 降VOC方向

四、从前沿选点并回代验证

前沿只是候选集,最终选点要结合产品定位。若该清漆用于室内木器,VOC限值较严,可优先选拐点左侧、VOC≈330 g/L、光泽≈86 GU 的方案;若用于高装饰面,则取右侧高光泽点。选定后必须把对应 x1~x4 回代到黏度约束与响应面模型,检查是否落在工艺窗口内,并安排小试复核光泽与VOC。示例中拐点方案回代得黏度约 76 s,满足 [60,90] s 要求,可作为进入中试的候选。

建模要点:①先固定测量标准(光泽度用20°还是60°、VOC按GB/T 23985还是计算法),否则前沿不可比;②响应面拟合后务必做残差与失拟检验,R² 高不等于预测可靠;③Pareto前沿是“候选集”而非“答案”,选点必须叠加法规、成本与工艺约束。
常见误区:把加权和法得到的单点当作全局最优;或忽略因子交互项,导致前沿形状失真。若两个目标高度冲突,应检查是否遗漏了关键变量(如助溶剂比例、固化剂类型),而不是强行在前沿上找“完美点”。

至此,一个可复用的VOC-光泽度多目标模型闭环已经建立:变量与目标定义→试验设计与数据采集→响应面拟合→Pareto求解→约束回代与选点验证。后续案例可沿用同一骨架,只替换对象与响应函数。