对圆的优化:
对圆的优化:
现在我们提供我们的第一个思想实验:考虑在由约束定义的可行区域上优化线性函数的问题
即可行区域本质上是一个单位圆.注意,对于所有目标函数,相应的最优点将由两个非常接近于并行的线性约束定义。这个问题的数值解会怎样?你能猜到吗?情况如下图所示:
为了执行这个实验,我们执行代码circleOpt.py,我们随机选择一个目标向量,找到得到的优化问题的最优解,并计算几个相关的量:
- 最糟糕的距离在原始解和理论解之间,在一个完美圆上进行优化,在之前的所有运行中。
- 这是古洛比在之前所有跑步中最严重的违规。
- gu罗比在所有之前的运行中报告的最严重的约束违反。
- 这是古洛比在之前所有跑步中最严重的双重违规。
- 之前实验的次数。
- 累计的单纯形迭代次数。
- 的(KappaExact属性)为当前最优基的值。
示例输出如下所示:
在19.19秒内增加了2个var和1048576约束:8.65535e-08 0 2.94137e-07 2.77556e-17 Iter 0 21 Kappa 3150.06错误:4.81978e-07 0 3.22359e-07 2.77556e-17 Iter 1 21 Kappa 3009.12错误:4.81978e-07 0 3.4936e-07 1.11022e-16 Iter 2 33 Kappa 2890.58错误:1.53201e-06 0 9.78818e-07 1.11022e-16 Iter 6 79 Kappa 1727.89错误:1.61065e-06 0 8.26005e-07 1.11022e-16 Iter 46 536 Kappa 1880.73错误:1.61065e-06 0 8.84782e-07 1.11022e-16 Iter 52 602 Kappa 1817.27错误:1.61065e-06 0 9.4557e-07 1.11022e-16 Iter 64 742 Kappa 1727.89错误:1.69167e-06 0 3.8268e-07 1.66533e-16 Iter 88 1022 Kappa 2761.99错误:1.69167e-06 0 9.04817e-07 1.66533e-16 Iter 92 1067 Kappa 1797.06错误:1.69167e-06 0 2.94137e-07 2.22045e-16 Iter 94 1089 Kappa 3150.06错误:1.69167e-06 0 3.29612e-07 2.22045e-16 Iter 95 1101 Kappa 2975.84错误:1.69167e-06 0 3.4936e-07 2.22045e-16 Iter 98 1137 Kappa 2890.58错误:1.69167e-06 0 9.25086e-07 2.22045e-16 Iter 107 1147 Kappa 1777.3错误:1.69167e-06 0 9.78818e-07 2.22045e-16 Iter 107 1237 Kappa 1727.89错误:1.69167e-06 0 9.99895e-07 2.22045e-16 Iter 112 1293 Kappa 1709.61错误:1.84851e-06 0 9.78818e-07 2.22045e-16 Iter 132 1523 Kappa 1727.89错误:1.96603e-06 0 9.99895e-07 2.22045e-16 Iter 134 1545 Kappa 1709.61
令人惊讶的是,报告的错误相当小。这是为什么呢?至少有两个贡献因素:模型有一个有界可行区域(在这种情况下,两个变量的范围为)。此外,从一个极值点(两个相邻约束的交点)到它的相邻点的距离也相对较小,因此-最优解彼此接近。
我们鼓励您尝试一下这段代码,修改一些输入数据,然后分析结果。你会看到理论和数值最优解之间的差异将与摄动的大小相当。