全局优化
- 更新时间2025-07-30
- 阅读时长9分钟
使用差分进化法(DE),求解有边界约束、非线性等式约束和非线性不等式约束的全局优化方程。

输入/输出
函数数据
—
函数数据包含用户定义函数运行时所需的静态数据。
目标和约束函数
—
目标和约束函数是对VI的引用,VI可将非线性函数、非线性等式约束函数,以及非线性不等式约束函数作为独立的输出。在引用VI中,目标函数输出不能为空,但约束函数输出可选择为空。因此,等式约束输出、不等式约束输出可以分别或同时为空。 可基于VI模板labview\vi.lib\gmath\GlobalOptimization.llb\Global Optimization_Objective Function.vit创建该VI。
初始参数
—
初始参数是最优化过程的初始参数。当开始状态为空时,LabVIEW使用初始参数。初始参数的每一行为一组参数。初始参数的列数必须等于边界中的 最小值和最大值长度。 如果初始参数的行数小于种群规模,LabVIEW初始化剩余参数。如果初始参数的行数大于种群规模,LabVIEW将忽略多余参数。
边界
—
边界该簇包含正在最优化处理的参数的数值上下界。
开始状态
—
开始状态包含了Pareto索引和参数的初始值。开始状态通常是上一次优化的结束状态,并作为优化的预热开始。如果开始状态被赋值,LabVIEW忽略初始参数。
错误输入(无错误)
—
错误输入表明该节点运行前发生的错误条件。该输入提供标准错误输入功能。
DE设置
—
DE设置包含了针对差分进化(DE)方法的附加设置。
停止标准
—
停止标准是终止最优化过程的条件的集合。
函数调用次数
—
函数调用次数是在最优化过程中目标函数调用的次数。 如果最多函数调用为-1,最多函数调用等于种群规模×(最大循环次数+1)。
最小值
—
最小值是在可能的全部最小值中的确定的全局最小值。
F(最小值)
—
F(最小值)是目标函数在最小值处的取值。
结束状态
—
结束状态包含了优化过程结束时的Pareto索引和种群的最终值。
错误输出
—
错误输出包含错误信息。该输出提供标准错误输出功能。 |
该VI通过找到x,最小化f(x)来求解全局优化方程,约束如下:
| 边界约束 | min ≤ x ≤ max |
| 等式约束 | g(x) = 0 |
| 不等式约束 | h(x) ≤ 0 |
x是要优化的参数集合。f(x)是要最小化的目标函数集合。该问题中,等式约束和不等式约束是可选的。
差分进化法是解全局优化方程的一种方法。差分进化算法对初始参数进行反复变异和交叉,逼近实际的全局优化值。
如目标函数求解的过程较长,差分进化法需要多次调用目标函数。调用的次数取决于样本大小,以及优化过程中每个循环的处理速度。该VI使For循环能实现并行执行,使LabVIEW能充分运用多核处理的优势。如实现并行循环,需执行下列操作:
- 将实现目标函数的VI改为共享副本的可重入VI。
- 打开引用时使用参数0x40,如下图所示。

下图显示了VI如何解全局优化方程。

范例
请参考LabVIEW附带的下列范例文件。
- labview\examples\Mathematics\Optimization\Find Global Min on Surface.vi
- labview\examples\Mathematics\Optimization\Two Circles Optimization.vi
函数数据
—
目标和约束函数
—
初始参数
—
边界
—
最小值
—
种群
—
Pareto索引
—
错误输入(无错误)
—
DE设置
—
种群规模
—
缩放因子
—
边界映射方法
—
函数调用次数
—
最小值
—
结束状态
—
种群
—
Pareto索引
—
错误输出
—