您正在查看顶级算法流程图。流程图中的一些单独步骤可能需要自己的详细流程图。然而,在强调简洁的已发表论文中,许多细节往往被省略。可能根本不会提供标准内部优化问题的详细信息,这些问题被认为是“老帽子”。
一般的想法是优化算法可能需要解决一系列通常更容易的优化问题。在顶级算法中拥有 3 级甚至 4 级优化算法的情况并不少见,尽管其中一些是标准优化器内部的。
即使决定何时终止算法(在一个层次结构级别)也可能需要解决一个侧面优化问题。例如,可以解决非负约束线性最小二乘问题,以确定用于评估 KKT 最优性分数的拉格朗日乘数,该分数用于决定何时宣布最优性。
如果优化问题是随机的或动态的,则可能还有额外的优化层次级别。
这是一个例子。顺序二次规划 (SQP)。通过迭代求解 Karush-Kuhn-Tucker 最优性条件来处理初始优化问题,从初始点开始,目标是问题的拉格朗日的二次近似和约束的线性化。求解得到的二次规划 (QP)。求解的 QP 要么具有信任域约束,要么从当前迭代到 QP 的解进行线搜索,这本身就是一个优化问题,以便找到下一个迭代。如果使用拟牛顿法,则必须解决优化问题以确定拉格朗日的 Hessian 的拟牛顿更新 - 通常这是使用封闭形式公式(如 BFGS 或 SR1)的封闭形式优化,但它可能是一个数值优化。然后解决新的 QP,等等。如果 QP 是不可行的,包括启动,则解决优化问题以找到可行点。同时,在 QP 求解器内部可能会调用一级或二级内部优化问题。在每次迭代结束时,可能会解决非负线性最小二乘问题以确定最优分数。等等。
如果这是一个混合整数问题,那么整个 shebang 可能会在每个分支节点上执行,作为更高级别算法的一部分。类似地,对于全局优化器 - 使用局部优化问题来产生全局最优解的上限,然后放宽一些约束以产生下限优化问题。为了解决一个混合整数或全局优化问题,可能会解决来自分支定界的数千甚至数百万个“简单”优化问题。
这应该开始给你一个想法。
编辑:针对在我回答后添加到问题中的鸡和蛋问题:如果有鸡和蛋问题,那么它不是一个定义明确的实用算法。在我给出的例子中,没有鸡和蛋。更高级别的算法步骤调用优化求解器,这些求解器要么已定义,要么已经存在。SQP 迭代地调用 QP 求解器来求解子问题,但 QP 求解器求解比原始问题更简单的问题 QP。如果有更高级别的全局优化算法,它可能会调用 SQP 求解器来求解局部非线性优化子问题,而 SQP 求解器又会调用 QP 求解器来求解 QP 子问题。没有鸡肉和鸡蛋。
注意:优化机会“无处不在”。优化专家,例如那些开发优化算法的专家,比普通的 Joe 或 Jane 更有可能看到这些优化机会,并如此看待它们。由于倾向于算法,他们很自然地看到了从较低级别的优化算法中构建优化算法的机会。优化问题的制定和解决方案可作为其他(更高级别)优化算法的构建块。
编辑 2:响应 OP 刚刚添加的赏金请求。描述 SQP 非线性优化器 SNOPT https://web.stanford.edu/group/SOL/reports/snopt.pdf的论文特别提到了单独记录的 QP 求解器 SQOPT,用于解决 SNOPT 中的 QP 子问题。