OpenCV 4.12.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{最大化 } c\cdot x\\ \mbox{受以下条件限制:}\\ Ax\leq b\\ x\geq 0\]

其中\(c\)是固定的1-by-n行向量,\(A\)是固定的m-by-n矩阵,\(b\)是固定的m-by-1列向量,\(x\)是任意n-by-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-by-n+1矩阵,其最右边的列对应于上述公式中的\(b\),其余列对应于\(A\)。它应包含 32 位或 64 位浮点数。
z解决方案将作为列向量在此处返回 - 它对应于上述公式中的\(c\)。它将包含 64 位浮点数。
constr_eps约束允许的数值差异
返回
cv::SolveLPResult 之一