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)