求解非线性系统中的并行牛顿法

计算科学 并行计算 牛顿法
2021-12-24 05:08:07

基于SPICE(如ngspice)的电路仿真软件使用Newton-Raphson方法求解非线性方程组,该方程组对包含非线性元件(如二极管或MOSFET晶体管)的电路进行建模。在牛顿法的每次迭代中,大部分时间都花在了以下两部分上:

  • 设备模型评估:加载稀疏矩阵A和 rhsbAx=b根据电路的当前工作点具有适当的值。
  • 矩阵求解:求解Ax=b

如文献所示,为了加快模拟速度,已努力将上述两个部分并行化。

几天前,我想到了一个以粗粒度方式加速模拟的想法,但我不确定这是否是一个可行的想法,或者是否已经有研究/实施。让我在下面解释一下我的想法,并请提供建议或指示。非常感谢!

这个想法很简单(基于许多计算资源可用的假设):在每次迭代中,我们尝试多个 (N) 并行候选解,即N版本Ax=b并行加载/求解;如果没有收敛,我们从N下一次迭代的解决方案(不知何故,例如,简单地使用候选和解决方案之间的欧几里得距离作为标准)。再次,下一次迭代生成N基于从前一次迭代中选择的候选解决方案(例如,只需在方向上选择不同的步长δx),并继续该过程,直到它收敛或达到最大迭代次数。

希望是:

  • 当我们尝试N每次迭代候选,达到收敛的迭代次数最有可能减少,从而加快仿真速度。
  • 随着我们尝试更多的候选者,解决方案可能比从牛顿方法获得的局部解决方案更“全局”。

下面简单描述一下上面的思路:

寻找 OP

继续寻找 OP

1个回答

这是一个非常有趣的想法,而且它确实存在。牛顿法是一种用于求解非线性方程组的算法F(x)=0, 其中向量函数的每个分量F

f1(x)=f1(x1,x2,,xn)=0f2(x)=f1(x1,x2,,xn)=0fn(x)=f1(x1,x2,,xn)=0

用于求解该方程组的另一类算法是使用优化算法来获得形式为多变量函数的最小值g=RnR. 当我们注意到定义一个函数时,两个问题之间的联系就出现了g作为

g(x1,x2,,xn)=i=1n[fi(x1,x2,,xn)]2

然后解决方案x方程组的点恰好是函数具有最小值的点0. 从此以后,您可以同时使用方程组F(Newton-Raphson 及相关算法)或函数g(多变量优化算法)。有很多关于无约束多元优化的材料。

您关于使用随机数寻找系统解决方案的想法已经存在。它是更广泛的一类优化算法的一部分,称为进化算法

举两种方法,有遗传算法(GA)粒子群优化(PSO)给定变量的初始随机分布,每种算法将使用不同的方法来获得连续的近似值,直到达到最佳值。正如您所注意到的,“最佳解决方案”是最小化的解决方案g或者,希望,使g=0.