主要内容

温暖的开始Quadprog

此示例显示了温暖的起始对象如何在一个大,密集的二次问题中提高溶液的速度。创建一个规模问题n变量和10n线性不平等约束。放n到1000。

RNG默认%可再现性n = 1000;RNG默认a = randn([[10*n,n]);b = 5*一个(大小(a,1),1);f = sqrt(n)*rand(n,1);h =(4 + n/10)*眼睛(n) + randn(n);h = h + h';aeq = [];beq = [];lb = -ones(n,1);ub = -lb;

创建一个温暖的起始对象Quadprog,从零开始。

opts = optimoptions('四元,,,,'算法',,,,“主动集”);x0 =零(n,1);ws = optimwarmstart(x0,opts);

解决问题,并计时结果。

TIC [WS1,FVAL1,EFLAG1,OUTPUT1,LAMBDA1] = QUADPROG(H,F,A,B,AEQ,BEQ,LB,UB,WS);
最低限度发现满足约束。之所以完成优化,是因为目标函数在可行的方向,最优性公差值之内不折叠,并且在约束公差的值之内满足了约束。<停止标准详细信息>
TOC
经过的时间为9.221035秒。

该解决方案具有几个主动线性不等式约束,没有主动界限。

NNZ(lambda1.ineqlin)
ANS = 211
nnz(lambda1.lower)
ans = 0
NNZ(lambda1.upper)
ans = 0

求解器需要数百个迭代才能收敛。

output1.Iterations
ANS = 216

更改一个随机目标以两倍的原始值。

idx = randi(n);f(idx)= 2*f(idx);

从先前的热门解决方案开始,通过新目标解决问题。

tic [WS2,fval2,eflag2,output2,lambda2] = quadprog(h,f,a,a,b,aeq,beq,beq,lb,ub,ws1);
最低限度发现满足约束。之所以完成优化,是因为目标函数在可行的方向,最优性公差值之内不折叠,并且在约束公差的值之内满足了约束。<停止标准详细信息>
TOC
经过的时间为1.490214秒。

求解器需要更少的时间来解决新问题。

新解决方案具有大约相同数量的活动约束。

NNZ(lambda2.ineqlin)
ANS = 214
nnz(lambda2.lower)
ans = 0
NNZ(lambda2.upper)
ans = 0

新解决方案接近先前的解决方案。

norm(WS2.X -WS1.X)
ANS = 0.0987
规范(WS2.x)
ANS = 2.4229

速度的差异很大程度上是由于求解器所做的迭代较少。

output2.Iterations
ANS = 29

也可以看看

|

相关话题