主要内容

热启动的最佳实践

使用热启动MATLAB

lsqlinquadprog连接器支持使用热金宝app启动对象作为一个增强的初始点。热启动对象存储algorithm-specific数据从先前的解决方案来帮助避免昂贵的解决之间的初始化。使用热启动多个解算器调用之间可以显著提高性能。使用热启动的解决者,首先创建一个对象使用热启动optimwarmstart。指定一个初始点x0和选项创建optimoptions,包括设置算法选项“激活集”。基本的例子,请参阅quadprog返回热启动对象lsqlin返回热启动对象。一个更广泛的例子,请参阅热启动quadprog

使用热启动对象当你解决一系列类似的问题。为获得最佳性能,遵循这些指导方针。

  • 保持相同数量的变量。你必须有相同数量的变量从一个到另一个问题。如果变量的数量变化,解决问题的一个错误。

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

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

  • 修改的几个元素b向量。热启动工作时最有效的问题修改的只有少数元素b向量。

  • 改变一些绑定约束。热启动工作时最有效的问题修改只有少数边界通过添加,删除或修改条目的上界或下界。这一修改包括设置范围或-

  • 改变目标函数。温暖的开始时可以有效的改变表示目标函数——一个矩阵或向量Hf数组为quadprog,或者是Cd数组为lsqlin。然而,这些数组大修改会导致效率的损失,因为前面的解决方案可以远离新解决方案。

热启动的性能改进最终取决于几何问题。对许多问题,性能优势提高之间少更改问题。

使用热启动与静态内存管理代码生成

除了MATLAB的指导方针®热启动,遵循这些指导方针与静态内存管理代码生成:

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

  • 使用coder.varsize(MATLAB编码器)宏在所有矩阵的解算器的输入(,Aeq等等)。

另请参阅

|||(MATLAB编码器)

相关的话题