主要内容

与绑定约束二次规划:具体问题具体分析

这个例子展示了如何制定和解决一个可伸缩的bound-constrained问题二次目标函数。这个例子显示了使用一些算法解决方案的行为。这个问题可以有任意数量的变量;变量的数量规模。solver-based版本的这个例子中,看到的二次与绑定约束最小化

目标函数,函数变量的数量问题n,是

2 = 1 n x 2 - - - - - - 2 = 1 n - - - - - - 1 x x + 1 - - - - - - 2 x 1 - - - - - - 2 x n

创建问题

创建一个问题变量命名x400组件。同时,创建一个表达式指定objec目标函数。绑定每个变量低于0和0.9以上,除了允许 x n 是无限的。

n = 400;x = optimvar (“x”n下界的0,“UpperBound”,0.9);x (n)。下界=无穷;x (n)。UpperBound =正;prevtime = 1: n - 1;nexttime = 2: n;objec = 2 *总和(x ^ 2) - 2 *总和(x (nexttime)。* x (prevtime)) - 2 * (1) - 2 * x(结束);

创建一个名为优化问题qprob。包括问题的目标函数。

qprob = optimproblem (“目标”,objec);

创建指定的选项quadprog“trust-region-reflective”算法和不显示。创建一个初始点大约集中之间的界限。

选择= optimoptions (“quadprog”,“算法”,“trust-region-reflective”,“显示”,“关闭”);x0 = 0.5 *的(n - 1);x00 =结构(“x”,x0);

解决问题并研究解决方案

解决这个问题。

[溶胶,qfval qexitflag qoutput] =解决(qprob x00,“选项”、选择);

策划解决方案。

情节(sol.x“b -”)包含(“指数”)ylabel (“x(指数))

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

报告出口标志,迭代次数,共轭梯度迭代的数量。

流('退出标志= % d,迭代= % d, cg迭代= % d \ n ',双(qexitflag) qoutput.iterations qoutput.cgiterations)
出口标志= 3,迭代= 19日cg迭代= 1607

有很多共轭梯度迭代。

调整选项,提高效率

减少共轭梯度迭代通过设置SubproblemAlgorithm选项“分解”。这个选项使解算器使用更贵的内部解决方案技术,消除了共轭梯度的步骤,为净总节省时间。

选择。SubproblemAlgorithm =“分解”;[sol2, qfval2 qexitflag2 qoutput2] =解决(qprob x00,“选项”、选择);流('退出标志= % d,迭代= % d, cg迭代= % d \ n ',双(qexitflag2) qoutput2.iterations qoutput2.cgiterations)
出口标志= 3,迭代= 10,cg迭代= 0

共轭梯度迭代的迭代次数和降低了。

比较解决方案和金宝搏官方网站“内点”解决方案

比较这些解决方案获得使用默认金宝搏官方网站“内点”算法。的“内点”算法不使用一个初始点,所以没有通过x00解决

选择= optimoptions (“quadprog”,“算法”,“interior-point-convex”,“显示”,“关闭”);[sol3, qfval3 qexitflag3 qoutput3] =解决(qprob,“选项”、选择);流('退出标志= % d,迭代= % d, cg迭代= % d \ n ',双(qexitflag3), qoutput3.iterations, 0)
出口标志= 1,迭代= 8,cg迭代= 0
中间=地板(n / 2);流(的三个解决方案略有不同金宝搏官方网站。\ nThe中间组件是% f, f %或% f。\ n”,sol.x(中间),sol2.x(中间),sol3.x(中间)
这三个方案都略有不同金宝搏官方网站。中间组件是0.895703、0.898676或0.857389。
流(相对规范的sol - sol2 % f。\ n”、规范(sol.x-sol2.x) /规范(sol.x))
相对规范的sol - sol2是0.002359。
流(相对规范的sol2——sol3 % f。\ n”、规范(sol2.x-sol3.x) /规范(sol2.x))
相对规范的sol2——sol3是0.035894。
流([的三个目标函数值% f, f %, % f。\ n””“内点”算法是不那么准确的。”,qfval qfval2 qfval3)
这三个目标函数值是-1.985000,-1.985000,和-1.984963。的内点算法是不那么准确的。

相关的话题