optimwarmstart
说明
示例
为 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)

点击 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 的输出。您必须至少指定一个支持的求解器,lsqlin 或 quadprog,以及 '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 重新创建该对象。
算法
热启动对象维护先前已求解问题的活动约束列表。求解器将尽可能多地携带活动约束信息来求解当前问题。如果前一个问题与当前问题差异太大,则不会重用任何活动约束集信息。在这种情况下,求解器实际上执行冷启动,以重新构建活动约束列表。
扩展功能
用法说明和限制:
热启动
options必须指定'active-set'算法。options = optimoptions('lsqlin','Algorithm','active-set'); % Or options = optimoptions('quadprog','Algorithm','active-set');
如果您的目标硬件使用静态内存分配(
DynamicMemoryAllocation选项为'off'),则必须同时指定'MaxLinearEqualities'和'MaxLinearInequalities'参量。对于非 MEX 目标,如果求解器试图超出这些级别中的任何一个,求解器都会返回退出标志 –
8。对于 MEX 目标,如果求解器试图超出这两个级别中的任何一个,求解器就会抛出错误并指示增加相关级别。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)