主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

optimwarmstart

创建热启动对象

自 R2021a 起

说明

ws = optimwarmstart(x0,options) 创建一个热启动对象 ws 以供 options 中指示的求解器使用。有关使用热启动对象的示例,请参阅 返回热启动对象

示例

ws = optimwarmstart(x0,options,Name,Value) 使用名称值参量在 ws 中合并内存边界。仅在生成代码时使用内存边界。

示例

示例

全部折叠

quadprog 创建一个默认的热启动对象。

x0 = [1 3 5];
options = optimoptions('quadprog','Algorithm','active-set');
ws = optimwarmstart(x0,options)
ws = 

  QuadprogWarmStart with properties:

          X: [3×1 double]
    Options: [1×1 optim.options.Quadprog]

    Code generation limitations

创建一个 lsqlin 热启动对象,用于具有内存限制的代码生成。

x0 = [1 3 5];
options = optimoptions('lsqlin','Algorithm','active-set');
ws = optimwarmstart(x0,options,...
    'MaxLinearEqualities',30,...
    'MaxLinearInequalities',5)

ws = LsqlinWarmStart with properties X and Options and a link "Code generation limitations"

点击 Code generation limitations 链接来查看内存设置。

  MaxLinearEqualities: 30 
MaxLinearInequalities: 5 

要加速后续的 quadprog 调用,请创建一个热启动对象。

options = optimoptions('quadprog','Algorithm','active-set');
x0 = [1 2 3];
ws = optimwarmstart(x0,options);

使用 ws 求解二次规划。

H = [1,-1,1
    -1,2,-2
    1,-2,4];
f = [-7;-12;-15];
A = [1,1,1];
b = 3;
lb = zeros(3,1);
tic
[ws,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[],[],lb,[],ws);
Minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in 
feasible directions, to within the value of the optimality tolerance,
and constraints are satisfied to within the value of the constraint tolerance.

<stopping criteria details>
toc
Elapsed time is 0.060411 seconds.

更改目标函数,重新求解问题。

f = [-10;-15;-20];

tic
[ws,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[],[],lb,[],ws);
Minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in 
feasible directions, to within the value of the optimality tolerance,
and constraints are satisfied to within the value of the constraint tolerance.

<stopping criteria details>
toc
Elapsed time is 0.010756 seconds.

输入参数

全部折叠

初始点,指定为实数数组。该点存储在 ws.X 中。

示例: 10*rand(5,1)

数据类型: single | double

优化选项,指定为 optimoptions 的输出。您必须至少指定一个支持的求解器,lsqlinquadprog,以及 'active-set'(对于和 Algorithm 选项)。例如,输入以下代码来指定 quadprog 求解器。

options = optimoptions('quadprog','Algorithm','active-set');

这些选项存储在 ws.Options 中。

名称-值参数

全部折叠

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: ws = optimwarmstart(x0,options,'MaxLinearEqualities',30,'MaxLinearInequalities',5) 指定最多 30 个线性等式和 5 个线性不等式。

线性等式约束的最大数量,指定为正整数。为了为等式约束分配足够的内存,请指定整个代码运行期间等式约束的最大数量。

仅在没有动态内存分配的代码生成中使用此参量。您必须同时使用此参量和 'MaxLinearInequalities'

该参量的值存储在 ws.MaxLinearEqualities 中。

示例: 25

数据类型: single | double

线性不等式约束的最大数量,指定为正整数。为了为不等式约束分配足够的内存,请指定代码整个运行期间不等式约束的最大数量。

仅在没有动态内存分配的代码生成中使用此参量。您必须同时使用此参量和 'MaxLinearEqualities'

该参量的值存储在 ws.MaxLinearInequalities 中。

示例: 25

数据类型: single | double

输出参量

全部折叠

热启动对象,作为 LsqlinWarmStart 对象或 QuadprogWarmStart 对象返回。有关使用热启动对象的示例,请参阅 热启动 quadprog

ws 具有以下只读属性:

  • X - 初始点

  • Options - 优化选项

  • MaxLinearEqualities - 代码生成的最大线性等式数量

  • MaxLinearInequalities - 代码生成的最大线性不等式数量

要更改 ws 的任何属性,请通过调用 optimwarmstart 重新创建该对象。

算法

热启动对象维护先前已求解问题的活动约束列表。求解器将尽可能多地携带活动约束信息来求解当前问题。如果前一个问题与当前问题差异太大,则不会重用任何活动约束集信息。在这种情况下,求解器实际上执行冷启动,以重新构建活动约束列表。

扩展功能

全部展开

版本历史记录

在 R2021a 中推出

全部展开