在约束二次函数的原始对偶算法中是否存在更简单的早期终止条件

时间:2017-11-24 13:41:11

标签: mathematical-optimization linear-programming newtons-method convex-optimization

目前,我正在使用原始对偶方法来最小化具有简单线性约束的二次问题(具体地,x> = 0)。对于终止条件,我目前正在使用该标准:即错误“e”项必须小于阈值。

然而,计算“e”项是相对昂贵的,因为我需要评估完整的二次函数。是否可以使用更简单/更快的终止条件,例如以下条件之一:

1)如果x中所有变化的总和低于某个阈值,则终止;要么, 2)如果x的最大变化低于某个阈值,则终止?

直觉上,这对我来说是有意义的,但我发现我的直觉在这些最小化问题的一半时间是错误的,所以我不确定我的直觉在理论上是否合理......

1 个答案:

答案 0 :(得分:1)

练习1:

For the termination condition, I'm currently using the standard: ie error "e" term must be less than a threshold value.你不是在假设,这个目标可以推到0吗?你如何确定这个阈值a-priori?

关于理论:

  • 1) if the sum of all the changes in x is below a certain threshold, then terminate
    • 这是一个启发式(取一个外部绝对值可能是一个好主意),我想我在其他代码中看到了类似的内容)
    • 它没有理论上的保证;不充分,但必要条件
  • 2) if the max change in x is below a certain threshold, then terminate
    • 常用的启发式
    • 再次:没有理论上的保证;不充分,但必要条件
  • 您应该查看Karush–Kuhn–Tucker conditions(解决方案的一阶必要条件)

    • 您需要的KKT条件类型取决于您的问题:凸与非凸 - > Q psd与否(编辑根据你的标签看起来你的是凸的!)
    • Interesting read with special-treatment of your problem
    • 备注:您的问题是盒式约束QP ,实际上比不等式约束的QP 更简单! 这很重要!

      • 为什么重要?:因为预测的无约束优化方法也会起作用,无约束优化更容易实现。另外,在这种情况下很重要:与计算目标相比,您的投影看起来很便宜(投影在您的情况下是线性的)!
      • 查看pages 8- 11

现在这可能会影响一些重要的理论工作,然后是一些实施。考虑使用已有的工具!

练习2:

看看盒子约束的QP求解器(凸或非凸;取决于你的问题)。这些应该是可用的,将为您省去麻烦!

如果给它渐变(与数值微分相对),你甚至可以使用可能已经难以击败的几乎所有可用的LBFGS-B。虽然它更通用,但它通常非常强大! (在python中,使用scipy,使用这将是几行)

  

L-BFGS-B是用于约束约束优化的有限存储器准牛顿代码,即对于唯一约束形式为l< = x< = u。

的问题。

也可能有其他已有的替代品。 Trust Region Reflective和co。

(旁注:我想知道如你所描述的那样,与你的原始对偶(IPM?)算法中的其他操作相比,评估成本是多么昂贵)