主要内容

Warm Start最佳实践

使用热启动MATLAB

lsqlinquadprog求解器支持使用暖万博1manbetx启动对象作为增强的初始点。热启动对象存储以前解决方案中特定于算法的数据,以帮助避免在求解之间进行昂贵的初始化。使用热启动可以显著提高多个求解器调用之间的性能。要使用带有求解器的热启动,首先要使用optimwarmstart.指定初始点x0和选项optimoptions,包括设置算法选项“激活集”.有关基本示例,请参见quadprog返回热启动对象lsqlin返回热启动对象.有关更广泛的示例,请参见热启动quadprog

当您解决一系列类似的问题时,请使用热启动对象。为了获得最佳性能,请遵循以下指导方针。

  • 保持变量的数量不变。从一个问题到下一个问题,你必须有相同数量的变量。如果变量的数量发生了变化,求解器就会发出错误。

  • 不要改变等式约束。如果你改变等式约束矩阵Aeq说真的,求解器不能使用热启动。

  • 的几行一个矩阵。当问题只修改了控件的几行时,热启动最有效一个矩阵和相应的b向量,表示约束A * x < =.此修改包括添加或删除一个或多个约束。

  • 修改的一些元素b向量。当问题只修改了程序的几个元素时,热启动最有效b向量。

  • 更改一些约束条件。当问题仅通过增加、删除或改变上界或下界中的条目来修改一些边界时,热启动最有效。这个修改包括设置bounds或-

  • 改变目标函数。当你改变表示目标函数的矩阵或向量时,一个温暖的开始可能是有效的Hf数组为quadprog,或者是Cd数组为lsqlin.但是,对这些数组进行较大的修改可能会导致效率的损失,因为以前的解决方案可能离新的解决方案很远。

热启动的性能提高最终取决于问题几何。对于许多问题,由于在问题之间进行的更改更少,性能收益也会提高。

在代码生成和静态内存管理中使用Warm启动

另外还有一个MATLAB的指导方针®热启动,遵循以下代码生成与静态内存管理的指导原则:

  • 设置“MaxLinearEqualities”“MaxLinearInequalities”名称-值参数在optimwarmstart

  • 使用coder.varsize(MATLAB编码器)所有矩阵形式的求解器输入上的宏(Aeq等等)。

另请参阅

|||(MATLAB编码器)

相关的话题