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 之一