CVXPy中的求解器似乎对初始条件敏感,不精确或不兼容

时间:2019-11-01 23:14:03

标签: precision solver cvxpy convex-optimization

我最近从CVXPy的研究中实施了一个凸程序,但我无法可靠地获得良好的答案。我的意思是当我使用时:

  1. ECOS有时会得到答案,而其他时候我会得到“检测到不可靠的搜索方向,恢复最佳迭代(18)并停止。 数值问题(到达feastol = 1.6e-07,reltol = -nan,abstol = 1.8e-04)。“当试图找出问题时,我在求解器之前对所有内容进行了硬编码,然后一直重复运行直到它起作用(即,运行代码->是答案->运行->错误->运行->错误->运行->是答案),所以我假设它与求解器使用的初始条件有关?不能始终如一地工作,但是当ECOS工作时,我得到了一个很好的图画完美答案。而且,当我运行较大的示例时,这种情况似乎更经常发生。
  2. SCS我总能得到一个答案,但是它不是非常精确(例如,程序中的一个约束说变量应该为非负数,但我得到-.00057)。坦白地说,这不是世界上最糟糕的事情,但是如果我能够提高准确性的话,那会让我跌倒很多(这种误差甚至发生在ECOS粉碎的小例子中)。
  3. CVXOPT只是给我“ cvxpy.error.SolverError:候选圆锥求解器(['CVXOPT'])不支持问题(SOC,ExpCone)输出的圆锥,或者问题中约束不足。 “

我对使用这些求解器是完全陌生的,因此任何建议或解释都将非常有帮助。我什至愿意让ECOS一遍又一遍地尝试直到出现问题为止。

谢谢!

0 个答案:

没有答案