OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
优化算法

详细描述

本节中的算法在指定约束内或没有任何约束的情况下最小化或最大化函数值。

类  cv::ConjGradSolver
 此类用于执行已知梯度的函数的非线性无约束最小化。 更多…
 
类  cv::DownhillSolver
 此类用于执行函数的非线性无约束最小化。 更多…
 
类  cv::MinProblemSolver
 所有求解器的基本接口。 更多…
 

枚举

枚举  cv::SolveLPResult {
  cv::SOLVELP_LOST = -3 ,
  cv::SOLVELP_UNBOUNDED = -2 ,
  cv::SOLVELP_UNFEASIBLE = -1 ,
  cv::SOLVELP_SINGLE = 0 ,
  cv::SOLVELP_MULTI = 1
}
 cv::solveLP() 函数的返回值 更多…
 

函数

int cv::solveLP (InputArray Func, InputArray Constr, OutputArray z)
 
int cv::solveLP (InputArray Func, InputArray Constr, OutputArray z, double constr_eps)
 使用单纯形算法(单纯形方法)求解给定的(非整数)线性规划问题。
 

枚举类型文档

◆ SolveLPResult

#include <opencv2/core/optim.hpp>

cv::solveLP() 函数的返回值

枚举器
SOLVELP_LOST 
Python: cv.SOLVELP_LOST

问题是可行的,但由于浮点运算错误,求解器丢失了解。

SOLVELP_UNBOUNDED 
Python: cv.SOLVELP_UNBOUNDED

问题无界(目标函数可以达到任意高的值)。

SOLVELP_UNFEASIBLE 
Python: cv.SOLVELP_UNFEASIBLE

问题不可行(没有点满足所有施加的约束)。

SOLVELP_SINGLE 
Python: cv.SOLVELP_SINGLE

目标函数只有一个最大值。

SOLVELP_MULTI 
Python: cv.SOLVELP_MULTI

目标函数有多个最大值——返回其中一个任意值。

函数文档

◆ solveLP() [1/2]

int cv::solveLP ( InputArray Func,
InputArray Constr,
OutputArray z )
Python
cv.solveLP(Func, Constr, constr_eps[, z]) -> retval, z
cv.solveLP(Func, Constr[, z]) -> retval, z

#include <opencv2/core/optim.hpp>

这是一个重载成员函数,为了方便提供。它与上面的函数的区别仅在于它接受的参数。

◆ solveLP() [2/2]

int cv::solveLP ( InputArray Func,
InputArray Constr,
OutputArray z,
double constr_eps )
Python
cv.solveLP(Func, Constr, constr_eps[, z]) -> retval, z
cv.solveLP(Func, Constr[, z]) -> retval, z

#include <opencv2/core/optim.hpp>

使用单纯形算法(单纯形方法)求解给定的(非整数)线性规划问题。

我们这里所说的“线性规划问题”(简称LP问题)可以表述为

\[\mbox{Maximize } c\cdot x\\ \mbox{Subject to:}\\ Ax\leq b\\ x\geq 0\]

其中\(c\)是固定的1×n行向量,\(A\)是固定的m×n矩阵,\(b\)是固定的m×1列向量,\(x\)是任意的n×1列向量,它满足约束条件。

单纯形算法是许多旨在高效处理此类问题的算法之一。虽然它在理论上并非最优(存在可以在多项式时间内解决上述任何问题的算法,而单纯形方法在某些特殊情况下会退化为指数时间),但它经过充分研究,易于实现,并且已被证明在实际应用中效果良好。

具体的实现几乎逐字摘自T. H. Cormen、C. E. Leiserson、R. L. Rivest和Clifford Stein撰写的**《算法导论,第三版》**。特别是,使用Bland规则http://en.wikipedia.org/wiki/Bland%27s_rule来防止循环。

参数
Func此行向量对应于LP问题公式中的\(c\)(见上文)。它应该包含32位或64位浮点数。为方便起见,也可以提交列向量,在这种情况下,它被理解为对应于\(c^T\)。
Constrm×n+1矩阵,其最右列对应于上述公式中的\(b\),其余对应于\(A\)。它应该包含32位或64位浮点数。
z解将作为列向量在此返回——它对应于上述公式中的\(c\)。它将包含64位浮点数。
constr_eps允许的约束数值差异
返回值
cv::SolveLPResult 之一